diff options
Diffstat (limited to 'src/lib/libcrypto/cms/cms_ess.c')
| -rw-r--r-- | src/lib/libcrypto/cms/cms_ess.c | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/src/lib/libcrypto/cms/cms_ess.c b/src/lib/libcrypto/cms/cms_ess.c index abfd170bb4..5f0ab4995b 100644 --- a/src/lib/libcrypto/cms/cms_ess.c +++ b/src/lib/libcrypto/cms/cms_ess.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: cms_ess.c,v 1.14 2019/08/10 18:15:52 jsing Exp $ */ | 1 | /* $OpenBSD: cms_ess.c,v 1.15 2019/08/11 10:15:30 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. |
| @@ -61,7 +61,31 @@ | |||
| 61 | #include <openssl/cms.h> | 61 | #include <openssl/cms.h> |
| 62 | #include "cms_lcl.h" | 62 | #include "cms_lcl.h" |
| 63 | 63 | ||
| 64 | IMPLEMENT_ASN1_FUNCTIONS(CMS_ReceiptRequest) | 64 | |
| 65 | CMS_ReceiptRequest * | ||
| 66 | d2i_CMS_ReceiptRequest(CMS_ReceiptRequest **a, const unsigned char **in, long len) | ||
| 67 | { | ||
| 68 | return (CMS_ReceiptRequest *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, | ||
| 69 | &CMS_ReceiptRequest_it); | ||
| 70 | } | ||
| 71 | |||
| 72 | int | ||
| 73 | i2d_CMS_ReceiptRequest(CMS_ReceiptRequest *a, unsigned char **out) | ||
| 74 | { | ||
| 75 | return ASN1_item_i2d((ASN1_VALUE *)a, out, &CMS_ReceiptRequest_it); | ||
| 76 | } | ||
| 77 | |||
| 78 | CMS_ReceiptRequest * | ||
| 79 | CMS_ReceiptRequest_new(void) | ||
| 80 | { | ||
| 81 | return (CMS_ReceiptRequest *)ASN1_item_new(&CMS_ReceiptRequest_it); | ||
| 82 | } | ||
| 83 | |||
| 84 | void | ||
| 85 | CMS_ReceiptRequest_free(CMS_ReceiptRequest *a) | ||
| 86 | { | ||
| 87 | ASN1_item_free((ASN1_VALUE *)a, &CMS_ReceiptRequest_it); | ||
| 88 | } | ||
| 65 | 89 | ||
| 66 | /* ESS services: for now just Signed Receipt related */ | 90 | /* ESS services: for now just Signed Receipt related */ |
| 67 | 91 | ||
| @@ -78,7 +102,7 @@ CMS_get1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest **prr) | |||
| 78 | if (!str) | 102 | if (!str) |
| 79 | return 0; | 103 | return 0; |
| 80 | 104 | ||
| 81 | rr = ASN1_item_unpack(str, ASN1_ITEM_rptr(CMS_ReceiptRequest)); | 105 | rr = ASN1_item_unpack(str, &CMS_ReceiptRequest_it); |
| 82 | if (!rr) | 106 | if (!rr) |
| 83 | return -1; | 107 | return -1; |
| 84 | if (prr) | 108 | if (prr) |
| @@ -185,7 +209,7 @@ cms_msgSigDigest(CMS_SignerInfo *si, unsigned char *dig, unsigned int *diglen) | |||
| 185 | md = EVP_get_digestbyobj(si->digestAlgorithm->algorithm); | 209 | md = EVP_get_digestbyobj(si->digestAlgorithm->algorithm); |
| 186 | if (md == NULL) | 210 | if (md == NULL) |
| 187 | return 0; | 211 | return 0; |
| 188 | if (!ASN1_item_digest(ASN1_ITEM_rptr(CMS_Attributes_Verify), md, | 212 | if (!ASN1_item_digest(&CMS_Attributes_Verify_it, md, |
| 189 | si->signedAttrs, dig, diglen)) | 213 | si->signedAttrs, dig, diglen)) |
| 190 | return 0; | 214 | return 0; |
| 191 | 215 | ||
| @@ -252,7 +276,7 @@ cms_Receipt_verify(CMS_ContentInfo *cms, CMS_ContentInfo *req_cms) | |||
| 252 | goto err; | 276 | goto err; |
| 253 | } | 277 | } |
| 254 | 278 | ||
| 255 | rct = ASN1_item_unpack(*pcont, ASN1_ITEM_rptr(CMS_Receipt)); | 279 | rct = ASN1_item_unpack(*pcont, &CMS_Receipt_it); |
| 256 | 280 | ||
| 257 | if (!rct) { | 281 | if (!rct) { |
| 258 | CMSerr(CMS_F_CMS_RECEIPT_VERIFY, CMS_R_RECEIPT_DECODE_ERROR); | 282 | CMSerr(CMS_F_CMS_RECEIPT_VERIFY, CMS_R_RECEIPT_DECODE_ERROR); |
| @@ -373,7 +397,7 @@ cms_encode_Receipt(CMS_SignerInfo *si) | |||
| 373 | rct.signedContentIdentifier = rr->signedContentIdentifier; | 397 | rct.signedContentIdentifier = rr->signedContentIdentifier; |
| 374 | rct.originatorSignatureValue = si->signature; | 398 | rct.originatorSignatureValue = si->signature; |
| 375 | 399 | ||
| 376 | os = ASN1_item_pack(&rct, ASN1_ITEM_rptr(CMS_Receipt), NULL); | 400 | os = ASN1_item_pack(&rct, &CMS_Receipt_it, NULL); |
| 377 | 401 | ||
| 378 | err: | 402 | err: |
| 379 | CMS_ReceiptRequest_free(rr); | 403 | CMS_ReceiptRequest_free(rr); |
