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 *)