diff options
Diffstat (limited to 'src/lib/libcrypto/cms/cms_env.c')
| -rw-r--r-- | src/lib/libcrypto/cms/cms_env.c | 94 |
1 files changed, 40 insertions, 54 deletions
diff --git a/src/lib/libcrypto/cms/cms_env.c b/src/lib/libcrypto/cms/cms_env.c index fbfbdd98ca..d6bf34c02a 100644 --- a/src/lib/libcrypto/cms/cms_env.c +++ b/src/lib/libcrypto/cms/cms_env.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: cms_env.c,v 1.16 2019/08/10 18:15:52 jsing Exp $ */ | 1 | /* $OpenBSD: cms_env.c,v 1.17 2019/08/11 10:38:27 jsing Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 3 | * Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 4 | * project. | 4 | * project. |
| @@ -69,8 +69,7 @@ CMS_EnvelopedData * | |||
| 69 | cms_get0_enveloped(CMS_ContentInfo *cms) | 69 | cms_get0_enveloped(CMS_ContentInfo *cms) |
| 70 | { | 70 | { |
| 71 | if (OBJ_obj2nid(cms->contentType) != NID_pkcs7_enveloped) { | 71 | if (OBJ_obj2nid(cms->contentType) != NID_pkcs7_enveloped) { |
| 72 | CMSerr(CMS_F_CMS_GET0_ENVELOPED, | 72 | CMSerror(CMS_R_CONTENT_TYPE_NOT_ENVELOPED_DATA); |
| 73 | CMS_R_CONTENT_TYPE_NOT_ENVELOPED_DATA); | ||
| 74 | return NULL; | 73 | return NULL; |
| 75 | } | 74 | } |
| 76 | return cms->d.envelopedData; | 75 | return cms->d.envelopedData; |
| @@ -82,7 +81,7 @@ cms_enveloped_data_init(CMS_ContentInfo *cms) | |||
| 82 | if (cms->d.other == NULL) { | 81 | if (cms->d.other == NULL) { |
| 83 | cms->d.envelopedData = M_ASN1_new_of(CMS_EnvelopedData); | 82 | cms->d.envelopedData = M_ASN1_new_of(CMS_EnvelopedData); |
| 84 | if (!cms->d.envelopedData) { | 83 | if (!cms->d.envelopedData) { |
| 85 | CMSerr(CMS_F_CMS_ENVELOPED_DATA_INIT, ERR_R_MALLOC_FAILURE); | 84 | CMSerror(ERR_R_MALLOC_FAILURE); |
| 86 | return NULL; | 85 | return NULL; |
| 87 | } | 86 | } |
| 88 | cms->d.envelopedData->version = 0; | 87 | cms->d.envelopedData->version = 0; |
| @@ -116,12 +115,11 @@ cms_env_asn1_ctrl(CMS_RecipientInfo *ri, int cmd) | |||
| 116 | return 1; | 115 | return 1; |
| 117 | i = pkey->ameth->pkey_ctrl(pkey, ASN1_PKEY_CTRL_CMS_ENVELOPE, cmd, ri); | 116 | i = pkey->ameth->pkey_ctrl(pkey, ASN1_PKEY_CTRL_CMS_ENVELOPE, cmd, ri); |
| 118 | if (i == -2) { | 117 | if (i == -2) { |
| 119 | CMSerr(CMS_F_CMS_ENV_ASN1_CTRL, | 118 | CMSerror(CMS_R_NOT_SUPPORTED_FOR_THIS_KEY_TYPE); |
| 120 | CMS_R_NOT_SUPPORTED_FOR_THIS_KEY_TYPE); | ||
| 121 | return 0; | 119 | return 0; |
| 122 | } | 120 | } |
| 123 | if (i <= 0) { | 121 | if (i <= 0) { |
| 124 | CMSerr(CMS_F_CMS_ENV_ASN1_CTRL, CMS_R_CTRL_FAILURE); | 122 | CMSerror(CMS_R_CTRL_FAILURE); |
| 125 | return 0; | 123 | return 0; |
| 126 | } | 124 | } |
| 127 | 125 | ||
| @@ -177,7 +175,7 @@ CMS_EnvelopedData_create(const EVP_CIPHER *cipher) | |||
| 177 | 175 | ||
| 178 | merr: | 176 | merr: |
| 179 | CMS_ContentInfo_free(cms); | 177 | CMS_ContentInfo_free(cms); |
| 180 | CMSerr(CMS_F_CMS_ENVELOPEDDATA_CREATE, ERR_R_MALLOC_FAILURE); | 178 | CMSerror(ERR_R_MALLOC_FAILURE); |
| 181 | return NULL; | 179 | return NULL; |
| 182 | } | 180 | } |
| 183 | 181 | ||
| @@ -255,8 +253,7 @@ CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, unsigned int flags) | |||
| 255 | 253 | ||
| 256 | pk = X509_get0_pubkey(recip); | 254 | pk = X509_get0_pubkey(recip); |
| 257 | if (!pk) { | 255 | if (!pk) { |
| 258 | CMSerr(CMS_F_CMS_ADD1_RECIPIENT_CERT, | 256 | CMSerror(CMS_R_ERROR_GETTING_PUBLIC_KEY); |
| 259 | CMS_R_ERROR_GETTING_PUBLIC_KEY); | ||
| 260 | goto err; | 257 | goto err; |
| 261 | } | 258 | } |
| 262 | 259 | ||
| @@ -273,8 +270,7 @@ CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, unsigned int flags) | |||
| 273 | break; | 270 | break; |
| 274 | 271 | ||
| 275 | default: | 272 | default: |
| 276 | CMSerr(CMS_F_CMS_ADD1_RECIPIENT_CERT, | 273 | CMSerror(CMS_R_NOT_SUPPORTED_FOR_THIS_KEY_TYPE); |
| 277 | CMS_R_NOT_SUPPORTED_FOR_THIS_KEY_TYPE); | ||
| 278 | goto err; | 274 | goto err; |
| 279 | 275 | ||
| 280 | } | 276 | } |
| @@ -285,7 +281,7 @@ CMS_add1_recipient_cert(CMS_ContentInfo *cms, X509 *recip, unsigned int flags) | |||
| 285 | return ri; | 281 | return ri; |
| 286 | 282 | ||
| 287 | merr: | 283 | merr: |
| 288 | CMSerr(CMS_F_CMS_ADD1_RECIPIENT_CERT, ERR_R_MALLOC_FAILURE); | 284 | CMSerror(ERR_R_MALLOC_FAILURE); |
| 289 | err: | 285 | err: |
| 290 | M_ASN1_free_of(ri, CMS_RecipientInfo); | 286 | M_ASN1_free_of(ri, CMS_RecipientInfo); |
| 291 | return NULL; | 287 | return NULL; |
| @@ -298,7 +294,7 @@ CMS_RecipientInfo_ktri_get0_algs(CMS_RecipientInfo *ri, EVP_PKEY **pk, | |||
| 298 | CMS_KeyTransRecipientInfo *ktri; | 294 | CMS_KeyTransRecipientInfo *ktri; |
| 299 | 295 | ||
| 300 | if (ri->type != CMS_RECIPINFO_TRANS) { | 296 | if (ri->type != CMS_RECIPINFO_TRANS) { |
| 301 | CMSerr(CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_ALGS, CMS_R_NOT_KEY_TRANSPORT); | 297 | CMSerror(CMS_R_NOT_KEY_TRANSPORT); |
| 302 | return 0; | 298 | return 0; |
| 303 | } | 299 | } |
| 304 | 300 | ||
| @@ -321,8 +317,7 @@ CMS_RecipientInfo_ktri_get0_signer_id(CMS_RecipientInfo *ri, | |||
| 321 | CMS_KeyTransRecipientInfo *ktri; | 317 | CMS_KeyTransRecipientInfo *ktri; |
| 322 | 318 | ||
| 323 | if (ri->type != CMS_RECIPINFO_TRANS) { | 319 | if (ri->type != CMS_RECIPINFO_TRANS) { |
| 324 | CMSerr(CMS_F_CMS_RECIPIENTINFO_KTRI_GET0_SIGNER_ID, | 320 | CMSerror(CMS_R_NOT_KEY_TRANSPORT); |
| 325 | CMS_R_NOT_KEY_TRANSPORT); | ||
| 326 | return 0; | 321 | return 0; |
| 327 | } | 322 | } |
| 328 | ktri = ri->d.ktri; | 323 | ktri = ri->d.ktri; |
| @@ -334,8 +329,7 @@ int | |||
| 334 | CMS_RecipientInfo_ktri_cert_cmp(CMS_RecipientInfo *ri, X509 *cert) | 329 | CMS_RecipientInfo_ktri_cert_cmp(CMS_RecipientInfo *ri, X509 *cert) |
| 335 | { | 330 | { |
| 336 | if (ri->type != CMS_RECIPINFO_TRANS) { | 331 | if (ri->type != CMS_RECIPINFO_TRANS) { |
| 337 | CMSerr(CMS_F_CMS_RECIPIENTINFO_KTRI_CERT_CMP, | 332 | CMSerror(CMS_R_NOT_KEY_TRANSPORT); |
| 338 | CMS_R_NOT_KEY_TRANSPORT); | ||
| 339 | return -2; | 333 | return -2; |
| 340 | } | 334 | } |
| 341 | 335 | ||
| @@ -346,7 +340,7 @@ int | |||
| 346 | CMS_RecipientInfo_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pkey) | 340 | CMS_RecipientInfo_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pkey) |
| 347 | { | 341 | { |
| 348 | if (ri->type != CMS_RECIPINFO_TRANS) { | 342 | if (ri->type != CMS_RECIPINFO_TRANS) { |
| 349 | CMSerr(CMS_F_CMS_RECIPIENTINFO_SET0_PKEY, CMS_R_NOT_KEY_TRANSPORT); | 343 | CMSerror(CMS_R_NOT_KEY_TRANSPORT); |
| 350 | return 0; | 344 | return 0; |
| 351 | } | 345 | } |
| 352 | EVP_PKEY_free(ri->d.ktri->pkey); | 346 | EVP_PKEY_free(ri->d.ktri->pkey); |
| @@ -369,7 +363,7 @@ cms_RecipientInfo_ktri_encrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri) | |||
| 369 | int ret = 0; | 363 | int ret = 0; |
| 370 | 364 | ||
| 371 | if (ri->type != CMS_RECIPINFO_TRANS) { | 365 | if (ri->type != CMS_RECIPINFO_TRANS) { |
| 372 | CMSerr(CMS_F_CMS_RECIPIENTINFO_KTRI_ENCRYPT, CMS_R_NOT_KEY_TRANSPORT); | 366 | CMSerror(CMS_R_NOT_KEY_TRANSPORT); |
| 373 | return 0; | 367 | return 0; |
| 374 | } | 368 | } |
| 375 | ktri = ri->d.ktri; | 369 | ktri = ri->d.ktri; |
| @@ -391,7 +385,7 @@ cms_RecipientInfo_ktri_encrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri) | |||
| 391 | 385 | ||
| 392 | if (EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_ENCRYPT, | 386 | if (EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_ENCRYPT, |
| 393 | EVP_PKEY_CTRL_CMS_ENCRYPT, 0, ri) <= 0) { | 387 | EVP_PKEY_CTRL_CMS_ENCRYPT, 0, ri) <= 0) { |
| 394 | CMSerr(CMS_F_CMS_RECIPIENTINFO_KTRI_ENCRYPT, CMS_R_CTRL_ERROR); | 388 | CMSerror(CMS_R_CTRL_ERROR); |
| 395 | goto err; | 389 | goto err; |
| 396 | } | 390 | } |
| 397 | 391 | ||
| @@ -401,7 +395,7 @@ cms_RecipientInfo_ktri_encrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri) | |||
| 401 | ek = OPENSSL_malloc(eklen); | 395 | ek = OPENSSL_malloc(eklen); |
| 402 | 396 | ||
| 403 | if (ek == NULL) { | 397 | if (ek == NULL) { |
| 404 | CMSerr(CMS_F_CMS_RECIPIENTINFO_KTRI_ENCRYPT, ERR_R_MALLOC_FAILURE); | 398 | CMSerror(ERR_R_MALLOC_FAILURE); |
| 405 | goto err; | 399 | goto err; |
| 406 | } | 400 | } |
| 407 | 401 | ||
| @@ -436,7 +430,7 @@ cms_RecipientInfo_ktri_decrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri) | |||
| 436 | ec = cms->d.envelopedData->encryptedContentInfo; | 430 | ec = cms->d.envelopedData->encryptedContentInfo; |
| 437 | 431 | ||
| 438 | if (ktri->pkey == NULL) { | 432 | if (ktri->pkey == NULL) { |
| 439 | CMSerr(CMS_F_CMS_RECIPIENTINFO_KTRI_DECRYPT, CMS_R_NO_PRIVATE_KEY); | 433 | CMSerror(CMS_R_NO_PRIVATE_KEY); |
| 440 | return 0; | 434 | return 0; |
| 441 | } | 435 | } |
| 442 | 436 | ||
| @@ -452,7 +446,7 @@ cms_RecipientInfo_ktri_decrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri) | |||
| 452 | 446 | ||
| 453 | if (EVP_PKEY_CTX_ctrl(ktri->pctx, -1, EVP_PKEY_OP_DECRYPT, | 447 | if (EVP_PKEY_CTX_ctrl(ktri->pctx, -1, EVP_PKEY_OP_DECRYPT, |
| 454 | EVP_PKEY_CTRL_CMS_DECRYPT, 0, ri) <= 0) { | 448 | EVP_PKEY_CTRL_CMS_DECRYPT, 0, ri) <= 0) { |
| 455 | CMSerr(CMS_F_CMS_RECIPIENTINFO_KTRI_DECRYPT, CMS_R_CTRL_ERROR); | 449 | CMSerror(CMS_R_CTRL_ERROR); |
| 456 | goto err; | 450 | goto err; |
| 457 | } | 451 | } |
| 458 | 452 | ||
| @@ -463,13 +457,13 @@ cms_RecipientInfo_ktri_decrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri) | |||
| 463 | ek = OPENSSL_malloc(eklen); | 457 | ek = OPENSSL_malloc(eklen); |
| 464 | 458 | ||
| 465 | if (ek == NULL) { | 459 | if (ek == NULL) { |
| 466 | CMSerr(CMS_F_CMS_RECIPIENTINFO_KTRI_DECRYPT, ERR_R_MALLOC_FAILURE); | 460 | CMSerror(ERR_R_MALLOC_FAILURE); |
| 467 | goto err; | 461 | goto err; |
| 468 | } | 462 | } |
| 469 | 463 | ||
| 470 | if (EVP_PKEY_decrypt(ktri->pctx, ek, &eklen, ktri->encryptedKey->data, | 464 | if (EVP_PKEY_decrypt(ktri->pctx, ek, &eklen, ktri->encryptedKey->data, |
| 471 | ktri->encryptedKey->length) <= 0) { | 465 | ktri->encryptedKey->length) <= 0) { |
| 472 | CMSerr(CMS_F_CMS_RECIPIENTINFO_KTRI_DECRYPT, CMS_R_CMS_LIB); | 466 | CMSerror(CMS_R_CMS_LIB); |
| 473 | goto err; | 467 | goto err; |
| 474 | } | 468 | } |
| 475 | 469 | ||
| @@ -498,7 +492,7 @@ CMS_RecipientInfo_kekri_id_cmp(CMS_RecipientInfo *ri, const unsigned char *id, | |||
| 498 | CMS_KEKRecipientInfo *kekri; | 492 | CMS_KEKRecipientInfo *kekri; |
| 499 | 493 | ||
| 500 | if (ri->type != CMS_RECIPINFO_KEK) { | 494 | if (ri->type != CMS_RECIPINFO_KEK) { |
| 501 | CMSerr(CMS_F_CMS_RECIPIENTINFO_KEKRI_ID_CMP, CMS_R_NOT_KEK); | 495 | CMSerror(CMS_R_NOT_KEK); |
| 502 | return -2; | 496 | return -2; |
| 503 | } | 497 | } |
| 504 | kekri = ri->d.kekri; | 498 | kekri = ri->d.kekri; |
| @@ -558,7 +552,7 @@ CMS_add0_recipient_key(CMS_ContentInfo *cms, int nid, unsigned char *key, | |||
| 558 | break; | 552 | break; |
| 559 | 553 | ||
| 560 | default: | 554 | default: |
| 561 | CMSerr(CMS_F_CMS_ADD0_RECIPIENT_KEY, CMS_R_INVALID_KEY_LENGTH); | 555 | CMSerror(CMS_R_INVALID_KEY_LENGTH); |
| 562 | goto err; | 556 | goto err; |
| 563 | } | 557 | } |
| 564 | 558 | ||
| @@ -567,13 +561,12 @@ CMS_add0_recipient_key(CMS_ContentInfo *cms, int nid, unsigned char *key, | |||
| 567 | size_t exp_keylen = aes_wrap_keylen(nid); | 561 | size_t exp_keylen = aes_wrap_keylen(nid); |
| 568 | 562 | ||
| 569 | if (!exp_keylen) { | 563 | if (!exp_keylen) { |
| 570 | CMSerr(CMS_F_CMS_ADD0_RECIPIENT_KEY, | 564 | CMSerror(CMS_R_UNSUPPORTED_KEK_ALGORITHM); |
| 571 | CMS_R_UNSUPPORTED_KEK_ALGORITHM); | ||
| 572 | goto err; | 565 | goto err; |
| 573 | } | 566 | } |
| 574 | 567 | ||
| 575 | if (keylen != exp_keylen) { | 568 | if (keylen != exp_keylen) { |
| 576 | CMSerr(CMS_F_CMS_ADD0_RECIPIENT_KEY, CMS_R_INVALID_KEY_LENGTH); | 569 | CMSerror(CMS_R_INVALID_KEY_LENGTH); |
| 577 | goto err; | 570 | goto err; |
| 578 | } | 571 | } |
| 579 | 572 | ||
| @@ -622,7 +615,7 @@ CMS_add0_recipient_key(CMS_ContentInfo *cms, int nid, unsigned char *key, | |||
| 622 | return ri; | 615 | return ri; |
| 623 | 616 | ||
| 624 | merr: | 617 | merr: |
| 625 | CMSerr(CMS_F_CMS_ADD0_RECIPIENT_KEY, ERR_R_MALLOC_FAILURE); | 618 | CMSerror(ERR_R_MALLOC_FAILURE); |
| 626 | err: | 619 | err: |
| 627 | M_ASN1_free_of(ri, CMS_RecipientInfo); | 620 | M_ASN1_free_of(ri, CMS_RecipientInfo); |
| 628 | return NULL; | 621 | return NULL; |
| @@ -636,7 +629,7 @@ CMS_RecipientInfo_kekri_get0_id(CMS_RecipientInfo *ri, X509_ALGOR **palg, | |||
| 636 | CMS_KEKIdentifier *rkid; | 629 | CMS_KEKIdentifier *rkid; |
| 637 | 630 | ||
| 638 | if (ri->type != CMS_RECIPINFO_KEK) { | 631 | if (ri->type != CMS_RECIPINFO_KEK) { |
| 639 | CMSerr(CMS_F_CMS_RECIPIENTINFO_KEKRI_GET0_ID, CMS_R_NOT_KEK); | 632 | CMSerror(CMS_R_NOT_KEK); |
| 640 | return 0; | 633 | return 0; |
| 641 | } | 634 | } |
| 642 | rkid = ri->d.kekri->kekid; | 635 | rkid = ri->d.kekri->kekid; |
| @@ -669,7 +662,7 @@ CMS_RecipientInfo_set0_key(CMS_RecipientInfo *ri, unsigned char *key, | |||
| 669 | CMS_KEKRecipientInfo *kekri; | 662 | CMS_KEKRecipientInfo *kekri; |
| 670 | 663 | ||
| 671 | if (ri->type != CMS_RECIPINFO_KEK) { | 664 | if (ri->type != CMS_RECIPINFO_KEK) { |
| 672 | CMSerr(CMS_F_CMS_RECIPIENTINFO_SET0_KEY, CMS_R_NOT_KEK); | 665 | CMSerror(CMS_R_NOT_KEK); |
| 673 | return 0; | 666 | return 0; |
| 674 | } | 667 | } |
| 675 | 668 | ||
| @@ -695,25 +688,24 @@ cms_RecipientInfo_kekri_encrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri) | |||
| 695 | kekri = ri->d.kekri; | 688 | kekri = ri->d.kekri; |
| 696 | 689 | ||
| 697 | if (!kekri->key) { | 690 | if (!kekri->key) { |
| 698 | CMSerr(CMS_F_CMS_RECIPIENTINFO_KEKRI_ENCRYPT, CMS_R_NO_KEY); | 691 | CMSerror(CMS_R_NO_KEY); |
| 699 | return 0; | 692 | return 0; |
| 700 | } | 693 | } |
| 701 | 694 | ||
| 702 | if (AES_set_encrypt_key(kekri->key, kekri->keylen << 3, &actx)) { | 695 | if (AES_set_encrypt_key(kekri->key, kekri->keylen << 3, &actx)) { |
| 703 | CMSerr(CMS_F_CMS_RECIPIENTINFO_KEKRI_ENCRYPT, | 696 | CMSerror(CMS_R_ERROR_SETTING_KEY); |
| 704 | CMS_R_ERROR_SETTING_KEY); | ||
| 705 | goto err; | 697 | goto err; |
| 706 | } | 698 | } |
| 707 | 699 | ||
| 708 | wkey = OPENSSL_malloc(ec->keylen + 8); | 700 | wkey = OPENSSL_malloc(ec->keylen + 8); |
| 709 | if (wkey == NULL) { | 701 | if (wkey == NULL) { |
| 710 | CMSerr(CMS_F_CMS_RECIPIENTINFO_KEKRI_ENCRYPT, ERR_R_MALLOC_FAILURE); | 702 | CMSerror(ERR_R_MALLOC_FAILURE); |
| 711 | goto err; | 703 | goto err; |
| 712 | } | 704 | } |
| 713 | 705 | ||
| 714 | wkeylen = AES_wrap_key(&actx, NULL, wkey, ec->key, ec->keylen); | 706 | wkeylen = AES_wrap_key(&actx, NULL, wkey, ec->key, ec->keylen); |
| 715 | if (wkeylen <= 0) { | 707 | if (wkeylen <= 0) { |
| 716 | CMSerr(CMS_F_CMS_RECIPIENTINFO_KEKRI_ENCRYPT, CMS_R_WRAP_ERROR); | 708 | CMSerror(CMS_R_WRAP_ERROR); |
| 717 | goto err; | 709 | goto err; |
| 718 | } | 710 | } |
| 719 | 711 | ||
| @@ -745,34 +737,31 @@ cms_RecipientInfo_kekri_decrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri) | |||
| 745 | kekri = ri->d.kekri; | 737 | kekri = ri->d.kekri; |
| 746 | 738 | ||
| 747 | if (!kekri->key) { | 739 | if (!kekri->key) { |
| 748 | CMSerr(CMS_F_CMS_RECIPIENTINFO_KEKRI_DECRYPT, CMS_R_NO_KEY); | 740 | CMSerror(CMS_R_NO_KEY); |
| 749 | return 0; | 741 | return 0; |
| 750 | } | 742 | } |
| 751 | 743 | ||
| 752 | wrap_nid = OBJ_obj2nid(kekri->keyEncryptionAlgorithm->algorithm); | 744 | wrap_nid = OBJ_obj2nid(kekri->keyEncryptionAlgorithm->algorithm); |
| 753 | if (aes_wrap_keylen(wrap_nid) != kekri->keylen) { | 745 | if (aes_wrap_keylen(wrap_nid) != kekri->keylen) { |
| 754 | CMSerr(CMS_F_CMS_RECIPIENTINFO_KEKRI_DECRYPT, | 746 | CMSerror(CMS_R_INVALID_KEY_LENGTH); |
| 755 | CMS_R_INVALID_KEY_LENGTH); | ||
| 756 | return 0; | 747 | return 0; |
| 757 | } | 748 | } |
| 758 | 749 | ||
| 759 | /* If encrypted key length is invalid don't bother */ | 750 | /* If encrypted key length is invalid don't bother */ |
| 760 | 751 | ||
| 761 | if (kekri->encryptedKey->length < 16) { | 752 | if (kekri->encryptedKey->length < 16) { |
| 762 | CMSerr(CMS_F_CMS_RECIPIENTINFO_KEKRI_DECRYPT, | 753 | CMSerror(CMS_R_INVALID_ENCRYPTED_KEY_LENGTH); |
| 763 | CMS_R_INVALID_ENCRYPTED_KEY_LENGTH); | ||
| 764 | goto err; | 754 | goto err; |
| 765 | } | 755 | } |
| 766 | 756 | ||
| 767 | if (AES_set_decrypt_key(kekri->key, kekri->keylen << 3, &actx)) { | 757 | if (AES_set_decrypt_key(kekri->key, kekri->keylen << 3, &actx)) { |
| 768 | CMSerr(CMS_F_CMS_RECIPIENTINFO_KEKRI_DECRYPT, | 758 | CMSerror(CMS_R_ERROR_SETTING_KEY); |
| 769 | CMS_R_ERROR_SETTING_KEY); | ||
| 770 | goto err; | 759 | goto err; |
| 771 | } | 760 | } |
| 772 | 761 | ||
| 773 | ukey = OPENSSL_malloc(kekri->encryptedKey->length - 8); | 762 | ukey = OPENSSL_malloc(kekri->encryptedKey->length - 8); |
| 774 | if (ukey == NULL) { | 763 | if (ukey == NULL) { |
| 775 | CMSerr(CMS_F_CMS_RECIPIENTINFO_KEKRI_DECRYPT, ERR_R_MALLOC_FAILURE); | 764 | CMSerror(ERR_R_MALLOC_FAILURE); |
| 776 | goto err; | 765 | goto err; |
| 777 | } | 766 | } |
| 778 | 767 | ||
| @@ -780,7 +769,7 @@ cms_RecipientInfo_kekri_decrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri) | |||
| 780 | kekri->encryptedKey->length); | 769 | kekri->encryptedKey->length); |
| 781 | 770 | ||
| 782 | if (ukeylen <= 0) { | 771 | if (ukeylen <= 0) { |
| 783 | CMSerr(CMS_F_CMS_RECIPIENTINFO_KEKRI_DECRYPT, CMS_R_UNWRAP_ERROR); | 772 | CMSerror(CMS_R_UNWRAP_ERROR); |
| 784 | goto err; | 773 | goto err; |
| 785 | } | 774 | } |
| 786 | 775 | ||
| @@ -812,8 +801,7 @@ CMS_RecipientInfo_decrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri) | |||
| 812 | return cms_RecipientInfo_pwri_crypt(cms, ri, 0); | 801 | return cms_RecipientInfo_pwri_crypt(cms, ri, 0); |
| 813 | 802 | ||
| 814 | default: | 803 | default: |
| 815 | CMSerr(CMS_F_CMS_RECIPIENTINFO_DECRYPT, | 804 | CMSerror(CMS_R_UNSUPPORTED_RECIPIENTINFO_TYPE); |
| 816 | CMS_R_UNSUPPORTED_RECIPIENTINFO_TYPE); | ||
| 817 | return 0; | 805 | return 0; |
| 818 | } | 806 | } |
| 819 | } | 807 | } |
| @@ -835,8 +823,7 @@ CMS_RecipientInfo_encrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri) | |||
| 835 | return cms_RecipientInfo_pwri_crypt(cms, ri, 1); | 823 | return cms_RecipientInfo_pwri_crypt(cms, ri, 1); |
| 836 | 824 | ||
| 837 | default: | 825 | default: |
| 838 | CMSerr(CMS_F_CMS_RECIPIENTINFO_ENCRYPT, | 826 | CMSerror(CMS_R_UNSUPPORTED_RECIPIENT_TYPE); |
| 839 | CMS_R_UNSUPPORTED_RECIPIENT_TYPE); | ||
| 840 | return 0; | 827 | return 0; |
| 841 | } | 828 | } |
| 842 | } | 829 | } |
| @@ -935,8 +922,7 @@ cms_EnvelopedData_init_bio(CMS_ContentInfo *cms) | |||
| 935 | for (i = 0; i < sk_CMS_RecipientInfo_num(rinfos); i++) { | 922 | for (i = 0; i < sk_CMS_RecipientInfo_num(rinfos); i++) { |
| 936 | ri = sk_CMS_RecipientInfo_value(rinfos, i); | 923 | ri = sk_CMS_RecipientInfo_value(rinfos, i); |
| 937 | if (CMS_RecipientInfo_encrypt(cms, ri) <= 0) { | 924 | if (CMS_RecipientInfo_encrypt(cms, ri) <= 0) { |
| 938 | CMSerr(CMS_F_CMS_ENVELOPEDDATA_INIT_BIO, | 925 | CMSerror(CMS_R_ERROR_SETTING_RECIPIENTINFO); |
| 939 | CMS_R_ERROR_SETTING_RECIPIENTINFO); | ||
| 940 | goto err; | 926 | goto err; |
| 941 | } | 927 | } |
| 942 | } | 928 | } |
