aboutsummaryrefslogtreecommitdiff
path: root/crypto/rsa/rsa_depr.c
diff options
context:
space:
mode:
authorMatt Caswell <matt@openssl.org>2014-10-28 23:00:29 +0000
committerMatt Caswell <matt@openssl.org>2014-12-08 21:40:57 +0000
commit18125f7f554034d95c64851bee23fb058a23bfd9 (patch)
tree2079d890f829b34910893d9c96a1f96670a5a3fe /crypto/rsa/rsa_depr.c
parent68c29f61a404db3d620278878d77ca90ad853b8d (diff)
downloadopenssl-18125f7f554034d95c64851bee23fb058a23bfd9.zip
openssl-18125f7f554034d95c64851bee23fb058a23bfd9.tar.gz
openssl-18125f7f554034d95c64851bee23fb058a23bfd9.tar.bz2
Implement internally opaque bn access from rsa
Reviewed-by: Tim Hudson <tjh@openssl.org>
Diffstat (limited to 'crypto/rsa/rsa_depr.c')
-rw-r--r--crypto/rsa/rsa_depr.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/crypto/rsa/rsa_depr.c b/crypto/rsa/rsa_depr.c
index a859ded..cd57086 100644
--- a/crypto/rsa/rsa_depr.c
+++ b/crypto/rsa/rsa_depr.c
@@ -71,12 +71,12 @@ static void *dummy=&dummy;
RSA *RSA_generate_key(int bits, unsigned long e_value,
void (*callback)(int,int,void *), void *cb_arg)
{
- BN_GENCB cb;
int i;
+ BN_GENCB *cb = BN_GENCB_new();
RSA *rsa = RSA_new();
BIGNUM *e = BN_new();
- if(!rsa || !e) goto err;
+ if(!cb || !rsa || !e) goto err;
/* The problem is when building with 8, 16, or 32 BN_ULONG,
* unsigned long can be larger */
@@ -87,15 +87,17 @@ RSA *RSA_generate_key(int bits, unsigned long e_value,
goto err;
}
- BN_GENCB_set_old(&cb, callback, cb_arg);
+ BN_GENCB_set_old(cb, callback, cb_arg);
- if(RSA_generate_key_ex(rsa, bits, e, &cb)) {
+ if(RSA_generate_key_ex(rsa, bits, e, cb)) {
BN_free(e);
+ BN_GENCB_free(cb);
return rsa;
}
err:
if(e) BN_free(e);
if(rsa) RSA_free(rsa);
+ if(cb) BN_GENCB_free(cb);
return 0;
}
#endif