aboutsummaryrefslogtreecommitdiffstats
path: root/ossl_pkey_rsa.c
diff options
context:
space:
mode:
Diffstat (limited to 'ossl_pkey_rsa.c')
-rw-r--r--ossl_pkey_rsa.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/ossl_pkey_rsa.c b/ossl_pkey_rsa.c
index 9184c71..c8d9937 100644
--- a/ossl_pkey_rsa.c
+++ b/ossl_pkey_rsa.c
@@ -152,6 +152,7 @@ static VALUE ossl_rsa_initialize(int argc, VALUE *argv, VALUE self)
int type = 0;
BIO *in = NULL;
char *passwd = NULL;
+ void (*cb)() = NULL;
VALUE buffer, pass;
GetRSA_unsafe(self, rsap);
@@ -164,7 +165,9 @@ static VALUE ossl_rsa_initialize(int argc, VALUE *argv, VALUE self)
}
} else switch (TYPE(buffer)) {
case T_FIXNUM:
- if (!(rsa = RSA_generate_key(FIX2INT(buffer), RSA_F4, ossl_rsa_generate_cb, NULL))) { /* arg to cb = NULL */
+ if (rb_block_given_p())
+ cb = ossl_rsa_generate_cb;
+ if (!(rsa = RSA_generate_key(FIX2INT(buffer), RSA_F4, cb, NULL))) { /* arg to cb = NULL */
rb_raise(eRSAError, "%s", ossl_error());
}
break;