remove restriction on max key size with wolfSSL_DH_generate_key

pull/1954/head
Jacob Barthelmeh 2018-12-04 16:20:31 -07:00
parent 6254062438
commit d90e66da80
1 changed files with 13 additions and 13 deletions

View File

@ -23488,31 +23488,25 @@ WOLFSSL_BIGNUM* wolfSSL_DH_1536_prime(WOLFSSL_BIGNUM* bn)
int wolfSSL_DH_generate_key(WOLFSSL_DH* dh) int wolfSSL_DH_generate_key(WOLFSSL_DH* dh)
{ {
int ret = WOLFSSL_FAILURE; int ret = WOLFSSL_FAILURE;
word32 pubSz = 768; word32 pubSz = 0;
word32 privSz = 768; word32 privSz = 0;
int initTmpRng = 0; int initTmpRng = 0;
WC_RNG* rng = NULL; WC_RNG* rng = NULL;
#ifdef WOLFSSL_SMALL_STACK #ifdef WOLFSSL_SMALL_STACK
unsigned char* pub = NULL;
unsigned char* priv = NULL;
WC_RNG* tmpRNG = NULL; WC_RNG* tmpRNG = NULL;
#else #else
unsigned char pub [768];
unsigned char priv[768];
WC_RNG tmpRNG[1]; WC_RNG tmpRNG[1];
#endif #endif
unsigned char* pub = NULL;
unsigned char* priv = NULL;
WOLFSSL_MSG("wolfSSL_DH_generate_key"); WOLFSSL_MSG("wolfSSL_DH_generate_key");
#ifdef WOLFSSL_SMALL_STACK #ifdef WOLFSSL_SMALL_STACK
tmpRNG = (WC_RNG*)XMALLOC(sizeof(WC_RNG), NULL, DYNAMIC_TYPE_RNG); tmpRNG = (WC_RNG*)XMALLOC(sizeof(WC_RNG), NULL, DYNAMIC_TYPE_RNG);
pub = (unsigned char*)XMALLOC(pubSz, NULL, DYNAMIC_TYPE_PUBLIC_KEY);
priv = (unsigned char*)XMALLOC(privSz, NULL, DYNAMIC_TYPE_PRIVATE_KEY);
if (tmpRNG == NULL || pub == NULL || priv == NULL) { if (tmpRNG == NULL || pub == NULL || priv == NULL) {
XFREE(tmpRNG, NULL, DYNAMIC_TYPE_RNG); XFREE(tmpRNG, NULL, DYNAMIC_TYPE_RNG);
XFREE(pub, NULL, DYNAMIC_TYPE_PUBLIC_KEY);
XFREE(priv, NULL, DYNAMIC_TYPE_PRIVATE_KEY);
return ret; return ret;
} }
#endif #endif
@ -23534,7 +23528,13 @@ int wolfSSL_DH_generate_key(WOLFSSL_DH* dh)
} }
if (rng) { if (rng) {
if (wc_DhGenerateKeyPair((DhKey*)dh->internal, rng, priv, &privSz, pubSz = privSz = wolfSSL_BN_num_bytes(dh->p);
pub = (unsigned char*)XMALLOC(pubSz, NULL, DYNAMIC_TYPE_PUBLIC_KEY);
priv = (unsigned char*)XMALLOC(privSz, NULL, DYNAMIC_TYPE_PRIVATE_KEY);
if (pub == NULL || priv == NULL) {
WOLFSSL_MSG("Unable to malloc memory");
}
else if (wc_DhGenerateKeyPair((DhKey*)dh->internal, rng, priv, &privSz,
pub, &pubSz) < 0) pub, &pubSz) < 0)
WOLFSSL_MSG("Bad wc_DhGenerateKeyPair"); WOLFSSL_MSG("Bad wc_DhGenerateKeyPair");
else { else {
@ -23570,9 +23570,9 @@ int wolfSSL_DH_generate_key(WOLFSSL_DH* dh)
#ifdef WOLFSSL_SMALL_STACK #ifdef WOLFSSL_SMALL_STACK
XFREE(tmpRNG, NULL, DYNAMIC_TYPE_RNG); XFREE(tmpRNG, NULL, DYNAMIC_TYPE_RNG);
#endif
XFREE(pub, NULL, DYNAMIC_TYPE_PUBLIC_KEY); XFREE(pub, NULL, DYNAMIC_TYPE_PUBLIC_KEY);
XFREE(priv, NULL, DYNAMIC_TYPE_PRIVATE_KEY); XFREE(priv, NULL, DYNAMIC_TYPE_PRIVATE_KEY);
#endif
return ret; return ret;
} }