11 #if !defined(OPENSSL_NO_RSA)
15 #define GetPKeyRSA(obj, pkey) do { \
16 GetPKey((obj), (pkey)); \
17 if (EVP_PKEY_type((pkey)->type) != EVP_PKEY_RSA) { \
18 ossl_raise(rb_eRuntimeError, "THIS IS NOT A RSA!") ; \
22 #define RSA_HAS_PRIVATE(rsa) ((rsa)->p && (rsa)->q)
23 #define RSA_PRIVATE(obj,rsa) (RSA_HAS_PRIVATE(rsa)||OSSL_PKEY_IS_PRIVATE(obj))
43 if (!(pkey = EVP_PKEY_new())) {
46 if (!EVP_PKEY_assign_RSA(pkey, rsa)) {
64 if (EVP_PKEY_type(pkey->type) != EVP_PKEY_RSA) {
82 return RSA_generate_key(size, exp,
165 rsa = d2i_RSAPrivateKey_bio(in,
NULL);
169 rsa = d2i_RSA_PUBKEY_bio(in,
NULL);
177 rsa = d2i_RSAPublicKey_bio(in,
NULL);
184 if (!EVP_PKEY_assign_RSA(pkey, rsa)) {
241 const EVP_CIPHER *ciph =
NULL;
243 VALUE cipher, pass, str;
249 if (!
NIL_P(cipher)) {
255 if (!(out = BIO_new(BIO_s_mem()))) {
259 if (!PEM_write_bio_RSAPrivateKey(out, pkey->pkey.rsa, ciph,
265 if (!PEM_write_bio_RSA_PUBKEY(out, pkey->pkey.rsa)) {
285 int (*i2d_func)
_((
const RSA*,
unsigned char**));
292 i2d_func = i2d_RSAPrivateKey;
294 i2d_func = (int (*)(
const RSA*,
unsigned char**))i2d_RSA_PUBKEY;
295 if((len = i2d_func(pkey->pkey.rsa,
NULL)) <= 0)
299 if(i2d_func(pkey->pkey.rsa, &p) < 0)
306 #define ossl_rsa_buf_size(pkey) (RSA_size((pkey)->pkey.rsa)+16)
321 VALUE str, buffer, padding;
325 pad = (argc == 1) ? RSA_PKCS1_PADDING :
NUM2INT(padding);
350 VALUE str, buffer, padding;
354 pad = (argc == 1) ? RSA_PKCS1_PADDING :
NUM2INT(padding);
379 VALUE str, buffer, padding;
386 pad = (argc == 1) ? RSA_PKCS1_PADDING :
NUM2INT(padding);
411 VALUE str, buffer, padding;
418 pad = (argc == 1) ? RSA_PKCS1_PADDING :
NUM2INT(padding);
481 if (!(out = BIO_new(BIO_s_mem()))) {
484 if (!RSA_print(out, pkey->pkey.rsa, 0)) {
508 rsa = RSAPublicKey_dup(pkey->pkey.rsa);
557 #define DefRSAConst(x) rb_define_const(cRSA, #x,INT2FIX(RSA_##x))