11 #if !defined(_OSSL_PKEY_H_) 19 #define OSSL_PKEY_SET_PRIVATE(obj) rb_iv_set((obj), "private", Qtrue) 20 #define OSSL_PKEY_SET_PUBLIC(obj) rb_iv_set((obj), "private", Qfalse) 21 #define OSSL_PKEY_IS_PRIVATE(obj) (rb_iv_get((obj), "private") == Qtrue) 23 #define WrapPKey(klass, obj, pkey) do { \ 25 rb_raise(rb_eRuntimeError, "PKEY wasn't initialized!"); \ 27 (obj) = Data_Wrap_Struct((klass), 0, EVP_PKEY_free, (pkey)); \ 28 OSSL_PKEY_SET_PUBLIC(obj); \ 30 #define GetPKey(obj, pkey) do {\ 31 Data_Get_Struct((obj), EVP_PKEY, (pkey));\ 33 rb_raise(rb_eRuntimeError, "PKEY wasn't initialized!");\ 36 #define SafeGetPKey(obj, pkey) do { \ 37 OSSL_Check_Kind((obj), cPKey); \ 38 GetPKey((obj), (pkey)); \ 42 #define HAVE_BN_GENCB defined(HAVE_RSA_GENERATE_KEY_EX) || defined(HAVE_DH_GENERATE_PARAMETERS_EX) || defined(HAVE_DSA_GENERATE_PARAMETERS_EX) 44 struct ossl_generate_cb_arg {
49 int ossl_generate_cb_2(
int p,
int n, BN_GENCB *cb);
50 void ossl_generate_cb_stop(
void *ptr);
103 #define OSSL_PKEY_BN(keytype, name) \ 108 static VALUE ossl_##keytype##_get_##name(VALUE self) \ 113 GetPKey(self, pkey); \ 114 bn = pkey->pkey.keytype->name; \ 117 return ossl_bn_new(bn); \ 123 static VALUE ossl_##keytype##_set_##name(VALUE self, VALUE bignum) \ 128 GetPKey(self, pkey); \ 129 if (NIL_P(bignum)) { \ 130 BN_clear_free(pkey->pkey.keytype->name); \ 131 pkey->pkey.keytype->name = NULL; \ 135 bn = GetBNPtr(bignum); \ 136 if (pkey->pkey.keytype->name == NULL) \ 137 pkey->pkey.keytype->name = BN_new(); \ 138 if (pkey->pkey.keytype->name == NULL) \ 139 ossl_raise(eBNError, NULL); \ 140 if (BN_copy(pkey->pkey.keytype->name, bn) == NULL) \ 141 ossl_raise(eBNError, NULL); \ 145 #define DEF_OSSL_PKEY_BN(class, keytype, name) \ 147 rb_define_method((class), #name, ossl_##keytype##_get_##name, 0); \ 148 rb_define_method((class), #name "=", ossl_##keytype##_set_##name, 1);\
void Init_ossl_pkey(void)
VALUE ossl_dsa_new(EVP_PKEY *)
VALUE ossl_rsa_new(EVP_PKEY *)
VALUE ossl_pkey_new_from_file(VALUE)
VALUE ossl_dh_new(EVP_PKEY *)
EVP_PKEY * DupPrivPKeyPtr(VALUE)
EVP_PKEY * GetPKeyPtr(VALUE)
EVP_PKEY * GetPrivPKeyPtr(VALUE)
void ossl_generate_cb(int, int, void *)
EVP_PKEY * DupPKeyPtr(VALUE)
DH * OSSL_DEFAULT_DH_1024
VALUE ossl_ec_new(EVP_PKEY *)
VALUE ossl_pkey_new(EVP_PKEY *)