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)); \
93 #define OSSL_PKEY_BN(keytype, name) \
98 static VALUE ossl_##keytype##_get_##name(VALUE self) \
103 GetPKey(self, pkey); \
104 bn = pkey->pkey.keytype->name; \
107 return ossl_bn_new(bn); \
113 static VALUE ossl_##keytype##_set_##name(VALUE self, VALUE bignum) \
118 GetPKey(self, pkey); \
119 if (NIL_P(bignum)) { \
120 BN_clear_free(pkey->pkey.keytype->name); \
121 pkey->pkey.keytype->name = NULL; \
125 bn = GetBNPtr(bignum); \
126 if (pkey->pkey.keytype->name == NULL) \
127 pkey->pkey.keytype->name = BN_new(); \
128 if (pkey->pkey.keytype->name == NULL) \
129 ossl_raise(eBNError, NULL); \
130 if (BN_copy(pkey->pkey.keytype->name, bn) == NULL) \
131 ossl_raise(eBNError, NULL); \
135 #define DEF_OSSL_PKEY_BN(class, keytype, name) \
137 rb_define_method((class), #name, ossl_##keytype##_get_##name, 0); \
138 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 *)