mirror of https://github.com/openssl/openssl.git
				
				
				
			Update apps for bn opaque change
Reviewed-by: Tim Hudson <tjh@openssl.org>
This commit is contained in:
		
							parent
							
								
									29e7a56d54
								
							
						
					
					
						commit
						348d0d148a
					
				| 
						 | 
					@ -292,8 +292,15 @@ bad:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if(num) {
 | 
						if(num) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		BN_GENCB cb;
 | 
							BN_GENCB *cb;
 | 
				
			||||||
		BN_GENCB_set(&cb, dh_cb, bio_err);
 | 
							cb = BN_GENCB_new();
 | 
				
			||||||
 | 
							if(!cb)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								ERR_print_errors(bio_err);
 | 
				
			||||||
 | 
								goto end;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							BN_GENCB_set(cb, dh_cb, bio_err);
 | 
				
			||||||
		if (!app_RAND_load_file(NULL, bio_err, 1) && inrand == NULL)
 | 
							if (!app_RAND_load_file(NULL, bio_err, 1) && inrand == NULL)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
			BIO_printf(bio_err,"warning, not much extra random data, consider using the -rand option\n");
 | 
								BIO_printf(bio_err,"warning, not much extra random data, consider using the -rand option\n");
 | 
				
			||||||
| 
						 | 
					@ -309,9 +316,10 @@ bad:
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
			BIO_printf(bio_err,"Generating DSA parameters, %d bit long prime\n",num);
 | 
								BIO_printf(bio_err,"Generating DSA parameters, %d bit long prime\n",num);
 | 
				
			||||||
			if(!dsa || !DSA_generate_parameters_ex(dsa, num,
 | 
								if(!dsa || !DSA_generate_parameters_ex(dsa, num,
 | 
				
			||||||
						NULL, 0, NULL, NULL, &cb))
 | 
											NULL, 0, NULL, NULL, cb))
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
				if(dsa) DSA_free(dsa);
 | 
									if(dsa) DSA_free(dsa);
 | 
				
			||||||
 | 
									BN_GENCB_free(cb);
 | 
				
			||||||
				ERR_print_errors(bio_err);
 | 
									ERR_print_errors(bio_err);
 | 
				
			||||||
				goto end;
 | 
									goto end;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
| 
						 | 
					@ -320,6 +328,7 @@ bad:
 | 
				
			||||||
			DSA_free(dsa);
 | 
								DSA_free(dsa);
 | 
				
			||||||
			if (dh == NULL)
 | 
								if (dh == NULL)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
 | 
									BN_GENCB_free(cb);
 | 
				
			||||||
				ERR_print_errors(bio_err);
 | 
									ERR_print_errors(bio_err);
 | 
				
			||||||
				goto end;
 | 
									goto end;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
| 
						 | 
					@ -330,13 +339,15 @@ bad:
 | 
				
			||||||
			dh = DH_new();
 | 
								dh = DH_new();
 | 
				
			||||||
			BIO_printf(bio_err,"Generating DH parameters, %d bit long safe prime, generator %d\n",num,g);
 | 
								BIO_printf(bio_err,"Generating DH parameters, %d bit long safe prime, generator %d\n",num,g);
 | 
				
			||||||
			BIO_printf(bio_err,"This is going to take a long time\n");
 | 
								BIO_printf(bio_err,"This is going to take a long time\n");
 | 
				
			||||||
			if(!dh || !DH_generate_parameters_ex(dh, num, g, &cb))
 | 
								if(!dh || !DH_generate_parameters_ex(dh, num, g, cb))
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
 | 
									BN_GENCB_free(cb);
 | 
				
			||||||
				ERR_print_errors(bio_err);
 | 
									ERR_print_errors(bio_err);
 | 
				
			||||||
				goto end;
 | 
									goto end;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							BN_GENCB_free(cb);
 | 
				
			||||||
		app_RAND_write_file(NULL, bio_err);
 | 
							app_RAND_write_file(NULL, bio_err);
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -547,8 +558,8 @@ static int MS_CALLBACK dh_cb(int p, int n, BN_GENCB *cb)
 | 
				
			||||||
	if (p == 1) c='+';
 | 
						if (p == 1) c='+';
 | 
				
			||||||
	if (p == 2) c='*';
 | 
						if (p == 2) c='*';
 | 
				
			||||||
	if (p == 3) c='\n';
 | 
						if (p == 3) c='\n';
 | 
				
			||||||
	BIO_write(cb->arg,&c,1);
 | 
						BIO_write(BN_GENCB_get_arg(cb),&c,1);
 | 
				
			||||||
	(void)BIO_flush(cb->arg);
 | 
						(void)BIO_flush(BN_GENCB_get_arg(cb));
 | 
				
			||||||
#ifdef LINT
 | 
					#ifdef LINT
 | 
				
			||||||
	p=n;
 | 
						p=n;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -119,6 +119,7 @@ int MAIN(int argc, char **argv)
 | 
				
			||||||
	int numbits= -1,num,genkey=0;
 | 
						int numbits= -1,num,genkey=0;
 | 
				
			||||||
	int need_rand=0;
 | 
						int need_rand=0;
 | 
				
			||||||
	int non_fips_allow = 0;
 | 
						int non_fips_allow = 0;
 | 
				
			||||||
 | 
						BN_GENCB *cb = NULL;
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
	char *engine=NULL;
 | 
						char *engine=NULL;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					@ -291,8 +292,13 @@ bad:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (numbits > 0)
 | 
						if (numbits > 0)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
		BN_GENCB cb;
 | 
							cb = BN_GENCB_new();
 | 
				
			||||||
		BN_GENCB_set(&cb, dsa_cb, bio_err);
 | 
							if(!cb)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
								BIO_printf(bio_err,"Error allocating BN_GENCB object\n");
 | 
				
			||||||
 | 
								goto end;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							BN_GENCB_set(cb, dsa_cb, bio_err);
 | 
				
			||||||
		assert(need_rand);
 | 
							assert(need_rand);
 | 
				
			||||||
		dsa = DSA_new();
 | 
							dsa = DSA_new();
 | 
				
			||||||
		if(!dsa)
 | 
							if(!dsa)
 | 
				
			||||||
| 
						 | 
					@ -320,7 +326,7 @@ bad:
 | 
				
			||||||
		alarm(timebomb);
 | 
							alarm(timebomb);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
	        if(!DSA_generate_parameters_ex(dsa,num,NULL,0,NULL,NULL, &cb))
 | 
						        if(!DSA_generate_parameters_ex(dsa,num,NULL,0,NULL,NULL, cb))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
#ifdef GENCB_TEST
 | 
					#ifdef GENCB_TEST
 | 
				
			||||||
			if(stop_keygen_flag)
 | 
								if(stop_keygen_flag)
 | 
				
			||||||
| 
						 | 
					@ -458,6 +464,7 @@ bad:
 | 
				
			||||||
		app_RAND_write_file(NULL, bio_err);
 | 
							app_RAND_write_file(NULL, bio_err);
 | 
				
			||||||
	ret=0;
 | 
						ret=0;
 | 
				
			||||||
end:
 | 
					end:
 | 
				
			||||||
 | 
						if (cb != NULL) BN_GENCB_free(cb);
 | 
				
			||||||
	if (in != NULL) BIO_free(in);
 | 
						if (in != NULL) BIO_free(in);
 | 
				
			||||||
	if (out != NULL) BIO_free_all(out);
 | 
						if (out != NULL) BIO_free_all(out);
 | 
				
			||||||
	if (dsa != NULL) DSA_free(dsa);
 | 
						if (dsa != NULL) DSA_free(dsa);
 | 
				
			||||||
| 
						 | 
					@ -473,8 +480,8 @@ static int MS_CALLBACK dsa_cb(int p, int n, BN_GENCB *cb)
 | 
				
			||||||
	if (p == 1) c='+';
 | 
						if (p == 1) c='+';
 | 
				
			||||||
	if (p == 2) c='*';
 | 
						if (p == 2) c='*';
 | 
				
			||||||
	if (p == 3) c='\n';
 | 
						if (p == 3) c='\n';
 | 
				
			||||||
	BIO_write(cb->arg,&c,1);
 | 
						BIO_write(BN_GENCB_get_arg(cb),&c,1);
 | 
				
			||||||
	(void)BIO_flush(cb->arg);
 | 
						(void)BIO_flush(BN_GENCB_get_arg(cb));
 | 
				
			||||||
#ifdef LINT
 | 
					#ifdef LINT
 | 
				
			||||||
	p=n;
 | 
						p=n;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										16
									
								
								apps/gendh.c
								
								
								
								
							
							
						
						
									
										16
									
								
								apps/gendh.c
								
								
								
								
							| 
						 | 
					@ -88,7 +88,7 @@ int MAIN(int, char **);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int MAIN(int argc, char **argv)
 | 
					int MAIN(int argc, char **argv)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	BN_GENCB cb;
 | 
						BN_GENCB *cb=NULL;
 | 
				
			||||||
	DH *dh=NULL;
 | 
						DH *dh=NULL;
 | 
				
			||||||
	int ret=1,num=DEFBITS;
 | 
						int ret=1,num=DEFBITS;
 | 
				
			||||||
	int g=2;
 | 
						int g=2;
 | 
				
			||||||
| 
						 | 
					@ -101,11 +101,16 @@ int MAIN(int argc, char **argv)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	apps_startup();
 | 
						apps_startup();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	BN_GENCB_set(&cb, dh_cb, bio_err);
 | 
					 | 
				
			||||||
	if (bio_err == NULL)
 | 
						if (bio_err == NULL)
 | 
				
			||||||
		if ((bio_err=BIO_new(BIO_s_file())) != NULL)
 | 
							if ((bio_err=BIO_new(BIO_s_file())) != NULL)
 | 
				
			||||||
			BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT);
 | 
								BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cb = BN_GENCB_new();
 | 
				
			||||||
 | 
						if(!cb)
 | 
				
			||||||
 | 
							goto end;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						BN_GENCB_set(cb, dh_cb, bio_err);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!load_config(bio_err, NULL))
 | 
						if (!load_config(bio_err, NULL))
 | 
				
			||||||
		goto end;
 | 
							goto end;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -200,7 +205,7 @@ bad:
 | 
				
			||||||
	BIO_printf(bio_err,"Generating DH parameters, %d bit long safe prime, generator %d\n",num,g);
 | 
						BIO_printf(bio_err,"Generating DH parameters, %d bit long safe prime, generator %d\n",num,g);
 | 
				
			||||||
	BIO_printf(bio_err,"This is going to take a long time\n");
 | 
						BIO_printf(bio_err,"This is going to take a long time\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if(((dh = DH_new()) == NULL) || !DH_generate_parameters_ex(dh, num, g, &cb))
 | 
						if(((dh = DH_new()) == NULL) || !DH_generate_parameters_ex(dh, num, g, cb))
 | 
				
			||||||
		goto end;
 | 
							goto end;
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
	app_RAND_write_file(NULL, bio_err);
 | 
						app_RAND_write_file(NULL, bio_err);
 | 
				
			||||||
| 
						 | 
					@ -213,6 +218,7 @@ end:
 | 
				
			||||||
		ERR_print_errors(bio_err);
 | 
							ERR_print_errors(bio_err);
 | 
				
			||||||
	if (out != NULL) BIO_free_all(out);
 | 
						if (out != NULL) BIO_free_all(out);
 | 
				
			||||||
	if (dh != NULL) DH_free(dh);
 | 
						if (dh != NULL) DH_free(dh);
 | 
				
			||||||
 | 
						if (cb != NULL) BN_GENCB_free(cb);
 | 
				
			||||||
	apps_shutdown();
 | 
						apps_shutdown();
 | 
				
			||||||
	OPENSSL_EXIT(ret);
 | 
						OPENSSL_EXIT(ret);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -225,8 +231,8 @@ static int MS_CALLBACK dh_cb(int p, int n, BN_GENCB *cb)
 | 
				
			||||||
	if (p == 1) c='+';
 | 
						if (p == 1) c='+';
 | 
				
			||||||
	if (p == 2) c='*';
 | 
						if (p == 2) c='*';
 | 
				
			||||||
	if (p == 3) c='\n';
 | 
						if (p == 3) c='\n';
 | 
				
			||||||
	BIO_write(cb->arg,&c,1);
 | 
						BIO_write(BN_GENCB_get_arg(cb),&c,1);
 | 
				
			||||||
	(void)BIO_flush(cb->arg);
 | 
						(void)BIO_flush(BN_GENCB_get_arg(cb));
 | 
				
			||||||
#ifdef LINT
 | 
					#ifdef LINT
 | 
				
			||||||
	p=n;
 | 
						p=n;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -88,18 +88,18 @@ int MAIN(int, char **);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int MAIN(int argc, char **argv)
 | 
					int MAIN(int argc, char **argv)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	BN_GENCB cb;
 | 
						BN_GENCB *cb = NULL;
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
	ENGINE *e = NULL;
 | 
						ENGINE *e = NULL;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
	int ret=1;
 | 
						int ret=1;
 | 
				
			||||||
	int non_fips_allow = 0;
 | 
						int non_fips_allow = 0;
 | 
				
			||||||
	int i,num=DEFBITS;
 | 
						int num=DEFBITS;
 | 
				
			||||||
	long l;
 | 
					 | 
				
			||||||
	const EVP_CIPHER *enc=NULL;
 | 
						const EVP_CIPHER *enc=NULL;
 | 
				
			||||||
	unsigned long f4=RSA_F4;
 | 
						unsigned long f4=RSA_F4;
 | 
				
			||||||
	char *outfile=NULL;
 | 
						char *outfile=NULL;
 | 
				
			||||||
	char *passargout = NULL, *passout = NULL;
 | 
						char *passargout = NULL, *passout = NULL;
 | 
				
			||||||
 | 
						char *hexe, *dece;
 | 
				
			||||||
#ifndef OPENSSL_NO_ENGINE
 | 
					#ifndef OPENSSL_NO_ENGINE
 | 
				
			||||||
	char *engine=NULL;
 | 
						char *engine=NULL;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					@ -107,11 +107,14 @@ int MAIN(int argc, char **argv)
 | 
				
			||||||
	BIO *out=NULL;
 | 
						BIO *out=NULL;
 | 
				
			||||||
	BIGNUM *bn = BN_new();
 | 
						BIGNUM *bn = BN_new();
 | 
				
			||||||
	RSA *rsa = NULL;
 | 
						RSA *rsa = NULL;
 | 
				
			||||||
 | 
					 | 
				
			||||||
	if(!bn) goto err;
 | 
						if(!bn) goto err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cb = BN_GENCB_new();
 | 
				
			||||||
 | 
						if(!cb) goto err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	apps_startup();
 | 
						apps_startup();
 | 
				
			||||||
	BN_GENCB_set(&cb, genrsa_cb, bio_err);
 | 
					
 | 
				
			||||||
 | 
						BN_GENCB_set(cb, genrsa_cb, bio_err);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (bio_err == NULL)
 | 
						if (bio_err == NULL)
 | 
				
			||||||
		if ((bio_err=BIO_new(BIO_s_file())) != NULL)
 | 
							if ((bio_err=BIO_new(BIO_s_file())) != NULL)
 | 
				
			||||||
| 
						 | 
					@ -279,23 +282,19 @@ bad:
 | 
				
			||||||
	if (non_fips_allow)
 | 
						if (non_fips_allow)
 | 
				
			||||||
		rsa->flags |= RSA_FLAG_NON_FIPS_ALLOW;
 | 
							rsa->flags |= RSA_FLAG_NON_FIPS_ALLOW;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if(!BN_set_word(bn, f4) || !RSA_generate_key_ex(rsa, num, bn, &cb))
 | 
						if(!BN_set_word(bn, f4) || !RSA_generate_key_ex(rsa, num, bn, cb))
 | 
				
			||||||
		goto err;
 | 
							goto err;
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
	app_RAND_write_file(NULL, bio_err);
 | 
						app_RAND_write_file(NULL, bio_err);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* We need to do the following for when the base number size is <
 | 
						hexe = BN_bn2hex(rsa->e);
 | 
				
			||||||
	 * long, esp windows 3.1 :-(. */
 | 
						dece = BN_bn2dec(rsa->e);
 | 
				
			||||||
	l=0L;
 | 
						if(hexe && dece)
 | 
				
			||||||
	for (i=0; i<rsa->e->top; i++)
 | 
					 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
#ifndef SIXTY_FOUR_BIT
 | 
							BIO_printf(bio_err,"e is %s (0x%s)\n",dece, hexe);
 | 
				
			||||||
		l<<=BN_BITS4;
 | 
					 | 
				
			||||||
		l<<=BN_BITS4;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
		l+=rsa->e->d[i];
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	BIO_printf(bio_err,"e is %ld (0x%lX)\n",l,l);
 | 
						if(hexe) OPENSSL_free(hexe);
 | 
				
			||||||
 | 
						if(dece) OPENSSL_free(dece);
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	PW_CB_DATA cb_data;
 | 
						PW_CB_DATA cb_data;
 | 
				
			||||||
	cb_data.password = passout;
 | 
						cb_data.password = passout;
 | 
				
			||||||
| 
						 | 
					@ -308,6 +307,7 @@ bad:
 | 
				
			||||||
	ret=0;
 | 
						ret=0;
 | 
				
			||||||
err:
 | 
					err:
 | 
				
			||||||
	if (bn) BN_free(bn);
 | 
						if (bn) BN_free(bn);
 | 
				
			||||||
 | 
						if (cb) BN_GENCB_free(cb);
 | 
				
			||||||
	if (rsa) RSA_free(rsa);
 | 
						if (rsa) RSA_free(rsa);
 | 
				
			||||||
	if (out) BIO_free_all(out);
 | 
						if (out) BIO_free_all(out);
 | 
				
			||||||
	if(passout) OPENSSL_free(passout);
 | 
						if(passout) OPENSSL_free(passout);
 | 
				
			||||||
| 
						 | 
					@ -325,8 +325,8 @@ static int MS_CALLBACK genrsa_cb(int p, int n, BN_GENCB *cb)
 | 
				
			||||||
	if (p == 1) c='+';
 | 
						if (p == 1) c='+';
 | 
				
			||||||
	if (p == 2) c='*';
 | 
						if (p == 2) c='*';
 | 
				
			||||||
	if (p == 3) c='\n';
 | 
						if (p == 3) c='\n';
 | 
				
			||||||
	BIO_write(cb->arg,&c,1);
 | 
						BIO_write(BN_GENCB_get_arg(cb),&c,1);
 | 
				
			||||||
	(void)BIO_flush(cb->arg);
 | 
						(void)BIO_flush(BN_GENCB_get_arg(cb));
 | 
				
			||||||
#ifdef LINT
 | 
					#ifdef LINT
 | 
				
			||||||
	p=n;
 | 
						p=n;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue