diff options
Diffstat (limited to 'src/lib/libcrypto/pkcs7/pk7_lib.c')
| -rw-r--r-- | src/lib/libcrypto/pkcs7/pk7_lib.c | 61 |
1 files changed, 23 insertions, 38 deletions
diff --git a/src/lib/libcrypto/pkcs7/pk7_lib.c b/src/lib/libcrypto/pkcs7/pk7_lib.c index b3dc068f3d..dc407dad55 100644 --- a/src/lib/libcrypto/pkcs7/pk7_lib.c +++ b/src/lib/libcrypto/pkcs7/pk7_lib.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: pk7_lib.c,v 1.18 2015/09/30 18:41:06 jsing Exp $ */ | 1 | /* $OpenBSD: pk7_lib.c,v 1.19 2017/01/29 17:49:23 beck Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -83,8 +83,7 @@ PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg) | |||
| 83 | p7->d.sign->contents->d.data = NULL; | 83 | p7->d.sign->contents->d.data = NULL; |
| 84 | } | 84 | } |
| 85 | } else { | 85 | } else { |
| 86 | PKCS7err(PKCS7_F_PKCS7_CTRL, | 86 | PKCS7error(PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE); |
| 87 | PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE); | ||
| 88 | ret = 0; | 87 | ret = 0; |
| 89 | } | 88 | } |
| 90 | break; | 89 | break; |
| @@ -97,14 +96,13 @@ PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg) | |||
| 97 | 96 | ||
| 98 | p7->detached = ret; | 97 | p7->detached = ret; |
| 99 | } else { | 98 | } else { |
| 100 | PKCS7err(PKCS7_F_PKCS7_CTRL, | 99 | PKCS7error(PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE); |
| 101 | PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE); | ||
| 102 | ret = 0; | 100 | ret = 0; |
| 103 | } | 101 | } |
| 104 | 102 | ||
| 105 | break; | 103 | break; |
| 106 | default: | 104 | default: |
| 107 | PKCS7err(PKCS7_F_PKCS7_CTRL, PKCS7_R_UNKNOWN_OPERATION); | 105 | PKCS7error(PKCS7_R_UNKNOWN_OPERATION); |
| 108 | ret = 0; | 106 | ret = 0; |
| 109 | } | 107 | } |
| 110 | return (ret); | 108 | return (ret); |
| @@ -151,8 +149,7 @@ PKCS7_set_content(PKCS7 *p7, PKCS7 *p7_data) | |||
| 151 | case NID_pkcs7_signedAndEnveloped: | 149 | case NID_pkcs7_signedAndEnveloped: |
| 152 | case NID_pkcs7_encrypted: | 150 | case NID_pkcs7_encrypted: |
| 153 | default: | 151 | default: |
| 154 | PKCS7err(PKCS7_F_PKCS7_SET_CONTENT, | 152 | PKCS7error(PKCS7_R_UNSUPPORTED_CONTENT_TYPE); |
| 155 | PKCS7_R_UNSUPPORTED_CONTENT_TYPE); | ||
| 156 | goto err; | 153 | goto err; |
| 157 | } | 154 | } |
| 158 | return (1); | 155 | return (1); |
| @@ -222,8 +219,7 @@ PKCS7_set_type(PKCS7 *p7, int type) | |||
| 222 | goto err; | 219 | goto err; |
| 223 | break; | 220 | break; |
| 224 | default: | 221 | default: |
| 225 | PKCS7err(PKCS7_F_PKCS7_SET_TYPE, | 222 | PKCS7error(PKCS7_R_UNSUPPORTED_CONTENT_TYPE); |
| 226 | PKCS7_R_UNSUPPORTED_CONTENT_TYPE); | ||
| 227 | goto err; | 223 | goto err; |
| 228 | } | 224 | } |
| 229 | return (1); | 225 | return (1); |
| @@ -258,7 +254,7 @@ PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *psi) | |||
| 258 | md_sk = p7->d.signed_and_enveloped->md_algs; | 254 | md_sk = p7->d.signed_and_enveloped->md_algs; |
| 259 | break; | 255 | break; |
| 260 | default: | 256 | default: |
| 261 | PKCS7err(PKCS7_F_PKCS7_ADD_SIGNER, PKCS7_R_WRONG_CONTENT_TYPE); | 257 | PKCS7error(PKCS7_R_WRONG_CONTENT_TYPE); |
| 262 | return (0); | 258 | return (0); |
| 263 | } | 259 | } |
| 264 | 260 | ||
| @@ -278,8 +274,7 @@ PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *psi) | |||
| 278 | if (!(alg = X509_ALGOR_new()) || | 274 | if (!(alg = X509_ALGOR_new()) || |
| 279 | !(alg->parameter = ASN1_TYPE_new())) { | 275 | !(alg->parameter = ASN1_TYPE_new())) { |
| 280 | X509_ALGOR_free(alg); | 276 | X509_ALGOR_free(alg); |
| 281 | PKCS7err(PKCS7_F_PKCS7_ADD_SIGNER, | 277 | PKCS7error(ERR_R_MALLOC_FAILURE); |
| 282 | ERR_R_MALLOC_FAILURE); | ||
| 283 | return (0); | 278 | return (0); |
| 284 | } | 279 | } |
| 285 | alg->algorithm = OBJ_nid2obj(nid); | 280 | alg->algorithm = OBJ_nid2obj(nid); |
| @@ -310,15 +305,14 @@ PKCS7_add_certificate(PKCS7 *p7, X509 *x509) | |||
| 310 | sk = &(p7->d.signed_and_enveloped->cert); | 305 | sk = &(p7->d.signed_and_enveloped->cert); |
| 311 | break; | 306 | break; |
| 312 | default: | 307 | default: |
| 313 | PKCS7err(PKCS7_F_PKCS7_ADD_CERTIFICATE, | 308 | PKCS7error(PKCS7_R_WRONG_CONTENT_TYPE); |
| 314 | PKCS7_R_WRONG_CONTENT_TYPE); | ||
| 315 | return (0); | 309 | return (0); |
| 316 | } | 310 | } |
| 317 | 311 | ||
| 318 | if (*sk == NULL) | 312 | if (*sk == NULL) |
| 319 | *sk = sk_X509_new_null(); | 313 | *sk = sk_X509_new_null(); |
| 320 | if (*sk == NULL) { | 314 | if (*sk == NULL) { |
| 321 | PKCS7err(PKCS7_F_PKCS7_ADD_CERTIFICATE, ERR_R_MALLOC_FAILURE); | 315 | PKCS7error(ERR_R_MALLOC_FAILURE); |
| 322 | return 0; | 316 | return 0; |
| 323 | } | 317 | } |
| 324 | CRYPTO_add(&x509->references, 1, CRYPTO_LOCK_X509); | 318 | CRYPTO_add(&x509->references, 1, CRYPTO_LOCK_X509); |
| @@ -344,14 +338,14 @@ PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl) | |||
| 344 | sk = &(p7->d.signed_and_enveloped->crl); | 338 | sk = &(p7->d.signed_and_enveloped->crl); |
| 345 | break; | 339 | break; |
| 346 | default: | 340 | default: |
| 347 | PKCS7err(PKCS7_F_PKCS7_ADD_CRL, PKCS7_R_WRONG_CONTENT_TYPE); | 341 | PKCS7error(PKCS7_R_WRONG_CONTENT_TYPE); |
| 348 | return (0); | 342 | return (0); |
| 349 | } | 343 | } |
| 350 | 344 | ||
| 351 | if (*sk == NULL) | 345 | if (*sk == NULL) |
| 352 | *sk = sk_X509_CRL_new_null(); | 346 | *sk = sk_X509_CRL_new_null(); |
| 353 | if (*sk == NULL) { | 347 | if (*sk == NULL) { |
| 354 | PKCS7err(PKCS7_F_PKCS7_ADD_CRL, ERR_R_MALLOC_FAILURE); | 348 | PKCS7error(ERR_R_MALLOC_FAILURE); |
| 355 | return 0; | 349 | return 0; |
| 356 | } | 350 | } |
| 357 | 351 | ||
| @@ -398,13 +392,11 @@ PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, | |||
| 398 | if (ret > 0) | 392 | if (ret > 0) |
| 399 | return 1; | 393 | return 1; |
| 400 | if (ret != -2) { | 394 | if (ret != -2) { |
| 401 | PKCS7err(PKCS7_F_PKCS7_SIGNER_INFO_SET, | 395 | PKCS7error(PKCS7_R_SIGNING_CTRL_FAILURE); |
| 402 | PKCS7_R_SIGNING_CTRL_FAILURE); | ||
| 403 | return 0; | 396 | return 0; |
| 404 | } | 397 | } |
| 405 | } | 398 | } |
| 406 | PKCS7err(PKCS7_F_PKCS7_SIGNER_INFO_SET, | 399 | PKCS7error(PKCS7_R_SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE); |
| 407 | PKCS7_R_SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE); | ||
| 408 | err: | 400 | err: |
| 409 | return 0; | 401 | return 0; |
| 410 | } | 402 | } |
| @@ -420,8 +412,7 @@ PKCS7_add_signature(PKCS7 *p7, X509 *x509, EVP_PKEY *pkey, const EVP_MD *dgst) | |||
| 420 | goto err; | 412 | goto err; |
| 421 | dgst = EVP_get_digestbynid(def_nid); | 413 | dgst = EVP_get_digestbynid(def_nid); |
| 422 | if (dgst == NULL) { | 414 | if (dgst == NULL) { |
| 423 | PKCS7err(PKCS7_F_PKCS7_ADD_SIGNATURE, | 415 | PKCS7error(PKCS7_R_NO_DEFAULT_DIGEST); |
| 424 | PKCS7_R_NO_DEFAULT_DIGEST); | ||
| 425 | goto err; | 416 | goto err; |
| 426 | } | 417 | } |
| 427 | } | 418 | } |
| @@ -444,8 +435,7 @@ PKCS7_set_digest(PKCS7 *p7, const EVP_MD *md) | |||
| 444 | { | 435 | { |
| 445 | if (PKCS7_type_is_digest(p7)) { | 436 | if (PKCS7_type_is_digest(p7)) { |
| 446 | if (!(p7->d.digest->md->parameter = ASN1_TYPE_new())) { | 437 | if (!(p7->d.digest->md->parameter = ASN1_TYPE_new())) { |
| 447 | PKCS7err(PKCS7_F_PKCS7_SET_DIGEST, | 438 | PKCS7error(ERR_R_MALLOC_FAILURE); |
| 448 | ERR_R_MALLOC_FAILURE); | ||
| 449 | return 0; | 439 | return 0; |
| 450 | } | 440 | } |
| 451 | p7->d.digest->md->parameter->type = V_ASN1_NULL; | 441 | p7->d.digest->md->parameter->type = V_ASN1_NULL; |
| @@ -453,7 +443,7 @@ PKCS7_set_digest(PKCS7 *p7, const EVP_MD *md) | |||
| 453 | return 1; | 443 | return 1; |
| 454 | } | 444 | } |
| 455 | 445 | ||
| 456 | PKCS7err(PKCS7_F_PKCS7_SET_DIGEST, PKCS7_R_WRONG_CONTENT_TYPE); | 446 | PKCS7error(PKCS7_R_WRONG_CONTENT_TYPE); |
| 457 | return 1; | 447 | return 1; |
| 458 | } | 448 | } |
| 459 | 449 | ||
| @@ -522,8 +512,7 @@ PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri) | |||
| 522 | sk = p7->d.enveloped->recipientinfo; | 512 | sk = p7->d.enveloped->recipientinfo; |
| 523 | break; | 513 | break; |
| 524 | default: | 514 | default: |
| 525 | PKCS7err(PKCS7_F_PKCS7_ADD_RECIPIENT_INFO, | 515 | PKCS7error(PKCS7_R_WRONG_CONTENT_TYPE); |
| 526 | PKCS7_R_WRONG_CONTENT_TYPE); | ||
| 527 | return (0); | 516 | return (0); |
| 528 | } | 517 | } |
| 529 | 518 | ||
| @@ -551,21 +540,18 @@ PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509) | |||
| 551 | pkey = X509_get_pubkey(x509); | 540 | pkey = X509_get_pubkey(x509); |
| 552 | 541 | ||
| 553 | if (!pkey || !pkey->ameth || !pkey->ameth->pkey_ctrl) { | 542 | if (!pkey || !pkey->ameth || !pkey->ameth->pkey_ctrl) { |
| 554 | PKCS7err(PKCS7_F_PKCS7_RECIP_INFO_SET, | 543 | PKCS7error(PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE); |
| 555 | PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE); | ||
| 556 | goto err; | 544 | goto err; |
| 557 | } | 545 | } |
| 558 | 546 | ||
| 559 | ret = pkey->ameth->pkey_ctrl(pkey, ASN1_PKEY_CTRL_PKCS7_ENCRYPT, | 547 | ret = pkey->ameth->pkey_ctrl(pkey, ASN1_PKEY_CTRL_PKCS7_ENCRYPT, |
| 560 | 0, p7i); | 548 | 0, p7i); |
| 561 | if (ret == -2) { | 549 | if (ret == -2) { |
| 562 | PKCS7err(PKCS7_F_PKCS7_RECIP_INFO_SET, | 550 | PKCS7error(PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE); |
| 563 | PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE); | ||
| 564 | goto err; | 551 | goto err; |
| 565 | } | 552 | } |
| 566 | if (ret <= 0) { | 553 | if (ret <= 0) { |
| 567 | PKCS7err(PKCS7_F_PKCS7_RECIP_INFO_SET, | 554 | PKCS7error(PKCS7_R_ENCRYPTION_CTRL_FAILURE); |
| 568 | PKCS7_R_ENCRYPTION_CTRL_FAILURE); | ||
| 569 | goto err; | 555 | goto err; |
| 570 | } | 556 | } |
| 571 | 557 | ||
| @@ -607,15 +593,14 @@ PKCS7_set_cipher(PKCS7 *p7, const EVP_CIPHER *cipher) | |||
| 607 | ec = p7->d.enveloped->enc_data; | 593 | ec = p7->d.enveloped->enc_data; |
| 608 | break; | 594 | break; |
| 609 | default: | 595 | default: |
| 610 | PKCS7err(PKCS7_F_PKCS7_SET_CIPHER, PKCS7_R_WRONG_CONTENT_TYPE); | 596 | PKCS7error(PKCS7_R_WRONG_CONTENT_TYPE); |
| 611 | return (0); | 597 | return (0); |
| 612 | } | 598 | } |
| 613 | 599 | ||
| 614 | /* Check cipher OID exists and has data in it*/ | 600 | /* Check cipher OID exists and has data in it*/ |
| 615 | i = EVP_CIPHER_type(cipher); | 601 | i = EVP_CIPHER_type(cipher); |
| 616 | if (i == NID_undef) { | 602 | if (i == NID_undef) { |
| 617 | PKCS7err(PKCS7_F_PKCS7_SET_CIPHER, | 603 | PKCS7error(PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER); |
| 618 | PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER); | ||
| 619 | return (0); | 604 | return (0); |
| 620 | } | 605 | } |
| 621 | 606 | ||
