add BN_mod_mul
This commit is contained in:
parent
8c15c65343
commit
d967129581
25
src/ssl.c
25
src/ssl.c
@ -18497,6 +18497,31 @@ int wolfSSL_BN_mod_exp(WOLFSSL_BIGNUM *r, const WOLFSSL_BIGNUM *a,
|
||||
return WOLFSSL_FAILURE;
|
||||
}
|
||||
|
||||
/* r = (a * p) % m */
|
||||
int wolfSSL_BN_mod_mul(WOLFSSL_BIGNUM *r, const WOLFSSL_BIGNUM *a,
|
||||
const WOLFSSL_BIGNUM *p, const WOLFSSL_BIGNUM *m, WOLFSSL_BN_CTX *ctx)
|
||||
{
|
||||
int ret;
|
||||
|
||||
WOLFSSL_ENTER("wolfSSL_BN_mod_mul");
|
||||
|
||||
(void) ctx;
|
||||
if (r == NULL || a == NULL || p == NULL || m == NULL) {
|
||||
WOLFSSL_MSG("Bad Argument");
|
||||
return SSL_FAILURE;
|
||||
}
|
||||
|
||||
if ((ret = mp_mulmod((mp_int*)a->internal,(mp_int*)p->internal,
|
||||
(mp_int*)m->internal, (mp_int*)r->internal)) == MP_OKAY) {
|
||||
return SSL_SUCCESS;
|
||||
}
|
||||
|
||||
WOLFSSL_LEAVE("wolfSSL_BN_mod_mul", ret);
|
||||
(void)ret;
|
||||
|
||||
return SSL_FAILURE;
|
||||
}
|
||||
|
||||
const WOLFSSL_BIGNUM* wolfSSL_BN_value_one(void)
|
||||
{
|
||||
static WOLFSSL_BIGNUM* bn_one = NULL;
|
||||
|
12
tests/api.c
12
tests/api.c
@ -10293,7 +10293,17 @@ static void test_wolfSSL_BN(void)
|
||||
/* check result 3^2 mod 5 */
|
||||
value[0] = 0;
|
||||
AssertIntEQ(BN_bn2bin(d, value), WOLFSSL_SUCCESS);
|
||||
AssertIntEQ((int)(value[0] & 0x04), 4);
|
||||
AssertIntEQ(BN_bn2bin(d, value), SSL_SUCCESS);
|
||||
AssertIntEQ((int)(value[0]), 4);
|
||||
|
||||
/* a*b mod c = */
|
||||
AssertIntEQ(BN_mod_mul(d, NULL, b, c, NULL), SSL_FAILURE);
|
||||
AssertIntEQ(BN_mod_mul(d, a, b, c, NULL), SSL_SUCCESS);
|
||||
|
||||
/* check result 3*2 mod 5 */
|
||||
value[0] = 0;
|
||||
AssertIntEQ(BN_bn2bin(d, value), SSL_SUCCESS);
|
||||
AssertIntEQ((int)(value[0]), 1);
|
||||
|
||||
/* BN_mod_inverse test */
|
||||
value[0] = 0;
|
||||
|
@ -37,6 +37,8 @@ WOLFSSL_API int wolfSSL_BN_mod(WOLFSSL_BIGNUM*, const WOLFSSL_BIGNUM*,
|
||||
const WOLFSSL_BIGNUM*, const WOLFSSL_BN_CTX*);
|
||||
WOLFSSL_API int wolfSSL_BN_mod_exp(WOLFSSL_BIGNUM *r, const WOLFSSL_BIGNUM *a,
|
||||
const WOLFSSL_BIGNUM *p, const WOLFSSL_BIGNUM *m, WOLFSSL_BN_CTX *ctx);
|
||||
WOLFSSL_API int wolfSSL_BN_mod_mul(WOLFSSL_BIGNUM *r, const WOLFSSL_BIGNUM *a,
|
||||
const WOLFSSL_BIGNUM *b, const WOLFSSL_BIGNUM *m, WOLFSSL_BN_CTX *ctx);
|
||||
WOLFSSL_API const WOLFSSL_BIGNUM* wolfSSL_BN_value_one(void);
|
||||
|
||||
|
||||
@ -112,6 +114,7 @@ typedef WOLFSSL_BN_GENCB BN_GENCB;
|
||||
|
||||
#define BN_mod wolfSSL_BN_mod
|
||||
#define BN_mod_exp wolfSSL_BN_mod_exp
|
||||
#define BN_mod_mul wolfSSL_BN_mod_mul
|
||||
#define BN_sub wolfSSL_BN_sub
|
||||
#define BN_value_one wolfSSL_BN_value_one
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user