Commit 2c2e46db authored by Ben Laurie's avatar Ben Laurie
Browse files

Generate primes, too.

parent 770bc596
Loading
Loading
Loading
Loading
+38 −8
Original line number Diff line number Diff line
@@ -62,6 +62,9 @@ int MAIN(int argc, char **argv)
    {
    int hex=0;
    int checks=20;
    int generate=0;
    int bits=0;
    int safe=0;
    BIGNUM *bn=NULL;
    BIO *bio_out;

@@ -77,6 +80,15 @@ int MAIN(int argc, char **argv)
	{
	if(!strcmp(*argv,"-hex"))
	    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"))
	    if(--argc < 1)
		goto bad;
@@ -91,7 +103,7 @@ int MAIN(int argc, char **argv)
	++argv;
	}

    if (argv[0] == NULL)
    if (argv[0] == NULL && !generate)
	{
	BIO_printf(bio_err,"No prime specified\n");
	goto bad;
@@ -108,6 +120,23 @@ int MAIN(int argc, char **argv)
#endif
	}

    if(generate)
	{
	char *s;

	if(!bits)
	    {
	    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
@@ -116,6 +145,7 @@ int MAIN(int argc, char **argv)
	BN_print(bio_out,bn);
	BIO_printf(bio_out," is %sprime\n",
		   BN_is_prime_ex(bn,checks,NULL,NULL) ? "" : "not ");
	}

    BN_free(bn);
    BIO_free_all(bio_out);