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 --- |