[ruby/openssl] define BIGNUM_2cr macro for BN function that takes context and

returns a BN

https://github.com/ruby/openssl/commit/4d0971c51c
This commit is contained in:
Ben Toews 2022-10-17 07:30:30 -06:00 committed by Kazuki Yamaguchi
parent f6bf5e2c5f
commit e037731c9f
1 changed files with 15 additions and 12 deletions

View File

@ -577,22 +577,25 @@ BIGNUM_2c(gcd)
*/
BIGNUM_2c(mod_sqr)
#define BIGNUM_2cr(func) \
static VALUE \
ossl_bn_##func(VALUE self, VALUE other) \
{ \
BIGNUM *bn1, *bn2 = GetBNPtr(other), *result; \
VALUE obj; \
GetBN(self, bn1); \
obj = NewBN(rb_obj_class(self)); \
if (!(result = BN_##func(NULL, bn1, bn2, ossl_bn_ctx))) \
ossl_raise(eBNError, NULL); \
SetBN(obj, result); \
return obj; \
}
/*
* call-seq:
* bn.mod_inverse(bn2) => aBN
*/
static VALUE
ossl_bn_mod_inverse(VALUE self, VALUE other)
{
BIGNUM *bn1, *bn2 = GetBNPtr(other), *result;
VALUE obj;
GetBN(self, bn1);
obj = NewBN(rb_obj_class(self));
if (!(result = BN_mod_inverse(NULL, bn1, bn2, ossl_bn_ctx)))
ossl_raise(eBNError, "BN_mod_inverse");
SetBN(obj, result);
return obj;
}
BIGNUM_2cr(mod_inverse)
/*
* call-seq: