summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/cms/cms_ess.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/cms/cms_ess.c')
-rw-r--r--src/lib/libcrypto/cms/cms_ess.c36
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
64IMPLEMENT_ASN1_FUNCTIONS(CMS_ReceiptRequest) 64
65CMS_ReceiptRequest *
66d2i_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
72int
73i2d_CMS_ReceiptRequest(CMS_ReceiptRequest *a, unsigned char **out)
74{
75 return ASN1_item_i2d((ASN1_VALUE *)a, out, &CMS_ReceiptRequest_it);
76}
77
78CMS_ReceiptRequest *
79CMS_ReceiptRequest_new(void)
80{
81 return (CMS_ReceiptRequest *)ASN1_item_new(&CMS_ReceiptRequest_it);
82}
83
84void
85CMS_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);