diff options
Diffstat (limited to 'ossl_pkey_dsa.c')
-rw-r--r-- | ossl_pkey_dsa.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/ossl_pkey_dsa.c b/ossl_pkey_dsa.c index deb672e..bfb35cc 100644 --- a/ossl_pkey_dsa.c +++ b/ossl_pkey_dsa.c @@ -154,6 +154,7 @@ static VALUE ossl_dsa_initialize(int argc, VALUE *argv, VALUE self) unsigned long h = 0; BIO *in = NULL; char *passwd = NULL; + void (*cb)() = NULL; VALUE buffer, pass; GetDSA_unsafe(self, dsap); @@ -169,7 +170,9 @@ static VALUE ossl_dsa_initialize(int argc, VALUE *argv, VALUE self) if (!RAND_bytes(seed, seed_len)) { rb_raise(eDSAError, "%s", ossl_error()); } - if (!(dsa = DSA_generate_parameters(FIX2INT(buffer), seed, seed_len, &counter, &h, ossl_dsa_generate_cb, NULL))) { /* arg to cb = NULL */ + if (rb_block_given_p()) + cb = ossl_dsa_generate_cb; + if (!(dsa = DSA_generate_parameters(FIX2INT(buffer), seed, seed_len, &counter, &h, cb, NULL))) { /* arg to cb = NULL */ rb_raise(eDSAError, "%s", ossl_error()); } if (!DSA_generate_key(dsa)) { |