mirror of https://github.com/openssl/openssl.git
				
				
				
			Make better use of load_cert, load_certs and load_key.
This commit is contained in:
		
							parent
							
								
									b1460627f3
								
							
						
					
					
						commit
						7953b8ff1b
					
				
							
								
								
									
										16
									
								
								apps/pkcs8.c
								
								
								
								
							
							
						
						
									
										16
									
								
								apps/pkcs8.c
								
								
								
								
							|  | @ -217,21 +217,13 @@ int MAIN(int argc, char **argv) | ||||||
| 		} | 		} | ||||||
| #endif | #endif | ||||||
| 	} | 	} | ||||||
| 	if (topk8) { | 	if (topk8) | ||||||
| 		if(informat == FORMAT_PEM) | 		{ | ||||||
| 			pkey = PEM_read_bio_PrivateKey(in, NULL, NULL, passin); | 		BIO_free(in); /* Not needed in this section */ | ||||||
| 		else if(informat == FORMAT_ASN1) | 		pkey = load_key(bio_err, infile, informat, passin, e, "key"); | ||||||
| 			pkey = d2i_PrivateKey_bio(in, NULL); |  | ||||||
| 		else { |  | ||||||
| 			BIO_printf(bio_err, "Bad format specified for key\n"); |  | ||||||
| 			return (1); |  | ||||||
| 		} |  | ||||||
| 		if (!pkey) { | 		if (!pkey) { | ||||||
| 			BIO_printf(bio_err, "Error reading key\n", outfile); |  | ||||||
| 			ERR_print_errors(bio_err); |  | ||||||
| 			return (1); | 			return (1); | ||||||
| 		} | 		} | ||||||
| 		BIO_free(in); |  | ||||||
| 		if (!(p8inf = EVP_PKEY2PKCS8_broken(pkey, p8_broken))) { | 		if (!(p8inf = EVP_PKEY2PKCS8_broken(pkey, p8_broken))) { | ||||||
| 			BIO_printf(bio_err, "Error converting key\n", outfile); | 			BIO_printf(bio_err, "Error converting key\n", outfile); | ||||||
| 			ERR_print_errors(bio_err); | 			ERR_print_errors(bio_err); | ||||||
|  |  | ||||||
							
								
								
									
										17
									
								
								apps/spkac.c
								
								
								
								
							
							
						
						
									
										17
									
								
								apps/spkac.c
								
								
								
								
							|  | @ -84,7 +84,7 @@ int MAIN(int argc, char **argv) | ||||||
| 	{ | 	{ | ||||||
| 	ENGINE *e = NULL; | 	ENGINE *e = NULL; | ||||||
| 	int i,badops=0, ret = 1; | 	int i,badops=0, ret = 1; | ||||||
| 	BIO *in = NULL,*out = NULL, *key = NULL; | 	BIO *in = NULL,*out = NULL; | ||||||
| 	int verify=0,noout=0,pubkey=0; | 	int verify=0,noout=0,pubkey=0; | ||||||
| 	char *infile = NULL,*outfile = NULL,*prog; | 	char *infile = NULL,*outfile = NULL,*prog; | ||||||
| 	char *passargin = NULL, *passin = NULL; | 	char *passargin = NULL, *passin = NULL; | ||||||
|  | @ -182,17 +182,10 @@ bad: | ||||||
|         e = setup_engine(bio_err, engine, 0); |         e = setup_engine(bio_err, engine, 0); | ||||||
| 
 | 
 | ||||||
| 	if(keyfile) { | 	if(keyfile) { | ||||||
| 		if(strcmp(keyfile, "-")) key = BIO_new_file(keyfile, "r"); | 		pkey = load_key(bio_err, | ||||||
| 		else key = BIO_new_fp(stdin, BIO_NOCLOSE); | 				strcmp(keyfile, "-") ? keyfile : NULL, | ||||||
| 		if(!key) { | 				FORMAT_PEM, passin, e, "private key"); | ||||||
| 			BIO_printf(bio_err, "Error opening key file\n"); |  | ||||||
| 			ERR_print_errors(bio_err); |  | ||||||
| 			goto end; |  | ||||||
| 		} |  | ||||||
| 		pkey = PEM_read_bio_PrivateKey(key, NULL, NULL, passin); |  | ||||||
| 		if(!pkey) { | 		if(!pkey) { | ||||||
| 			BIO_printf(bio_err, "Error reading private key\n"); |  | ||||||
| 			ERR_print_errors(bio_err); |  | ||||||
| 			goto end; | 			goto end; | ||||||
| 		} | 		} | ||||||
| 		spki = NETSCAPE_SPKI_new(); | 		spki = NETSCAPE_SPKI_new(); | ||||||
|  | @ -296,8 +289,8 @@ end: | ||||||
| 	NETSCAPE_SPKI_free(spki); | 	NETSCAPE_SPKI_free(spki); | ||||||
| 	BIO_free(in); | 	BIO_free(in); | ||||||
| 	BIO_free_all(out); | 	BIO_free_all(out); | ||||||
| 	BIO_free(key); |  | ||||||
| 	EVP_PKEY_free(pkey); | 	EVP_PKEY_free(pkey); | ||||||
| 	if(passin) OPENSSL_free(passin); | 	if(passin) OPENSSL_free(passin); | ||||||
|  | 	apps_shutdown(); | ||||||
| 	EXIT(ret); | 	EXIT(ret); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -71,7 +71,7 @@ | ||||||
| #define PROG	verify_main | #define PROG	verify_main | ||||||
| 
 | 
 | ||||||
| static int MS_CALLBACK cb(int ok, X509_STORE_CTX *ctx); | static int MS_CALLBACK cb(int ok, X509_STORE_CTX *ctx); | ||||||
| static int check(X509_STORE *ctx, char *file, STACK_OF(X509) *uchain, STACK_OF(X509) *tchain, int purpose); | static int check(X509_STORE *ctx, char *file, STACK_OF(X509) *uchain, STACK_OF(X509) *tchain, int purpose, ENGINE *e); | ||||||
| static STACK_OF(X509) *load_untrusted(char *file); | static STACK_OF(X509) *load_untrusted(char *file); | ||||||
| static int v_verbose=0, vflags = 0; | static int v_verbose=0, vflags = 0; | ||||||
| 
 | 
 | ||||||
|  | @ -208,10 +208,10 @@ int MAIN(int argc, char **argv) | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if (argc < 1) check(cert_ctx, NULL, untrusted, trusted, purpose); | 	if (argc < 1) check(cert_ctx, NULL, untrusted, trusted, purpose, e); | ||||||
| 	else | 	else | ||||||
| 		for (i=0; i<argc; i++) | 		for (i=0; i<argc; i++) | ||||||
| 			check(cert_ctx,argv[i], untrusted, trusted, purpose); | 			check(cert_ctx,argv[i], untrusted, trusted, purpose, e); | ||||||
| 	ret=0; | 	ret=0; | ||||||
| end: | end: | ||||||
| 	if (ret == 1) { | 	if (ret == 1) { | ||||||
|  | @ -227,42 +227,19 @@ end: | ||||||
| 	if (cert_ctx != NULL) X509_STORE_free(cert_ctx); | 	if (cert_ctx != NULL) X509_STORE_free(cert_ctx); | ||||||
| 	sk_X509_pop_free(untrusted, X509_free); | 	sk_X509_pop_free(untrusted, X509_free); | ||||||
| 	sk_X509_pop_free(trusted, X509_free); | 	sk_X509_pop_free(trusted, X509_free); | ||||||
|  | 	apps_shutdown(); | ||||||
| 	EXIT(ret); | 	EXIT(ret); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| static int check(X509_STORE *ctx, char *file, STACK_OF(X509) *uchain, STACK_OF(X509) *tchain, int purpose) | static int check(X509_STORE *ctx, char *file, STACK_OF(X509) *uchain, STACK_OF(X509) *tchain, int purpose, ENGINE *e) | ||||||
| 	{ | 	{ | ||||||
| 	X509 *x=NULL; | 	X509 *x=NULL; | ||||||
| 	BIO *in=NULL; |  | ||||||
| 	int i=0,ret=0; | 	int i=0,ret=0; | ||||||
| 	X509_STORE_CTX *csc; | 	X509_STORE_CTX *csc; | ||||||
| 
 | 
 | ||||||
| 	in=BIO_new(BIO_s_file()); | 	x = load_cert(bio_err, file, FORMAT_PEM, NULL, e, "certificate file"); | ||||||
| 	if (in == NULL) |  | ||||||
| 		{ |  | ||||||
| 		ERR_print_errors(bio_err); |  | ||||||
| 		goto end; |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 	if (file == NULL) |  | ||||||
| 		BIO_set_fp(in,stdin,BIO_NOCLOSE); |  | ||||||
| 	else |  | ||||||
| 		{ |  | ||||||
| 		if (BIO_read_filename(in,file) <= 0) |  | ||||||
| 			{ |  | ||||||
| 			perror(file); |  | ||||||
| 			goto end; |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 	x=PEM_read_bio_X509(in,NULL,NULL,NULL); |  | ||||||
| 	if (x == NULL) | 	if (x == NULL) | ||||||
| 		{ |  | ||||||
| 		fprintf(stdout,"%s: unable to load certificate file\n", |  | ||||||
| 			(file == NULL)?"stdin":file); |  | ||||||
| 		ERR_print_errors(bio_err); |  | ||||||
| 		goto end; | 		goto end; | ||||||
| 		} |  | ||||||
| 	fprintf(stdout,"%s: ",(file == NULL)?"stdin":file); | 	fprintf(stdout,"%s: ",(file == NULL)?"stdin":file); | ||||||
| 
 | 
 | ||||||
| 	csc = X509_STORE_CTX_new(); | 	csc = X509_STORE_CTX_new(); | ||||||
|  | @ -288,7 +265,6 @@ end: | ||||||
| 	else | 	else | ||||||
| 		ERR_print_errors(bio_err); | 		ERR_print_errors(bio_err); | ||||||
| 	if (x != NULL) X509_free(x); | 	if (x != NULL) X509_free(x); | ||||||
| 	if (in != NULL) BIO_free(in); |  | ||||||
| 
 | 
 | ||||||
| 	return(ret); | 	return(ret); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue