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