Deleted Added
full compact
smime.c (59191) smime.c (68651)
1/* smime.c */
2/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
3 * project 1999.
4 */
5/* ====================================================================
6 * Copyright (c) 1999 The OpenSSL Project. All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 53 unchanged lines hidden (view full) ---

62#include <string.h>
63#include "apps.h"
64#include <openssl/crypto.h>
65#include <openssl/pem.h>
66#include <openssl/err.h>
67
68#undef PROG
69#define PROG smime_main
1/* smime.c */
2/* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL
3 * project 1999.
4 */
5/* ====================================================================
6 * Copyright (c) 1999 The OpenSSL Project. All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 53 unchanged lines hidden (view full) ---

62#include <string.h>
63#include "apps.h"
64#include <openssl/crypto.h>
65#include <openssl/pem.h>
66#include <openssl/err.h>
67
68#undef PROG
69#define PROG smime_main
70static X509 *load_cert(char *file);
71static EVP_PKEY *load_key(char *file, char *pass);
72static STACK_OF(X509) *load_certs(char *file);
73static X509_STORE *setup_verify(char *CAfile, char *CApath);
74static int save_certs(char *signerfile, STACK_OF(X509) *signers);
75
76#define SMIME_OP 0x10
77#define SMIME_ENCRYPT (1 | SMIME_OP)
78#define SMIME_DECRYPT 2
79#define SMIME_SIGN (3 | SMIME_OP)
80#define SMIME_VERIFY 4

--- 4 unchanged lines hidden (view full) ---

85int MAIN(int argc, char **argv)
86{
87 int operation = 0;
88 int ret = 0;
89 char **args;
90 char *inmode = "r", *outmode = "w";
91 char *infile = NULL, *outfile = NULL;
92 char *signerfile = NULL, *recipfile = NULL;
70static X509_STORE *setup_verify(char *CAfile, char *CApath);
71static int save_certs(char *signerfile, STACK_OF(X509) *signers);
72
73#define SMIME_OP 0x10
74#define SMIME_ENCRYPT (1 | SMIME_OP)
75#define SMIME_DECRYPT 2
76#define SMIME_SIGN (3 | SMIME_OP)
77#define SMIME_VERIFY 4

--- 4 unchanged lines hidden (view full) ---

82int MAIN(int argc, char **argv)
83{
84 int operation = 0;
85 int ret = 0;
86 char **args;
87 char *inmode = "r", *outmode = "w";
88 char *infile = NULL, *outfile = NULL;
89 char *signerfile = NULL, *recipfile = NULL;
93 char *certfile = NULL, *keyfile = NULL;
90 char *certfile = NULL, *keyfile = NULL, *contfile=NULL;
94 EVP_CIPHER *cipher = NULL;
95 PKCS7 *p7 = NULL;
96 X509_STORE *store = NULL;
97 X509 *cert = NULL, *recip = NULL, *signer = NULL;
98 EVP_PKEY *key = NULL;
99 STACK_OF(X509) *encerts = NULL, *other = NULL;
100 BIO *in = NULL, *out = NULL, *indata = NULL;
101 int badarg = 0;
102 int flags = PKCS7_DETACHED;
103 char *to = NULL, *from = NULL, *subject = NULL;
104 char *CAfile = NULL, *CApath = NULL;
105 char *passargin = NULL, *passin = NULL;
106 char *inrand = NULL;
107 int need_rand = 0;
91 EVP_CIPHER *cipher = NULL;
92 PKCS7 *p7 = NULL;
93 X509_STORE *store = NULL;
94 X509 *cert = NULL, *recip = NULL, *signer = NULL;
95 EVP_PKEY *key = NULL;
96 STACK_OF(X509) *encerts = NULL, *other = NULL;
97 BIO *in = NULL, *out = NULL, *indata = NULL;
98 int badarg = 0;
99 int flags = PKCS7_DETACHED;
100 char *to = NULL, *from = NULL, *subject = NULL;
101 char *CAfile = NULL, *CApath = NULL;
102 char *passargin = NULL, *passin = NULL;
103 char *inrand = NULL;
104 int need_rand = 0;
105 int informat = FORMAT_SMIME, outformat = FORMAT_SMIME;
108 args = argv + 1;
109
110 ret = 1;
111
112 while (!badarg && *args && *args[0] == '-') {
113 if (!strcmp (*args, "-encrypt")) operation = SMIME_ENCRYPT;
114 else if (!strcmp (*args, "-decrypt")) operation = SMIME_DECRYPT;
115 else if (!strcmp (*args, "-sign")) operation = SMIME_SIGN;

--- 22 unchanged lines hidden (view full) ---

138 else if (!strcmp (*args, "-nochain"))
139 flags |= PKCS7_NOCHAIN;
140 else if (!strcmp (*args, "-nocerts"))
141 flags |= PKCS7_NOCERTS;
142 else if (!strcmp (*args, "-noattr"))
143 flags |= PKCS7_NOATTR;
144 else if (!strcmp (*args, "-nodetach"))
145 flags &= ~PKCS7_DETACHED;
106 args = argv + 1;
107
108 ret = 1;
109
110 while (!badarg && *args && *args[0] == '-') {
111 if (!strcmp (*args, "-encrypt")) operation = SMIME_ENCRYPT;
112 else if (!strcmp (*args, "-decrypt")) operation = SMIME_DECRYPT;
113 else if (!strcmp (*args, "-sign")) operation = SMIME_SIGN;

--- 22 unchanged lines hidden (view full) ---

136 else if (!strcmp (*args, "-nochain"))
137 flags |= PKCS7_NOCHAIN;
138 else if (!strcmp (*args, "-nocerts"))
139 flags |= PKCS7_NOCERTS;
140 else if (!strcmp (*args, "-noattr"))
141 flags |= PKCS7_NOATTR;
142 else if (!strcmp (*args, "-nodetach"))
143 flags &= ~PKCS7_DETACHED;
144 else if (!strcmp (*args, "-nosmimecap"))
145 flags |= PKCS7_NOSMIMECAP;
146 else if (!strcmp (*args, "-binary"))
147 flags |= PKCS7_BINARY;
148 else if (!strcmp (*args, "-nosigs"))
149 flags |= PKCS7_NOSIGS;
150 else if (!strcmp(*args,"-rand")) {
151 if (args[1]) {
152 args++;
153 inrand = *args;

--- 49 unchanged lines hidden (view full) ---

203 args++;
204 CApath = *args;
205 } else badarg = 1;
206 } else if (!strcmp (*args, "-in")) {
207 if (args[1]) {
208 args++;
209 infile = *args;
210 } else badarg = 1;
146 else if (!strcmp (*args, "-binary"))
147 flags |= PKCS7_BINARY;
148 else if (!strcmp (*args, "-nosigs"))
149 flags |= PKCS7_NOSIGS;
150 else if (!strcmp(*args,"-rand")) {
151 if (args[1]) {
152 args++;
153 inrand = *args;

--- 49 unchanged lines hidden (view full) ---

203 args++;
204 CApath = *args;
205 } else badarg = 1;
206 } else if (!strcmp (*args, "-in")) {
207 if (args[1]) {
208 args++;
209 infile = *args;
210 } else badarg = 1;
211 } else if (!strcmp (*args, "-inform")) {
212 if (args[1]) {
213 args++;
214 informat = str2fmt(*args);
215 } else badarg = 1;
216 } else if (!strcmp (*args, "-outform")) {
217 if (args[1]) {
218 args++;
219 outformat = str2fmt(*args);
220 } else badarg = 1;
211 } else if (!strcmp (*args, "-out")) {
212 if (args[1]) {
213 args++;
214 outfile = *args;
215 } else badarg = 1;
221 } else if (!strcmp (*args, "-out")) {
222 if (args[1]) {
223 args++;
224 outfile = *args;
225 } else badarg = 1;
226 } else if (!strcmp (*args, "-content")) {
227 if (args[1]) {
228 args++;
229 contfile = *args;
230 } else badarg = 1;
216 } else badarg = 1;
217 args++;
218 }
219
220 if(operation == SMIME_SIGN) {
221 if(!signerfile) {
222 BIO_printf(bio_err, "No signer certificate specified\n");
223 badarg = 1;

--- 35 unchanged lines hidden (view full) ---

259 BIO_printf (bio_err, "-nocerts don't include signers certificate when signing\n");
260 BIO_printf (bio_err, "-nodetach use opaque signing\n");
261 BIO_printf (bio_err, "-noattr don't include any signed attributes\n");
262 BIO_printf (bio_err, "-binary don't translate message to text\n");
263 BIO_printf (bio_err, "-certfile file other certificates file\n");
264 BIO_printf (bio_err, "-signer file signer certificate file\n");
265 BIO_printf (bio_err, "-recip file recipient certificate file for decryption\n");
266 BIO_printf (bio_err, "-in file input file\n");
231 } else badarg = 1;
232 args++;
233 }
234
235 if(operation == SMIME_SIGN) {
236 if(!signerfile) {
237 BIO_printf(bio_err, "No signer certificate specified\n");
238 badarg = 1;

--- 35 unchanged lines hidden (view full) ---

274 BIO_printf (bio_err, "-nocerts don't include signers certificate when signing\n");
275 BIO_printf (bio_err, "-nodetach use opaque signing\n");
276 BIO_printf (bio_err, "-noattr don't include any signed attributes\n");
277 BIO_printf (bio_err, "-binary don't translate message to text\n");
278 BIO_printf (bio_err, "-certfile file other certificates file\n");
279 BIO_printf (bio_err, "-signer file signer certificate file\n");
280 BIO_printf (bio_err, "-recip file recipient certificate file for decryption\n");
281 BIO_printf (bio_err, "-in file input file\n");
282 BIO_printf (bio_err, "-inform arg input format SMIME (default), PEM or DER\n");
267 BIO_printf (bio_err, "-inkey file input private key (if not signer or recipient)\n");
268 BIO_printf (bio_err, "-out file output file\n");
283 BIO_printf (bio_err, "-inkey file input private key (if not signer or recipient)\n");
284 BIO_printf (bio_err, "-out file output file\n");
285 BIO_printf (bio_err, "-outform arg output format SMIME (default), PEM or DER\n");
286 BIO_printf (bio_err, "-content file supply or override content for detached signature\n");
269 BIO_printf (bio_err, "-to addr to address\n");
270 BIO_printf (bio_err, "-from ad from address\n");
271 BIO_printf (bio_err, "-subject s subject\n");
272 BIO_printf (bio_err, "-text include or delete text MIME headers\n");
273 BIO_printf (bio_err, "-CApath dir trusted certificates directory\n");
274 BIO_printf (bio_err, "-CAfile file trusted certificates file\n");
275 BIO_printf(bio_err, "-rand file%cfile%c...\n", LIST_SEPARATOR_CHAR, LIST_SEPARATOR_CHAR);
276 BIO_printf(bio_err, " load the file (or the files in the directory) into\n");

--- 13 unchanged lines hidden (view full) ---

290 BIO_printf(bio_err,"%ld semi-random bytes loaded\n",
291 app_RAND_load_files(inrand));
292 }
293
294 ret = 2;
295
296 if(operation != SMIME_SIGN) flags &= ~PKCS7_DETACHED;
297
287 BIO_printf (bio_err, "-to addr to address\n");
288 BIO_printf (bio_err, "-from ad from address\n");
289 BIO_printf (bio_err, "-subject s subject\n");
290 BIO_printf (bio_err, "-text include or delete text MIME headers\n");
291 BIO_printf (bio_err, "-CApath dir trusted certificates directory\n");
292 BIO_printf (bio_err, "-CAfile file trusted certificates file\n");
293 BIO_printf(bio_err, "-rand file%cfile%c...\n", LIST_SEPARATOR_CHAR, LIST_SEPARATOR_CHAR);
294 BIO_printf(bio_err, " load the file (or the files in the directory) into\n");

--- 13 unchanged lines hidden (view full) ---

308 BIO_printf(bio_err,"%ld semi-random bytes loaded\n",
309 app_RAND_load_files(inrand));
310 }
311
312 ret = 2;
313
314 if(operation != SMIME_SIGN) flags &= ~PKCS7_DETACHED;
315
298 if(flags & PKCS7_BINARY) {
299 if(operation & SMIME_OP) inmode = "rb";
300 else outmode = "rb";
316 if(operation & SMIME_OP) {
317 if(flags & PKCS7_BINARY) inmode = "rb";
318 if(outformat == FORMAT_ASN1) outmode = "wb";
319 } else {
320 if(flags & PKCS7_BINARY) outmode = "wb";
321 if(informat == FORMAT_ASN1) inmode = "rb";
301 }
302
303 if(operation == SMIME_ENCRYPT) {
304 if (!cipher) {
305#ifndef NO_RC2
306 cipher = EVP_rc2_40_cbc();
307#else
308 BIO_printf(bio_err, "No cipher selected\n");
309 goto end;
310#endif
311 }
312 encerts = sk_X509_new_null();
313 while (*args) {
322 }
323
324 if(operation == SMIME_ENCRYPT) {
325 if (!cipher) {
326#ifndef NO_RC2
327 cipher = EVP_rc2_40_cbc();
328#else
329 BIO_printf(bio_err, "No cipher selected\n");
330 goto end;
331#endif
332 }
333 encerts = sk_X509_new_null();
334 while (*args) {
314 if(!(cert = load_cert(*args))) {
335 if(!(cert = load_cert(bio_err,*args,FORMAT_PEM))) {
315 BIO_printf(bio_err, "Can't read recipient certificate file %s\n", *args);
316 goto end;
317 }
318 sk_X509_push(encerts, cert);
319 cert = NULL;
320 args++;
321 }
322 }
323
324 if(signerfile && (operation == SMIME_SIGN)) {
336 BIO_printf(bio_err, "Can't read recipient certificate file %s\n", *args);
337 goto end;
338 }
339 sk_X509_push(encerts, cert);
340 cert = NULL;
341 args++;
342 }
343 }
344
345 if(signerfile && (operation == SMIME_SIGN)) {
325 if(!(signer = load_cert(signerfile))) {
346 if(!(signer = load_cert(bio_err,signerfile,FORMAT_PEM))) {
326 BIO_printf(bio_err, "Can't read signer certificate file %s\n", signerfile);
327 goto end;
328 }
329 }
330
331 if(certfile) {
347 BIO_printf(bio_err, "Can't read signer certificate file %s\n", signerfile);
348 goto end;
349 }
350 }
351
352 if(certfile) {
332 if(!(other = load_certs(certfile))) {
353 if(!(other = load_certs(bio_err,certfile,FORMAT_PEM))) {
333 BIO_printf(bio_err, "Can't read certificate file %s\n", certfile);
334 ERR_print_errors(bio_err);
335 goto end;
336 }
337 }
338
339 if(recipfile && (operation == SMIME_DECRYPT)) {
354 BIO_printf(bio_err, "Can't read certificate file %s\n", certfile);
355 ERR_print_errors(bio_err);
356 goto end;
357 }
358 }
359
360 if(recipfile && (operation == SMIME_DECRYPT)) {
340 if(!(recip = load_cert(recipfile))) {
361 if(!(recip = load_cert(bio_err,recipfile,FORMAT_PEM))) {
341 BIO_printf(bio_err, "Can't read recipient certificate file %s\n", recipfile);
342 ERR_print_errors(bio_err);
343 goto end;
344 }
345 }
346
347 if(operation == SMIME_DECRYPT) {
348 if(!keyfile) keyfile = recipfile;
349 } else if(operation == SMIME_SIGN) {
350 if(!keyfile) keyfile = signerfile;
351 } else keyfile = NULL;
352
353 if(keyfile) {
362 BIO_printf(bio_err, "Can't read recipient certificate file %s\n", recipfile);
363 ERR_print_errors(bio_err);
364 goto end;
365 }
366 }
367
368 if(operation == SMIME_DECRYPT) {
369 if(!keyfile) keyfile = recipfile;
370 } else if(operation == SMIME_SIGN) {
371 if(!keyfile) keyfile = signerfile;
372 } else keyfile = NULL;
373
374 if(keyfile) {
354 if(!(key = load_key(keyfile, passin))) {
375 if(!(key = load_key(bio_err,keyfile, FORMAT_PEM, passin))) {
355 BIO_printf(bio_err, "Can't read recipient certificate file %s\n", keyfile);
356 ERR_print_errors(bio_err);
357 goto end;
358 }
359 }
360
361 if (infile) {
362 if (!(in = BIO_new_file(infile, inmode))) {

--- 4 unchanged lines hidden (view full) ---

367 } else in = BIO_new_fp(stdin, BIO_NOCLOSE);
368
369 if (outfile) {
370 if (!(out = BIO_new_file(outfile, outmode))) {
371 BIO_printf (bio_err,
372 "Can't open output file %s\n", outfile);
373 goto end;
374 }
376 BIO_printf(bio_err, "Can't read recipient certificate file %s\n", keyfile);
377 ERR_print_errors(bio_err);
378 goto end;
379 }
380 }
381
382 if (infile) {
383 if (!(in = BIO_new_file(infile, inmode))) {

--- 4 unchanged lines hidden (view full) ---

388 } else in = BIO_new_fp(stdin, BIO_NOCLOSE);
389
390 if (outfile) {
391 if (!(out = BIO_new_file(outfile, outmode))) {
392 BIO_printf (bio_err,
393 "Can't open output file %s\n", outfile);
394 goto end;
395 }
375 } else out = BIO_new_fp(stdout, BIO_NOCLOSE);
396 } else {
397 out = BIO_new_fp(stdout, BIO_NOCLOSE);
398#ifdef VMS
399 {
400 BIO *tmpbio = BIO_new(BIO_f_linebuffer());
401 out = BIO_push(tmpbio, out);
402 }
403#endif
404 }
376
377 if(operation == SMIME_VERIFY) {
378 if(!(store = setup_verify(CAfile, CApath))) goto end;
379 }
380
381 ret = 3;
382
383 if(operation == SMIME_ENCRYPT) {
384 p7 = PKCS7_encrypt(encerts, in, cipher, flags);
385 } else if(operation == SMIME_SIGN) {
386 p7 = PKCS7_sign(signer, key, other, in, flags);
387 BIO_reset(in);
388 } else {
405
406 if(operation == SMIME_VERIFY) {
407 if(!(store = setup_verify(CAfile, CApath))) goto end;
408 }
409
410 ret = 3;
411
412 if(operation == SMIME_ENCRYPT) {
413 p7 = PKCS7_encrypt(encerts, in, cipher, flags);
414 } else if(operation == SMIME_SIGN) {
415 p7 = PKCS7_sign(signer, key, other, in, flags);
416 BIO_reset(in);
417 } else {
389 if(!(p7 = SMIME_read_PKCS7(in, &indata))) {
418 if(informat == FORMAT_SMIME)
419 p7 = SMIME_read_PKCS7(in, &indata);
420 else if(informat == FORMAT_PEM)
421 p7 = PEM_read_bio_PKCS7(in, NULL, NULL, NULL);
422 else if(informat == FORMAT_ASN1)
423 p7 = d2i_PKCS7_bio(in, NULL);
424 else {
425 BIO_printf(bio_err, "Bad input format for PKCS#7 file\n");
426 goto end;
427 }
428
429 if(!p7) {
390 BIO_printf(bio_err, "Error reading S/MIME message\n");
391 goto end;
392 }
430 BIO_printf(bio_err, "Error reading S/MIME message\n");
431 goto end;
432 }
433 if(contfile) {
434 BIO_free(indata);
435 if(!(indata = BIO_new_file(contfile, "rb"))) {
436 BIO_printf(bio_err, "Can't read content file %s\n", contfile);
437 goto end;
438 }
439 }
393 }
394
395 if(!p7) {
396 BIO_printf(bio_err, "Error creating PKCS#7 structure\n");
397 goto end;
398 }
399
400 ret = 4;

--- 19 unchanged lines hidden (view full) ---

420 }
421 sk_X509_free(signers);
422 } else if(operation == SMIME_PK7OUT) {
423 PEM_write_bio_PKCS7(out, p7);
424 } else {
425 if(to) BIO_printf(out, "To: %s\n", to);
426 if(from) BIO_printf(out, "From: %s\n", from);
427 if(subject) BIO_printf(out, "Subject: %s\n", subject);
440 }
441
442 if(!p7) {
443 BIO_printf(bio_err, "Error creating PKCS#7 structure\n");
444 goto end;
445 }
446
447 ret = 4;

--- 19 unchanged lines hidden (view full) ---

467 }
468 sk_X509_free(signers);
469 } else if(operation == SMIME_PK7OUT) {
470 PEM_write_bio_PKCS7(out, p7);
471 } else {
472 if(to) BIO_printf(out, "To: %s\n", to);
473 if(from) BIO_printf(out, "From: %s\n", from);
474 if(subject) BIO_printf(out, "Subject: %s\n", subject);
428 SMIME_write_PKCS7(out, p7, in, flags);
475 if(outformat == FORMAT_SMIME)
476 SMIME_write_PKCS7(out, p7, in, flags);
477 else if(outformat == FORMAT_PEM)
478 PEM_write_bio_PKCS7(out,p7);
479 else if(outformat == FORMAT_ASN1)
480 i2d_PKCS7_bio(out,p7);
481 else {
482 BIO_printf(bio_err, "Bad output format for PKCS#7 file\n");
483 goto end;
484 }
429 }
430 ret = 0;
431end:
432 if (need_rand)
433 app_RAND_write_file(NULL, bio_err);
434 if(ret) ERR_print_errors(bio_err);
435 sk_X509_pop_free(encerts, X509_free);
436 sk_X509_pop_free(other, X509_free);
437 X509_STORE_free(store);
438 X509_free(cert);
439 X509_free(recip);
440 X509_free(signer);
441 EVP_PKEY_free(key);
442 PKCS7_free(p7);
443 BIO_free(in);
444 BIO_free(indata);
485 }
486 ret = 0;
487end:
488 if (need_rand)
489 app_RAND_write_file(NULL, bio_err);
490 if(ret) ERR_print_errors(bio_err);
491 sk_X509_pop_free(encerts, X509_free);
492 sk_X509_pop_free(other, X509_free);
493 X509_STORE_free(store);
494 X509_free(cert);
495 X509_free(recip);
496 X509_free(signer);
497 EVP_PKEY_free(key);
498 PKCS7_free(p7);
499 BIO_free(in);
500 BIO_free(indata);
445 BIO_free(out);
446 if(passin) Free(passin);
501 BIO_free_all(out);
502 if(passin) OPENSSL_free(passin);
447 return (ret);
448}
449
503 return (ret);
504}
505
450static X509 *load_cert(char *file)
451{
452 BIO *in;
453 X509 *cert;
454 if(!(in = BIO_new_file(file, "r"))) return NULL;
455 cert = PEM_read_bio_X509(in, NULL, NULL,NULL);
456 BIO_free(in);
457 return cert;
458}
459
460static EVP_PKEY *load_key(char *file, char *pass)
461{
462 BIO *in;
463 EVP_PKEY *key;
464 if(!(in = BIO_new_file(file, "r"))) return NULL;
465 key = PEM_read_bio_PrivateKey(in, NULL,NULL,pass);
466 BIO_free(in);
467 return key;
468}
469
470static STACK_OF(X509) *load_certs(char *file)
471{
472 BIO *in;
473 int i;
474 STACK_OF(X509) *othercerts;
475 STACK_OF(X509_INFO) *allcerts;
476 X509_INFO *xi;
477 if(!(in = BIO_new_file(file, "r"))) return NULL;
478 othercerts = sk_X509_new(NULL);
479 if(!othercerts) return NULL;
480 allcerts = PEM_X509_INFO_read_bio(in, NULL, NULL, NULL);
481 for(i = 0; i < sk_X509_INFO_num(allcerts); i++) {
482 xi = sk_X509_INFO_value (allcerts, i);
483 if (xi->x509) {
484 sk_X509_push(othercerts, xi->x509);
485 xi->x509 = NULL;
486 }
487 }
488 sk_X509_INFO_pop_free(allcerts, X509_INFO_free);
489 BIO_free(in);
490 return othercerts;
491}
492
493static X509_STORE *setup_verify(char *CAfile, char *CApath)
494{
495 X509_STORE *store;
496 X509_LOOKUP *lookup;
497 if(!(store = X509_STORE_new())) goto end;
498 lookup=X509_STORE_add_lookup(store,X509_LOOKUP_file());
499 if (lookup == NULL) goto end;
500 if (CAfile) {

--- 35 unchanged lines hidden ---
506static X509_STORE *setup_verify(char *CAfile, char *CApath)
507{
508 X509_STORE *store;
509 X509_LOOKUP *lookup;
510 if(!(store = X509_STORE_new())) goto end;
511 lookup=X509_STORE_add_lookup(store,X509_LOOKUP_file());
512 if (lookup == NULL) goto end;
513 if (CAfile) {

--- 35 unchanged lines hidden ---