Generate primes, too.
This commit is contained in:
parent
770bc596e1
commit
2c2e46dbf5
48
apps/prime.c
48
apps/prime.c
@ -62,6 +62,9 @@ int MAIN(int argc, char **argv)
|
|||||||
{
|
{
|
||||||
int hex=0;
|
int hex=0;
|
||||||
int checks=20;
|
int checks=20;
|
||||||
|
int generate=0;
|
||||||
|
int bits=0;
|
||||||
|
int safe=0;
|
||||||
BIGNUM *bn=NULL;
|
BIGNUM *bn=NULL;
|
||||||
BIO *bio_out;
|
BIO *bio_out;
|
||||||
|
|
||||||
@ -77,6 +80,15 @@ int MAIN(int argc, char **argv)
|
|||||||
{
|
{
|
||||||
if(!strcmp(*argv,"-hex"))
|
if(!strcmp(*argv,"-hex"))
|
||||||
hex=1;
|
hex=1;
|
||||||
|
else if(!strcmp(*argv,"-generate"))
|
||||||
|
generate=1;
|
||||||
|
else if(!strcmp(*argv,"-bits"))
|
||||||
|
if(--argc < 1)
|
||||||
|
goto bad;
|
||||||
|
else
|
||||||
|
bits=atoi(*++argv);
|
||||||
|
else if(!strcmp(*argv,"-safe"))
|
||||||
|
safe=1;
|
||||||
else if(!strcmp(*argv,"-checks"))
|
else if(!strcmp(*argv,"-checks"))
|
||||||
if(--argc < 1)
|
if(--argc < 1)
|
||||||
goto bad;
|
goto bad;
|
||||||
@ -91,13 +103,13 @@ int MAIN(int argc, char **argv)
|
|||||||
++argv;
|
++argv;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argv[0] == NULL)
|
if (argv[0] == NULL && !generate)
|
||||||
{
|
{
|
||||||
BIO_printf(bio_err,"No prime specified\n");
|
BIO_printf(bio_err,"No prime specified\n");
|
||||||
goto bad;
|
goto bad;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((bio_out=BIO_new(BIO_s_file())) != NULL)
|
if ((bio_out=BIO_new(BIO_s_file())) != NULL)
|
||||||
{
|
{
|
||||||
BIO_set_fp(bio_out,stdout,BIO_NOCLOSE);
|
BIO_set_fp(bio_out,stdout,BIO_NOCLOSE);
|
||||||
#ifdef OPENSSL_SYS_VMS
|
#ifdef OPENSSL_SYS_VMS
|
||||||
@ -108,14 +120,32 @@ int MAIN(int argc, char **argv)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if(hex)
|
if(generate)
|
||||||
BN_hex2bn(&bn,argv[0]);
|
{
|
||||||
else
|
char *s;
|
||||||
BN_dec2bn(&bn,argv[0]);
|
|
||||||
|
|
||||||
BN_print(bio_out,bn);
|
if(!bits)
|
||||||
BIO_printf(bio_out," is %sprime\n",
|
{
|
||||||
BN_is_prime_ex(bn,checks,NULL,NULL) ? "" : "not ");
|
BIO_printf(bio_err,"Specifiy the number of bits.\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
bn=BN_new();
|
||||||
|
BN_generate_prime_ex(bn,bits,safe,NULL,NULL,NULL);
|
||||||
|
s=hex ? BN_bn2hex(bn) : BN_bn2dec(bn);
|
||||||
|
BIO_printf(bio_out,"%s\n",s);
|
||||||
|
OPENSSL_free(s);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(hex)
|
||||||
|
BN_hex2bn(&bn,argv[0]);
|
||||||
|
else
|
||||||
|
BN_dec2bn(&bn,argv[0]);
|
||||||
|
|
||||||
|
BN_print(bio_out,bn);
|
||||||
|
BIO_printf(bio_out," is %sprime\n",
|
||||||
|
BN_is_prime_ex(bn,checks,NULL,NULL) ? "" : "not ");
|
||||||
|
}
|
||||||
|
|
||||||
BN_free(bn);
|
BN_free(bn);
|
||||||
BIO_free_all(bio_out);
|
BIO_free_all(bio_out);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user