diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/libssl/src/apps/ts.c | 68 | ||||
| -rw-r--r-- | src/lib/libssl/src/apps/verify.c | 20 | ||||
| -rw-r--r-- | src/lib/libssl/src/apps/version.c | 4 | ||||
| -rw-r--r-- | src/lib/libssl/src/apps/x509.c | 95 |
4 files changed, 92 insertions, 95 deletions
diff --git a/src/lib/libssl/src/apps/ts.c b/src/lib/libssl/src/apps/ts.c index c271bdb226..bfd675bbc7 100644 --- a/src/lib/libssl/src/apps/ts.c +++ b/src/lib/libssl/src/apps/ts.c | |||
| @@ -119,7 +119,7 @@ static int verify_cb(int ok, X509_STORE_CTX * ctx); | |||
| 119 | /* Main function definition. */ | 119 | /* Main function definition. */ |
| 120 | int ts_main(int, char **); | 120 | int ts_main(int, char **); |
| 121 | 121 | ||
| 122 | int | 122 | int |
| 123 | ts_main(int argc, char **argv) | 123 | ts_main(int argc, char **argv) |
| 124 | { | 124 | { |
| 125 | int ret = 1; | 125 | int ret = 1; |
| @@ -306,10 +306,9 @@ ts_main(int argc, char **argv) | |||
| 306 | in, token_in, out, token_out, text); | 306 | in, token_in, out, token_out, text); |
| 307 | break; | 307 | break; |
| 308 | case CMD_VERIFY: | 308 | case CMD_VERIFY: |
| 309 | ret = !(((queryfile && !data && !digest) | 309 | ret = !(((queryfile && !data && !digest) || |
| 310 | || (!queryfile && data && !digest) | 310 | (!queryfile && data && !digest) || |
| 311 | || (!queryfile && !data && digest)) | 311 | (!queryfile && !data && digest)) && in != NULL); |
| 312 | && in != NULL); | ||
| 313 | if (ret) | 312 | if (ret) |
| 314 | goto usage; | 313 | goto usage; |
| 315 | 314 | ||
| @@ -379,7 +378,7 @@ load_config_file(const char *configfile) | |||
| 379 | 378 | ||
| 380 | if (configfile && | 379 | if (configfile && |
| 381 | (!(conf = NCONF_new(NULL)) || | 380 | (!(conf = NCONF_new(NULL)) || |
| 382 | NCONF_load(conf, configfile, &errorline) <= 0)) { | 381 | NCONF_load(conf, configfile, &errorline) <= 0)) { |
| 383 | if (errorline <= 0) | 382 | if (errorline <= 0) |
| 384 | BIO_printf(bio_err, "error loading the config file " | 383 | BIO_printf(bio_err, "error loading the config file " |
| 385 | "'%s'\n", configfile); | 384 | "'%s'\n", configfile); |
| @@ -390,7 +389,8 @@ load_config_file(const char *configfile) | |||
| 390 | if (conf != NULL) { | 389 | if (conf != NULL) { |
| 391 | const char *p; | 390 | const char *p; |
| 392 | 391 | ||
| 393 | BIO_printf(bio_err, "Using configuration from %s\n", configfile); | 392 | BIO_printf(bio_err, "Using configuration from %s\n", |
| 393 | configfile); | ||
| 394 | p = NCONF_get_string(conf, NULL, ENV_OID_FILE); | 394 | p = NCONF_get_string(conf, NULL, ENV_OID_FILE); |
| 395 | if (p != NULL) { | 395 | if (p != NULL) { |
| 396 | BIO *oid_bio = BIO_new_file(p, "r"); | 396 | BIO *oid_bio = BIO_new_file(p, "r"); |
| @@ -412,10 +412,10 @@ load_config_file(const char *configfile) | |||
| 412 | * Query-related method definitions. | 412 | * Query-related method definitions. |
| 413 | */ | 413 | */ |
| 414 | 414 | ||
| 415 | static int | 415 | static int |
| 416 | query_command(const char *data, char *digest, const EVP_MD * md, | 416 | query_command(const char *data, char *digest, const EVP_MD * md, |
| 417 | const char *policy, int no_nonce, | 417 | const char *policy, int no_nonce, int cert, const char *in, |
| 418 | int cert, const char *in, const char *out, int text) | 418 | const char *out, int text) |
| 419 | { | 419 | { |
| 420 | int ret = 0; | 420 | int ret = 0; |
| 421 | TS_REQ *query = NULL; | 421 | TS_REQ *query = NULL; |
| @@ -430,8 +430,8 @@ query_command(const char *data, char *digest, const EVP_MD * md, | |||
| 430 | query = d2i_TS_REQ_bio(in_bio, NULL); | 430 | query = d2i_TS_REQ_bio(in_bio, NULL); |
| 431 | } else { | 431 | } else { |
| 432 | /* Open the file if no explicit digest bytes were specified. */ | 432 | /* Open the file if no explicit digest bytes were specified. */ |
| 433 | if (!digest | 433 | if (!digest && |
| 434 | && !(data_bio = BIO_open_with_default(data, "rb", stdin))) | 434 | !(data_bio = BIO_open_with_default(data, "rb", stdin))) |
| 435 | goto end; | 435 | goto end; |
| 436 | /* Creating the query object. */ | 436 | /* Creating the query object. */ |
| 437 | query = create_query(data_bio, digest, md, | 437 | query = create_query(data_bio, digest, md, |
| @@ -469,12 +469,10 @@ end: | |||
| 469 | } | 469 | } |
| 470 | 470 | ||
| 471 | static BIO * | 471 | static BIO * |
| 472 | BIO_open_with_default(const char *file, const char *mode, | 472 | BIO_open_with_default(const char *file, const char *mode, FILE * default_fp) |
| 473 | FILE * default_fp) | ||
| 474 | { | 473 | { |
| 475 | return file == NULL ? | 474 | return file == NULL ? BIO_new_fp(default_fp, BIO_NOCLOSE) : |
| 476 | BIO_new_fp(default_fp, BIO_NOCLOSE) | 475 | BIO_new_file(file, mode); |
| 477 | : BIO_new_file(file, mode); | ||
| 478 | } | 476 | } |
| 479 | 477 | ||
| 480 | static TS_REQ * | 478 | static TS_REQ * |
| @@ -543,6 +541,7 @@ create_query(BIO * data_bio, char *digest, const EVP_MD * md, | |||
| 543 | goto err; | 541 | goto err; |
| 544 | 542 | ||
| 545 | ret = 1; | 543 | ret = 1; |
| 544 | |||
| 546 | err: | 545 | err: |
| 547 | if (!ret) { | 546 | if (!ret) { |
| 548 | TS_REQ_free(ts_req); | 547 | TS_REQ_free(ts_req); |
| @@ -557,7 +556,7 @@ err: | |||
| 557 | return ts_req; | 556 | return ts_req; |
| 558 | } | 557 | } |
| 559 | 558 | ||
| 560 | static int | 559 | static int |
| 561 | create_digest(BIO * input, char *digest, const EVP_MD * md, | 560 | create_digest(BIO * input, char *digest, const EVP_MD * md, |
| 562 | unsigned char **md_value) | 561 | unsigned char **md_value) |
| 563 | { | 562 | { |
| @@ -614,7 +613,8 @@ create_nonce(int bits) | |||
| 614 | goto err; | 613 | goto err; |
| 615 | 614 | ||
| 616 | /* Find the first non-zero byte and creating ASN1_INTEGER object. */ | 615 | /* Find the first non-zero byte and creating ASN1_INTEGER object. */ |
| 617 | for (i = 0; i < len && !buf[i]; ++i); | 616 | for (i = 0; i < len && !buf[i]; ++i) |
| 617 | ; | ||
| 618 | if (!(nonce = ASN1_INTEGER_new())) | 618 | if (!(nonce = ASN1_INTEGER_new())) |
| 619 | goto err; | 619 | goto err; |
| 620 | free(nonce->data); | 620 | free(nonce->data); |
| @@ -625,6 +625,7 @@ create_nonce(int bits) | |||
| 625 | memcpy(nonce->data, buf + i, nonce->length); | 625 | memcpy(nonce->data, buf + i, nonce->length); |
| 626 | 626 | ||
| 627 | return nonce; | 627 | return nonce; |
| 628 | |||
| 628 | err: | 629 | err: |
| 629 | BIO_printf(bio_err, "could not create nonce\n"); | 630 | BIO_printf(bio_err, "could not create nonce\n"); |
| 630 | ASN1_INTEGER_free(nonce); | 631 | ASN1_INTEGER_free(nonce); |
| @@ -634,12 +635,10 @@ err: | |||
| 634 | * Reply-related method definitions. | 635 | * Reply-related method definitions. |
| 635 | */ | 636 | */ |
| 636 | 637 | ||
| 637 | static int | 638 | static int |
| 638 | reply_command(CONF * conf, char *section, char *engine, | 639 | reply_command(CONF * conf, char *section, char *engine, char *queryfile, |
| 639 | char *queryfile, char *passin, char *inkey, | 640 | char *passin, char *inkey, char *signer, char *chain, const char *policy, |
| 640 | char *signer, char *chain, const char *policy, | 641 | char *in, int token_in, char *out, int token_out, int text) |
| 641 | char *in, int token_in, | ||
| 642 | char *out, int token_out, int text) | ||
| 643 | { | 642 | { |
| 644 | int ret = 0; | 643 | int ret = 0; |
| 645 | TS_RESP *response = NULL; | 644 | TS_RESP *response = NULL; |
| @@ -913,7 +912,7 @@ err: | |||
| 913 | return serial; | 912 | return serial; |
| 914 | } | 913 | } |
| 915 | 914 | ||
| 916 | static int | 915 | static int |
| 917 | save_ts_serial(const char *serialfile, ASN1_INTEGER * serial) | 916 | save_ts_serial(const char *serialfile, ASN1_INTEGER * serial) |
| 918 | { | 917 | { |
| 919 | int ret = 0; | 918 | int ret = 0; |
| @@ -938,10 +937,9 @@ err: | |||
| 938 | * Verify-related method definitions. | 937 | * Verify-related method definitions. |
| 939 | */ | 938 | */ |
| 940 | 939 | ||
| 941 | static int | 940 | static int |
| 942 | verify_command(char *data, char *digest, char *queryfile, | 941 | verify_command(char *data, char *digest, char *queryfile, char *in, |
| 943 | char *in, int token_in, | 942 | int token_in, char *ca_path, char *ca_file, char *untrusted) |
| 944 | char *ca_path, char *ca_file, char *untrusted) | ||
| 945 | { | 943 | { |
| 946 | BIO *in_bio = NULL; | 944 | BIO *in_bio = NULL; |
| 947 | PKCS7 *token = NULL; | 945 | PKCS7 *token = NULL; |
| @@ -961,7 +959,7 @@ verify_command(char *data, char *digest, char *queryfile, | |||
| 961 | } | 959 | } |
| 962 | 960 | ||
| 963 | if (!(verify_ctx = create_verify_ctx(data, digest, queryfile, | 961 | if (!(verify_ctx = create_verify_ctx(data, digest, queryfile, |
| 964 | ca_path, ca_file, untrusted))) | 962 | ca_path, ca_file, untrusted))) |
| 965 | goto end; | 963 | goto end; |
| 966 | 964 | ||
| 967 | /* Checking the token or response against the request. */ | 965 | /* Checking the token or response against the request. */ |
| @@ -988,10 +986,8 @@ end: | |||
| 988 | } | 986 | } |
| 989 | 987 | ||
| 990 | static TS_VERIFY_CTX * | 988 | static TS_VERIFY_CTX * |
| 991 | create_verify_ctx(char *data, char *digest, | 989 | create_verify_ctx(char *data, char *digest, char *queryfile, char *ca_path, |
| 992 | char *queryfile, | 990 | char *ca_file, char *untrusted) |
| 993 | char *ca_path, char *ca_file, | ||
| 994 | char *untrusted) | ||
| 995 | { | 991 | { |
| 996 | TS_VERIFY_CTX *ctx = NULL; | 992 | TS_VERIFY_CTX *ctx = NULL; |
| 997 | BIO *input = NULL; | 993 | BIO *input = NULL; |
| @@ -1099,7 +1095,7 @@ err: | |||
| 1099 | return NULL; | 1095 | return NULL; |
| 1100 | } | 1096 | } |
| 1101 | 1097 | ||
| 1102 | static int | 1098 | static int |
| 1103 | verify_cb(int ok, X509_STORE_CTX * ctx) | 1099 | verify_cb(int ok, X509_STORE_CTX * ctx) |
| 1104 | { | 1100 | { |
| 1105 | /* | 1101 | /* |
diff --git a/src/lib/libssl/src/apps/verify.c b/src/lib/libssl/src/apps/verify.c index 79feec9a4b..7094989177 100644 --- a/src/lib/libssl/src/apps/verify.c +++ b/src/lib/libssl/src/apps/verify.c | |||
| @@ -68,9 +68,8 @@ | |||
| 68 | 68 | ||
| 69 | 69 | ||
| 70 | static int cb(int ok, X509_STORE_CTX * ctx); | 70 | static int cb(int ok, X509_STORE_CTX * ctx); |
| 71 | static int check(X509_STORE * ctx, char *file, | 71 | static int check(X509_STORE * ctx, char *file, STACK_OF(X509) * uchain, |
| 72 | STACK_OF(X509) * uchain, STACK_OF(X509) * tchain, | 72 | STACK_OF(X509) * tchain, STACK_OF(X509_CRL) * crls, ENGINE * e); |
| 73 | STACK_OF(X509_CRL) * crls, ENGINE * e); | ||
| 74 | static int v_verbose = 0, vflags = 0; | 73 | static int v_verbose = 0, vflags = 0; |
| 75 | 74 | ||
| 76 | int verify_main(int, char **); | 75 | int verify_main(int, char **); |
| @@ -120,7 +119,7 @@ verify_main(int argc, char **argv) | |||
| 120 | goto end; | 119 | goto end; |
| 121 | CAfile = *(++argv); | 120 | CAfile = *(++argv); |
| 122 | } else if (args_verify(&argv, &argc, &badarg, bio_err, | 121 | } else if (args_verify(&argv, &argc, &badarg, bio_err, |
| 123 | &vpm)) { | 122 | &vpm)) { |
| 124 | if (badarg) | 123 | if (badarg) |
| 125 | goto end; | 124 | goto end; |
| 126 | continue; | 125 | continue; |
| @@ -217,7 +216,8 @@ verify_main(int argc, char **argv) | |||
| 217 | ret = -1; | 216 | ret = -1; |
| 218 | } else { | 217 | } else { |
| 219 | for (i = 0; i < argc; i++) | 218 | for (i = 0; i < argc; i++) |
| 220 | if (1 != check(cert_ctx, argv[i], untrusted, trusted, crls, e)) | 219 | if (1 != check(cert_ctx, argv[i], untrusted, trusted, |
| 220 | crls, e)) | ||
| 221 | ret = -1; | 221 | ret = -1; |
| 222 | } | 222 | } |
| 223 | 223 | ||
| @@ -250,10 +250,9 @@ end: | |||
| 250 | return (ret < 0 ? 2 : ret); | 250 | return (ret < 0 ? 2 : ret); |
| 251 | } | 251 | } |
| 252 | 252 | ||
| 253 | static int | 253 | static int |
| 254 | check(X509_STORE * ctx, char *file, | 254 | check(X509_STORE * ctx, char *file, STACK_OF(X509) * uchain, |
| 255 | STACK_OF(X509) * uchain, STACK_OF(X509) * tchain, | 255 | STACK_OF(X509) * tchain, STACK_OF(X509_CRL) * crls, ENGINE * e) |
| 256 | STACK_OF(X509_CRL) * crls, ENGINE * e) | ||
| 257 | { | 256 | { |
| 258 | X509 *x = NULL; | 257 | X509 *x = NULL; |
| 259 | int i = 0, ret = 0; | 258 | int i = 0, ret = 0; |
| @@ -282,6 +281,7 @@ check(X509_STORE * ctx, char *file, | |||
| 282 | X509_STORE_CTX_free(csc); | 281 | X509_STORE_CTX_free(csc); |
| 283 | 282 | ||
| 284 | ret = 0; | 283 | ret = 0; |
| 284 | |||
| 285 | end: | 285 | end: |
| 286 | if (i > 0) { | 286 | if (i > 0) { |
| 287 | fprintf(stdout, "OK\n"); | 287 | fprintf(stdout, "OK\n"); |
| @@ -294,7 +294,7 @@ end: | |||
| 294 | return (ret); | 294 | return (ret); |
| 295 | } | 295 | } |
| 296 | 296 | ||
| 297 | static int | 297 | static int |
| 298 | cb(int ok, X509_STORE_CTX * ctx) | 298 | cb(int ok, X509_STORE_CTX * ctx) |
| 299 | { | 299 | { |
| 300 | int cert_error = X509_STORE_CTX_get_error(ctx); | 300 | int cert_error = X509_STORE_CTX_get_error(ctx); |
diff --git a/src/lib/libssl/src/apps/version.c b/src/lib/libssl/src/apps/version.c index 41fb22bc8c..91a27326b5 100644 --- a/src/lib/libssl/src/apps/version.c +++ b/src/lib/libssl/src/apps/version.c | |||
| @@ -135,12 +135,12 @@ | |||
| 135 | 135 | ||
| 136 | int version_main(int, char **); | 136 | int version_main(int, char **); |
| 137 | 137 | ||
| 138 | int | 138 | int |
| 139 | version_main(int argc, char **argv) | 139 | version_main(int argc, char **argv) |
| 140 | { | 140 | { |
| 141 | int i, ret = 0; | 141 | int i, ret = 0; |
| 142 | int cflags = 0, version = 0, date = 0, options = 0, platform = 0, | 142 | int cflags = 0, version = 0, date = 0, options = 0, platform = 0, |
| 143 | dir = 0; | 143 | dir = 0; |
| 144 | 144 | ||
| 145 | apps_startup(); | 145 | apps_startup(); |
| 146 | 146 | ||
diff --git a/src/lib/libssl/src/apps/x509.c b/src/lib/libssl/src/apps/x509.c index 18b9e71586..f714b818ea 100644 --- a/src/lib/libssl/src/apps/x509.c +++ b/src/lib/libssl/src/apps/x509.c | |||
| @@ -151,15 +151,14 @@ static const char *x509_usage[] = { | |||
| 151 | NULL | 151 | NULL |
| 152 | }; | 152 | }; |
| 153 | 153 | ||
| 154 | static int callb(int ok, X509_STORE_CTX * ctx); | 154 | static int callb(int ok, X509_STORE_CTX *ctx); |
| 155 | static int sign(X509 * x, EVP_PKEY * pkey, int days, int clrext, | 155 | static int sign(X509 *x, EVP_PKEY *pkey, int days, int clrext, |
| 156 | const EVP_MD * digest, CONF * conf, char *section); | 156 | const EVP_MD *digest, CONF *conf, char *section); |
| 157 | static int x509_certify(X509_STORE * ctx, char *CAfile, const EVP_MD * digest, | 157 | static int x509_certify(X509_STORE *ctx, char *CAfile, const EVP_MD *digest, |
| 158 | X509 * x, X509 * xca, EVP_PKEY * pkey, | 158 | X509 *x, X509 *xca, EVP_PKEY *pkey, STACK_OF(OPENSSL_STRING) *sigopts, |
| 159 | STACK_OF(OPENSSL_STRING) * sigopts, | 159 | char *serial, int create, int days, int clrext, CONF *conf, char *section, |
| 160 | char *serial, int create, int days, int clrext, | 160 | ASN1_INTEGER *sno); |
| 161 | CONF * conf, char *section, ASN1_INTEGER * sno); | 161 | static int purpose_print(BIO *bio, X509 *cert, X509_PURPOSE *pt); |
| 162 | static int purpose_print(BIO * bio, X509 * cert, X509_PURPOSE * pt); | ||
| 163 | static int reqfile = 0; | 162 | static int reqfile = 0; |
| 164 | 163 | ||
| 165 | int x509_main(int, char **); | 164 | int x509_main(int, char **); |
| @@ -172,26 +171,26 @@ x509_main(int argc, char **argv) | |||
| 172 | X509_REQ *req = NULL; | 171 | X509_REQ *req = NULL; |
| 173 | X509 *x = NULL, *xca = NULL; | 172 | X509 *x = NULL, *xca = NULL; |
| 174 | ASN1_OBJECT *objtmp; | 173 | ASN1_OBJECT *objtmp; |
| 175 | STACK_OF(OPENSSL_STRING) * sigopts = NULL; | 174 | STACK_OF(OPENSSL_STRING) *sigopts = NULL; |
| 176 | EVP_PKEY *Upkey = NULL, *CApkey = NULL; | 175 | EVP_PKEY *Upkey = NULL, *CApkey = NULL; |
| 177 | ASN1_INTEGER *sno = NULL; | 176 | ASN1_INTEGER *sno = NULL; |
| 178 | int i, num, badops = 0; | 177 | int i, num, badops = 0; |
| 179 | BIO *out = NULL; | 178 | BIO *out = NULL; |
| 180 | BIO *STDout = NULL; | 179 | BIO *STDout = NULL; |
| 181 | STACK_OF(ASN1_OBJECT) * trust = NULL, *reject = NULL; | 180 | STACK_OF(ASN1_OBJECT) *trust = NULL, *reject = NULL; |
| 182 | int informat, outformat, keyformat, CAformat, CAkeyformat; | 181 | int informat, outformat, keyformat, CAformat, CAkeyformat; |
| 183 | char *infile = NULL, *outfile = NULL, *keyfile = NULL, *CAfile = NULL; | 182 | char *infile = NULL, *outfile = NULL, *keyfile = NULL, *CAfile = NULL; |
| 184 | char *CAkeyfile = NULL, *CAserial = NULL; | 183 | char *CAkeyfile = NULL, *CAserial = NULL; |
| 185 | char *alias = NULL; | 184 | char *alias = NULL; |
| 186 | int text = 0, serial = 0, subject = 0, issuer = 0, startdate = 0, | 185 | int text = 0, serial = 0, subject = 0, issuer = 0, startdate = 0, |
| 187 | enddate = 0; | 186 | enddate = 0; |
| 188 | int next_serial = 0; | 187 | int next_serial = 0; |
| 189 | int subject_hash = 0, issuer_hash = 0, ocspid = 0; | 188 | int subject_hash = 0, issuer_hash = 0, ocspid = 0; |
| 190 | #ifndef OPENSSL_NO_MD5 | 189 | #ifndef OPENSSL_NO_MD5 |
| 191 | int subject_hash_old = 0, issuer_hash_old = 0; | 190 | int subject_hash_old = 0, issuer_hash_old = 0; |
| 192 | #endif | 191 | #endif |
| 193 | int noout = 0, sign_flag = 0, CA_flag = 0, CA_createserial = 0, | 192 | int noout = 0, sign_flag = 0, CA_flag = 0, CA_createserial = 0, |
| 194 | email = 0; | 193 | email = 0; |
| 195 | int ocsp_uri = 0; | 194 | int ocsp_uri = 0; |
| 196 | int trustout = 0, clrtrust = 0, clrreject = 0, aliasout = 0, clrext = 0; | 195 | int trustout = 0, clrtrust = 0, clrreject = 0, aliasout = 0, clrext = 0; |
| 197 | int C = 0; | 196 | int C = 0; |
| @@ -382,8 +381,8 @@ x509_main(int argc, char **argv) | |||
| 382 | x509req = ++num; | 381 | x509req = ++num; |
| 383 | else if (strcmp(*argv, "-text") == 0) | 382 | else if (strcmp(*argv, "-text") == 0) |
| 384 | text = ++num; | 383 | text = ++num; |
| 385 | else if (strcmp(*argv, "-hash") == 0 | 384 | else if (strcmp(*argv, "-hash") == 0 || |
| 386 | || strcmp(*argv, "-subject_hash") == 0) | 385 | strcmp(*argv, "-subject_hash") == 0) |
| 387 | subject_hash = ++num; | 386 | subject_hash = ++num; |
| 388 | #ifndef OPENSSL_NO_MD5 | 387 | #ifndef OPENSSL_NO_MD5 |
| 389 | else if (strcmp(*argv, "-subject_hash_old") == 0) | 388 | else if (strcmp(*argv, "-subject_hash_old") == 0) |
| @@ -473,7 +472,8 @@ bad: | |||
| 473 | if ((CAkeyfile == NULL) && (CA_flag) && (CAformat == FORMAT_PEM)) { | 472 | if ((CAkeyfile == NULL) && (CA_flag) && (CAformat == FORMAT_PEM)) { |
| 474 | CAkeyfile = CAfile; | 473 | CAkeyfile = CAfile; |
| 475 | } else if ((CA_flag) && (CAkeyfile == NULL)) { | 474 | } else if ((CA_flag) && (CAkeyfile == NULL)) { |
| 476 | BIO_printf(bio_err, "need to specify a CAkey if using the CA command\n"); | 475 | BIO_printf(bio_err, |
| 476 | "need to specify a CAkey if using the CA command\n"); | ||
| 477 | goto end; | 477 | goto end; |
| 478 | } | 478 | } |
| 479 | if (extfile) { | 479 | if (extfile) { |
| @@ -487,12 +487,13 @@ bad: | |||
| 487 | extfile); | 487 | extfile); |
| 488 | else | 488 | else |
| 489 | BIO_printf(bio_err, | 489 | BIO_printf(bio_err, |
| 490 | "error on line %ld of config file '%s'\n" | 490 | "error on line %ld of config file '%s'\n", |
| 491 | ,errorline, extfile); | 491 | errorline, extfile); |
| 492 | goto end; | 492 | goto end; |
| 493 | } | 493 | } |
| 494 | if (!extsect) { | 494 | if (!extsect) { |
| 495 | extsect = NCONF_get_string(extconf, "default", "extensions"); | 495 | extsect = NCONF_get_string(extconf, "default", |
| 496 | "extensions"); | ||
| 496 | if (!extsect) { | 497 | if (!extsect) { |
| 497 | ERR_clear_error(); | 498 | ERR_clear_error(); |
| 498 | extsect = "default"; | 499 | extsect = "default"; |
| @@ -668,7 +669,7 @@ bad: | |||
| 668 | BIO_puts(out, "\n"); | 669 | BIO_puts(out, "\n"); |
| 669 | } else if ((email == i) || (ocsp_uri == i)) { | 670 | } else if ((email == i) || (ocsp_uri == i)) { |
| 670 | int j; | 671 | int j; |
| 671 | STACK_OF(OPENSSL_STRING) * emlst; | 672 | STACK_OF(OPENSSL_STRING) *emlst; |
| 672 | if (email == i) | 673 | if (email == i) |
| 673 | emlst = X509_get1_email(x); | 674 | emlst = X509_get1_email(x); |
| 674 | else | 675 | else |
| @@ -724,11 +725,11 @@ bad: | |||
| 724 | else | 725 | else |
| 725 | #endif | 726 | #endif |
| 726 | #ifndef OPENSSL_NO_DSA | 727 | #ifndef OPENSSL_NO_DSA |
| 727 | if (pkey->type == EVP_PKEY_DSA) | 728 | if (pkey->type == EVP_PKEY_DSA) |
| 728 | BN_print(STDout, pkey->pkey.dsa->pub_key); | 729 | BN_print(STDout, pkey->pkey.dsa->pub_key); |
| 729 | else | 730 | else |
| 730 | #endif | 731 | #endif |
| 731 | BIO_printf(STDout, "Wrong Algorithm type"); | 732 | BIO_printf(STDout, "Wrong Algorithm type"); |
| 732 | BIO_printf(STDout, "\n"); | 733 | BIO_printf(STDout, "\n"); |
| 733 | EVP_PKEY_free(pkey); | 734 | EVP_PKEY_free(pkey); |
| 734 | } else if (pubkey == i) { | 735 | } else if (pubkey == i) { |
| @@ -823,8 +824,7 @@ bad: | |||
| 823 | OBJ_nid2sn(EVP_MD_type(fdig))); | 824 | OBJ_nid2sn(EVP_MD_type(fdig))); |
| 824 | for (j = 0; j < (int) n; j++) { | 825 | for (j = 0; j < (int) n; j++) { |
| 825 | BIO_printf(STDout, "%02X%c", md[j], | 826 | BIO_printf(STDout, "%02X%c", md[j], |
| 826 | (j + 1 == (int) n) | 827 | (j + 1 == (int)n) ? '\n' : ':'); |
| 827 | ? '\n' : ':'); | ||
| 828 | } | 828 | } |
| 829 | } | 829 | } |
| 830 | /* should be in the library */ | 830 | /* should be in the library */ |
| @@ -838,7 +838,7 @@ bad: | |||
| 838 | goto end; | 838 | goto end; |
| 839 | } | 839 | } |
| 840 | if (!sign(x, Upkey, days, clrext, digest, | 840 | if (!sign(x, Upkey, days, clrext, digest, |
| 841 | extconf, extsect)) | 841 | extconf, extsect)) |
| 842 | goto end; | 842 | goto end; |
| 843 | } else if (CA_flag == i) { | 843 | } else if (CA_flag == i) { |
| 844 | BIO_printf(bio_err, "Getting CA Private Key\n"); | 844 | BIO_printf(bio_err, "Getting CA Private Key\n"); |
| @@ -851,9 +851,9 @@ bad: | |||
| 851 | goto end; | 851 | goto end; |
| 852 | } | 852 | } |
| 853 | if (!x509_certify(ctx, CAfile, digest, x, xca, | 853 | if (!x509_certify(ctx, CAfile, digest, x, xca, |
| 854 | CApkey, sigopts, | 854 | CApkey, sigopts, |
| 855 | CAserial, CA_createserial, days, clrext, | 855 | CAserial, CA_createserial, days, clrext, |
| 856 | extconf, extsect, sno)) | 856 | extconf, extsect, sno)) |
| 857 | goto end; | 857 | goto end; |
| 858 | } else if (x509req == i) { | 858 | } else if (x509req == i) { |
| 859 | EVP_PKEY *pk; | 859 | EVP_PKEY *pk; |
| @@ -931,6 +931,7 @@ bad: | |||
| 931 | goto end; | 931 | goto end; |
| 932 | } | 932 | } |
| 933 | ret = 0; | 933 | ret = 0; |
| 934 | |||
| 934 | end: | 935 | end: |
| 935 | OBJ_cleanup(); | 936 | OBJ_cleanup(); |
| 936 | NCONF_free(extconf); | 937 | NCONF_free(extconf); |
| @@ -962,9 +963,8 @@ x509_load_serial(char *CAfile, char *serialfile, int create) | |||
| 962 | BIGNUM *serial = NULL; | 963 | BIGNUM *serial = NULL; |
| 963 | size_t len; | 964 | size_t len; |
| 964 | 965 | ||
| 965 | len = ((serialfile == NULL) | 966 | len = ((serialfile == NULL) ? (strlen(CAfile) + strlen(POSTFIX) + 1) : |
| 966 | ? (strlen(CAfile) + strlen(POSTFIX) + 1) | 967 | (strlen(serialfile))) + 1; |
| 967 | : (strlen(serialfile))) + 1; | ||
| 968 | buf = malloc(len); | 968 | buf = malloc(len); |
| 969 | if (buf == NULL) { | 969 | if (buf == NULL) { |
| 970 | BIO_printf(bio_err, "out of mem\n"); | 970 | BIO_printf(bio_err, "out of mem\n"); |
| @@ -999,13 +999,11 @@ end: | |||
| 999 | return bs; | 999 | return bs; |
| 1000 | } | 1000 | } |
| 1001 | 1001 | ||
| 1002 | static int | 1002 | static int |
| 1003 | x509_certify(X509_STORE * ctx, char *CAfile, const EVP_MD * digest, | 1003 | x509_certify(X509_STORE *ctx, char *CAfile, const EVP_MD *digest, X509 *x, |
| 1004 | X509 * x, X509 * xca, EVP_PKEY * pkey, | 1004 | X509 *xca, EVP_PKEY *pkey, STACK_OF(OPENSSL_STRING) *sigopts, |
| 1005 | STACK_OF(OPENSSL_STRING) * sigopts, | 1005 | char *serialfile, int create, int days, int clrext, CONF *conf, |
| 1006 | char *serialfile, int create, | 1006 | char *section, ASN1_INTEGER *sno) |
| 1007 | int days, int clrext, CONF * conf, char *section, | ||
| 1008 | ASN1_INTEGER * sno) | ||
| 1009 | { | 1007 | { |
| 1010 | int ret = 0; | 1008 | int ret = 0; |
| 1011 | ASN1_INTEGER *bs = NULL; | 1009 | ASN1_INTEGER *bs = NULL; |
| @@ -1076,8 +1074,8 @@ end: | |||
| 1076 | return ret; | 1074 | return ret; |
| 1077 | } | 1075 | } |
| 1078 | 1076 | ||
| 1079 | static int | 1077 | static int |
| 1080 | callb(int ok, X509_STORE_CTX * ctx) | 1078 | callb(int ok, X509_STORE_CTX *ctx) |
| 1081 | { | 1079 | { |
| 1082 | int err; | 1080 | int err; |
| 1083 | X509 *err_cert; | 1081 | X509 *err_cert; |
| @@ -1110,9 +1108,9 @@ callb(int ok, X509_STORE_CTX * ctx) | |||
| 1110 | } | 1108 | } |
| 1111 | 1109 | ||
| 1112 | /* self sign */ | 1110 | /* self sign */ |
| 1113 | static int | 1111 | static int |
| 1114 | sign(X509 * x, EVP_PKEY * pkey, int days, int clrext, const EVP_MD * digest, | 1112 | sign(X509 *x, EVP_PKEY *pkey, int days, int clrext, const EVP_MD *digest, |
| 1115 | CONF * conf, char *section) | 1113 | CONF *conf, char *section) |
| 1116 | { | 1114 | { |
| 1117 | 1115 | ||
| 1118 | EVP_PKEY *pktmp; | 1116 | EVP_PKEY *pktmp; |
| @@ -1131,7 +1129,8 @@ sign(X509 * x, EVP_PKEY * pkey, int days, int clrext, const EVP_MD * digest, | |||
| 1131 | /* memcpy(x->cert_info->validity->notBefore,"700101120000Z",13); */ | 1129 | /* memcpy(x->cert_info->validity->notBefore,"700101120000Z",13); */ |
| 1132 | /* 28 days to be certified */ | 1130 | /* 28 days to be certified */ |
| 1133 | 1131 | ||
| 1134 | if (X509_gmtime_adj(X509_get_notAfter(x), (long) 60 * 60 * 24 * days) == NULL) | 1132 | if (X509_gmtime_adj(X509_get_notAfter(x), |
| 1133 | (long) 60 * 60 * 24 * days) == NULL) | ||
| 1135 | goto err; | 1134 | goto err; |
| 1136 | 1135 | ||
| 1137 | if (!X509_set_pubkey(x, pkey)) | 1136 | if (!X509_set_pubkey(x, pkey)) |
| @@ -1151,16 +1150,18 @@ sign(X509 * x, EVP_PKEY * pkey, int days, int clrext, const EVP_MD * digest, | |||
| 1151 | if (!X509_sign(x, pkey, digest)) | 1150 | if (!X509_sign(x, pkey, digest)) |
| 1152 | goto err; | 1151 | goto err; |
| 1153 | return 1; | 1152 | return 1; |
| 1153 | |||
| 1154 | err: | 1154 | err: |
| 1155 | ERR_print_errors(bio_err); | 1155 | ERR_print_errors(bio_err); |
| 1156 | return 0; | 1156 | return 0; |
| 1157 | } | 1157 | } |
| 1158 | 1158 | ||
| 1159 | static int | 1159 | static int |
| 1160 | purpose_print(BIO * bio, X509 * cert, X509_PURPOSE * pt) | 1160 | purpose_print(BIO *bio, X509 *cert, X509_PURPOSE *pt) |
| 1161 | { | 1161 | { |
| 1162 | int id, i, idret; | 1162 | int id, i, idret; |
| 1163 | char *pname; | 1163 | char *pname; |
| 1164 | |||
| 1164 | id = X509_PURPOSE_get_id(pt); | 1165 | id = X509_PURPOSE_get_id(pt); |
| 1165 | pname = X509_PURPOSE_get0_name(pt); | 1166 | pname = X509_PURPOSE_get0_name(pt); |
| 1166 | for (i = 0; i < 2; i++) { | 1167 | for (i = 0; i < 2; i++) { |
