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);\
EVP_PKEY * GetPrivPKeyPtr(VALUE obj)
VALUE ossl_dsa_new(EVP_PKEY *)
EVP_PKEY * DupPrivPKeyPtr(VALUE obj)
VALUE ossl_rsa_new(EVP_PKEY *)
VALUE ossl_pkey_new(EVP_PKEY *pkey)
void ossl_generate_cb(int p, int n, void *arg)
VALUE ossl_dh_new(EVP_PKEY *)
VALUE ossl_pkey_new_from_file(VALUE filename)
EVP_PKEY * GetPKeyPtr(VALUE obj)
EVP_PKEY * DupPKeyPtr(VALUE obj)
DH * OSSL_DEFAULT_DH_1024
VALUE ossl_ec_new(EVP_PKEY *)