New function BN_nist_mod_func which returns an appropriate function

if the passed prime is a NIST prime.
This commit is contained in:
Dr. Stephen Henson 2011-02-14 16:44:29 +00:00
parent e990b4f838
commit 133291f8e7
2 changed files with 17 additions and 0 deletions

View File

@ -674,6 +674,8 @@ const BIGNUM *BN_get0_nist_prime_256(void);
const BIGNUM *BN_get0_nist_prime_384(void);
const BIGNUM *BN_get0_nist_prime_521(void);
int (*BN_nist_mod_func(const BIGNUM *p))(BIGNUM *r, const BIGNUM *a, const BIGNUM *field, BN_CTX *ctx);
/* library internal functions */
#define bn_expand(a,bits) ((((((bits+BN_BITS2-1))/BN_BITS2)) <= (a)->dmax)?\

View File

@ -834,3 +834,18 @@ int BN_nist_mod_521(BIGNUM *r, const BIGNUM *a, const BIGNUM *field,
return 1;
}
int (*BN_nist_mod_func(const BIGNUM *p))(BIGNUM *r, const BIGNUM *a, const BIGNUM *field, BN_CTX *ctx)
{
if (BN_ucmp(&_bignum_nist_p_192, p) == 0)
return BN_nist_mod_192;
if (BN_ucmp(&_bignum_nist_p_224, p) == 0)
return BN_nist_mod_224;
if (BN_ucmp(&_bignum_nist_p_256, p) == 0)
return BN_nist_mod_256;
if (BN_ucmp(&_bignum_nist_p_384, p) == 0)
return BN_nist_mod_384;
if (BN_ucmp(&_bignum_nist_p_521, p) == 0)
return BN_nist_mod_521;
return 0;
}