From: Jouni Malinen Date: Sun, 6 Jan 2013 16:56:46 +0000 (+0200) Subject: SAE: Clean up exponent calculation for PWE X-Git-Tag: aosp-kk-from-upstream~642 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f05dad2090c2ad4f9c6bbe813317d0a228bbea72;p=thirdparty%2Fhostap.git SAE: Clean up exponent calculation for PWE Signed-hostap: Jouni Malinen --- diff --git a/src/common/sae.c b/src/common/sae.c index 911c95740..6aed89c42 100644 --- a/src/common/sae.c +++ b/src/common/sae.c @@ -229,25 +229,23 @@ static int sae_test_pwd_seed_ffc(struct sae_data *sae, const u8 *pwd_seed, */ exp[0] = 2; b = crypto_bignum_init_set(exp, sizeof(exp)); - if (a == NULL || b == NULL) - res = -1; - else - res = crypto_bignum_exptmod(a, b, sae->prime, pwe); } else { - struct crypto_bignum *tmp; - + /* Calculate exponent: (p-1)/r */ exp[0] = 1; b = crypto_bignum_init_set(exp, sizeof(exp)); - tmp = crypto_bignum_init(); - if (a == NULL || b == NULL || tmp == NULL || - crypto_bignum_sub(sae->prime, b, tmp) < 0 || - crypto_bignum_div(tmp, sae->order, b) < 0) - res = -1; - else - res = crypto_bignum_exptmod(a, b, sae->prime, pwe); - crypto_bignum_deinit(tmp, 0); + if (b == NULL || + crypto_bignum_sub(sae->prime, b, b) < 0 || + crypto_bignum_div(b, sae->order, b) < 0) { + crypto_bignum_deinit(b, 0); + b = NULL; + } } + if (a == NULL || b == NULL) + res = -1; + else + res = crypto_bignum_exptmod(a, b, sae->prime, pwe); + crypto_bignum_deinit(a, 0); crypto_bignum_deinit(b, 0);