diff options
Diffstat (limited to 'ext/openssl/ossl_pkey.h')
-rw-r--r-- | ext/openssl/ossl_pkey.h | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/ext/openssl/ossl_pkey.h b/ext/openssl/ossl_pkey.h index 7288d5af7f..e682de900f 100644 --- a/ext/openssl/ossl_pkey.h +++ b/ext/openssl/ossl_pkey.h @@ -100,7 +100,7 @@ VALUE ossl_ec_new(EVP_PKEY *); void Init_ossl_ec(void); -#define OSSL_PKEY_BN(keytype, name) \ +#define OSSL_PKEY_BN(keytype, type, name) \ /* \ * call-seq: \ * key.##name -> aBN \ @@ -111,7 +111,7 @@ static VALUE ossl_##keytype##_get_##name(VALUE self) \ BIGNUM *bn; \ \ GetPKey(self, pkey); \ - bn = pkey->pkey.keytype->name; \ + bn = EVP_PKEY_get0_##type(pkey)->name; \ if (bn == NULL) \ return Qnil; \ return ossl_bn_new(bn); \ @@ -124,20 +124,22 @@ static VALUE ossl_##keytype##_set_##name(VALUE self, VALUE bignum) \ { \ EVP_PKEY *pkey; \ BIGNUM *bn; \ + type *obj; \ \ GetPKey(self, pkey); \ + obj = EVP_PKEY_get0_##type(pkey); \ if (NIL_P(bignum)) { \ - BN_clear_free(pkey->pkey.keytype->name); \ - pkey->pkey.keytype->name = NULL; \ + BN_clear_free(obj->name); \ + obj->name = NULL; \ return Qnil; \ } \ \ bn = GetBNPtr(bignum); \ - if (pkey->pkey.keytype->name == NULL) \ - pkey->pkey.keytype->name = BN_new(); \ - if (pkey->pkey.keytype->name == NULL) \ + if (obj->name == NULL) \ + obj->name = BN_new(); \ + if (obj->name == NULL) \ ossl_raise(eBNError, NULL); \ - if (BN_copy(pkey->pkey.keytype->name, bn) == NULL) \ + if (BN_copy(obj->name, bn) == NULL) \ ossl_raise(eBNError, NULL); \ return bignum; \ } |