Add a test to check we're really generating probable primes.
This commit is contained in:
parent
9a3a99748b
commit
8927c2786d
@ -458,12 +458,12 @@ loop:
|
|||||||
goto loop;
|
goto loop;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ret=1;
|
ret = 1;
|
||||||
|
|
||||||
err:
|
err:
|
||||||
BN_CTX_end(ctx);
|
BN_CTX_end(ctx);
|
||||||
bn_check_top(rnd);
|
bn_check_top(rnd);
|
||||||
return(ret);
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int witness(BIGNUM *w, const BIGNUM *a, const BIGNUM *a1,
|
static int witness(BIGNUM *w, const BIGNUM *a, const BIGNUM *a1,
|
||||||
|
@ -87,6 +87,8 @@
|
|||||||
#include <openssl/x509.h>
|
#include <openssl/x509.h>
|
||||||
#include <openssl/err.h>
|
#include <openssl/err.h>
|
||||||
|
|
||||||
|
#include "../crypto/bn/bn_lcl.h"
|
||||||
|
|
||||||
const int num0 = 100; /* number of tests */
|
const int num0 = 100; /* number of tests */
|
||||||
const int num1 = 50; /* additional tests for some functions */
|
const int num1 = 50; /* additional tests for some functions */
|
||||||
const int num2 = 5; /* number of tests for slow functions */
|
const int num2 = 5; /* number of tests for slow functions */
|
||||||
@ -121,6 +123,7 @@ int test_gf2m_mod_solve_quad(BIO *bp,BN_CTX *ctx);
|
|||||||
int test_kron(BIO *bp,BN_CTX *ctx);
|
int test_kron(BIO *bp,BN_CTX *ctx);
|
||||||
int test_sqrt(BIO *bp,BN_CTX *ctx);
|
int test_sqrt(BIO *bp,BN_CTX *ctx);
|
||||||
int test_small_prime(BIO *bp,BN_CTX *ctx);
|
int test_small_prime(BIO *bp,BN_CTX *ctx);
|
||||||
|
int test_probable_prime_coprime(BIO *bp,BN_CTX *ctx);
|
||||||
int rand_neg(void);
|
int rand_neg(void);
|
||||||
static int results=0;
|
static int results=0;
|
||||||
|
|
||||||
@ -270,6 +273,10 @@ int main(int argc, char *argv[])
|
|||||||
if (!test_small_prime(out,ctx)) goto err;
|
if (!test_small_prime(out,ctx)) goto err;
|
||||||
(void)BIO_flush(out);
|
(void)BIO_flush(out);
|
||||||
|
|
||||||
|
message(out,"Probable prime generation with coprimes");
|
||||||
|
if (!test_probable_prime_coprime(out,ctx)) goto err;
|
||||||
|
(void)BIO_flush(out);
|
||||||
|
|
||||||
#ifndef OPENSSL_NO_EC2M
|
#ifndef OPENSSL_NO_EC2M
|
||||||
message(out,"BN_GF2m_add");
|
message(out,"BN_GF2m_add");
|
||||||
if (!test_gf2m_add(out)) goto err;
|
if (!test_gf2m_add(out)) goto err;
|
||||||
@ -1923,6 +1930,37 @@ err:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int test_probable_prime_coprime(BIO *bp, BN_CTX *ctx)
|
||||||
|
{
|
||||||
|
int i, j, ret = 0;
|
||||||
|
BIGNUM r;
|
||||||
|
BN_ULONG primes[5] = { 2, 3, 5, 7, 11 };
|
||||||
|
|
||||||
|
BN_init(&r);
|
||||||
|
|
||||||
|
for (i = 0; i < 1000; i++)
|
||||||
|
{
|
||||||
|
if (!bn_probable_prime_dh_coprime(&r, 1024, ctx)) goto err;
|
||||||
|
|
||||||
|
for (j = 0; j < 5; j++)
|
||||||
|
{
|
||||||
|
if (BN_mod_word(&r, primes[j]) == 0)
|
||||||
|
{
|
||||||
|
BIO_printf(bp, "Number generated is not coprime to %ld:\n", primes[j]);
|
||||||
|
BN_print_fp(stdout, &r);
|
||||||
|
BIO_printf(bp, "\n");
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = 1;
|
||||||
|
|
||||||
|
err:
|
||||||
|
BN_clear(&r);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
int test_lshift(BIO *bp,BN_CTX *ctx,BIGNUM *a_)
|
int test_lshift(BIO *bp,BN_CTX *ctx,BIGNUM *a_)
|
||||||
{
|
{
|
||||||
BIGNUM *a,*b,*c,*d;
|
BIGNUM *a,*b,*c,*d;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user