1- From 7b76c3c5427708f06d1be3d20de60679f7cc2097 Mon Sep 17 00:00:00 2001
1+ From 0500e2f930ea4505ab22a625af4949d23e7e78b1 Mon Sep 17 00:00:00 2001
22From: redacted <redacted>
3- Date: Wed, 1 Oct 2025 12:45:25 +0200
4- Subject: [PATCH 2/2] 3.0.18 -erp-cms-counter-signature.patch
3+ Date: Wed, 28 Jan 2026 16:01:13 +0100
4+ Subject: [PATCH 2/2] 3.0.19 -erp-cms-counter-signature.patch
55
66---
7- crypto/cms/cms_att.c | 3 +-
8- crypto/cms/cms_sd.c | 237 ++++++++++++++++++++++++++++++++++- ----
7+ crypto/cms/cms_att.c | 2 +-
8+ crypto/cms/cms_sd.c | 233 +++++++++++++++++++++++++++++++++++ ----
99 include/openssl/cms.h.in | 5 +
10- 3 files changed, 217 insertions(+), 28 deletions(-)
10+ 3 files changed, 217 insertions(+), 23 deletions(-)
1111
1212diff --git a/crypto/cms/cms_att.c b/crypto/cms/cms_att.c
13- index 64acda7..18ae55c 100644
13+ index 86852af..cbe760c 100644
1414--- a/crypto/cms/cms_att.c
1515+++ b/crypto/cms/cms_att.c
16- @@ -43,8 +43,7 @@ static const struct {
16+ @@ -41,7 +41,7 @@ static const struct {
17+ int flags;
18+ } cms_attribute_properties[] = {
1719 /* See RFC Section 11 */
18- { NID_pkcs9_contentType, CMS_ATTR_F_SIGNED
19- | CMS_ATTR_F_ONLY_ONE
20- - | CMS_ATTR_F_ONE_ATTR_VALUE
21- - | CMS_ATTR_F_REQUIRED_COND },
22- + | CMS_ATTR_F_ONE_ATTR_VALUE },
23- { NID_pkcs9_messageDigest, CMS_ATTR_F_SIGNED
24- | CMS_ATTR_F_ONLY_ONE
25- | CMS_ATTR_F_ONE_ATTR_VALUE
20+ - { NID_pkcs9_contentType, CMS_ATTR_F_SIGNED | CMS_ATTR_F_ONLY_ONE | CMS_ATTR_F_ONE_ATTR_VALUE | CMS_ATTR_F_REQUIRED_COND },
21+ + { NID_pkcs9_contentType, CMS_ATTR_F_SIGNED | CMS_ATTR_F_ONLY_ONE | CMS_ATTR_F_ONE_ATTR_VALUE },
22+ { NID_pkcs9_messageDigest, CMS_ATTR_F_SIGNED | CMS_ATTR_F_ONLY_ONE | CMS_ATTR_F_ONE_ATTR_VALUE | CMS_ATTR_F_REQUIRED_COND },
23+ { NID_pkcs9_signingTime, CMS_ATTR_F_SIGNED | CMS_ATTR_F_ONLY_ONE | CMS_ATTR_F_ONE_ATTR_VALUE },
24+ { NID_pkcs9_countersignature, CMS_ATTR_F_UNSIGNED },
2625diff --git a/crypto/cms/cms_sd.c b/crypto/cms/cms_sd.c
27- index 4758d04..7016ea2 100644
26+ index e6ba17c..c562976 100644
2827--- a/crypto/cms/cms_sd.c
2928+++ b/crypto/cms/cms_sd.c
30- @@ -302 ,23 +302 ,15 @@ static int ossl_cms_add1_signing_cert_v2(CMS_SignerInfo *si,
29+ @@ -299 ,23 +299 ,15 @@ static int ossl_cms_add1_signing_cert_v2(CMS_SignerInfo *si,
3130 return ret;
3231 }
3332
3433- CMS_SignerInfo *CMS_add1_signer(CMS_ContentInfo *cms,
35- - X509 *signer, EVP_PKEY *pk, const EVP_MD *md,
36- - unsigned int flags)
34+ - X509 *signer, EVP_PKEY *pk, const EVP_MD *md,
35+ - unsigned int flags)
3736+ /* Creates and partially initializes a new signer info and adjusts signed data in CMS,
3837+ * but still do not add it to CMS directly */
3938+ CMS_SignerInfo *cms_SignerInfo_init(CMS_SignedData *sd,
@@ -57,7 +56,7 @@ index 4758d04..7016ea2 100644
5756 si = M_ASN1_new_of(CMS_SignerInfo);
5857 if (!si)
5958 goto merr;
60- @@ -352 ,7 +344 ,7 @@ CMS_SignerInfo *CMS_add1_signer(CMS_ContentInfo *cms,
59+ @@ -349 ,7 +341 ,7 @@ CMS_SignerInfo *CMS_add1_signer(CMS_ContentInfo *cms,
6160 if (!ossl_cms_set1_SignerIdentifier(si->sid, signer, type, ctx))
6261 goto err;
6362
@@ -66,16 +65,16 @@ index 4758d04..7016ea2 100644
6665 int def_nid;
6766
6867 if (EVP_PKEY_get_default_digest_nid(pk, &def_nid) <= 0) {
69- @@ -360 ,25 +352,42 @@ CMS_SignerInfo *CMS_add1_signer(CMS_ContentInfo *cms,
70- "pkey nid=%d", EVP_PKEY_get_id(pk));
68+ @@ -357 ,25 +349,46 @@ CMS_SignerInfo *CMS_add1_signer(CMS_ContentInfo *cms,
69+ "pkey nid=%d", EVP_PKEY_get_id(pk));
7170 goto err;
7271 }
7372- md = EVP_get_digestbynid(def_nid);
7473- if (md == NULL) {
7574+ *md = EVP_get_digestbynid(def_nid);
7675+ if (*md == NULL) {
7776 ERR_raise_data(ERR_LIB_CMS, CMS_R_NO_DEFAULT_DIGEST,
78- "default md nid=%d", def_nid);
77+ "default md nid=%d", def_nid);
7978 goto err;
8079 }
8180 }
@@ -87,10 +86,10 @@ index 4758d04..7016ea2 100644
8786+ X509_ALGOR_set_md(si->digestAlgorithm, *md);
8887+ return si;
8988
90- - if (md == NULL) {
91- - ERR_raise(ERR_LIB_CMS, CMS_R_NO_DIGEST_SET);
92- - goto err;
93- - }
89+ if (md == NULL) {
90+ ERR_raise(ERR_LIB_CMS, CMS_R_NO_DIGEST_SET);
91+ goto err;
92+ }
9493+ merr:
9594+ ERR_raise(ERR_LIB_CMS, ERR_R_MALLOC_FAILURE);
9695+ err:
@@ -120,7 +119,7 @@ index 4758d04..7016ea2 100644
120119
121120 /* See if digest is present in digestAlgorithms */
122121 for (i = 0; i < sk_X509_ALGOR_num(sd->digestAlgorithms); i++) {
123- @@ -1114 ,3 +1123 ,179 @@ int CMS_add_standard_smimecap(STACK_OF(X509_ALGOR) **smcap)
122+ @@ -1112 ,3 +1125 ,179 @@ int CMS_add_standard_smimecap(STACK_OF(X509_ALGOR) **smcap)
124123 return 0;
125124 return 1;
126125 }
@@ -301,27 +300,27 @@ index 4758d04..7016ea2 100644
301300+
302301+ }
303302diff --git a/include/openssl/cms.h.in b/include/openssl/cms.h.in
304- index cb24d82..18c3e14 100644
303+ index c3c2cca..60a425a 100644
305304--- a/include/openssl/cms.h.in
306305+++ b/include/openssl/cms.h.in
307- @@ -50 ,6 +50 ,7 @@ typedef struct CMS_OtherKeyAttribute_st CMS_OtherKeyAttribute;
308- -}
306+ @@ -54 ,6 +54 ,7 @@ typedef struct CMS_OtherKeyAttribute_st CMS_OtherKeyAttribute;
307+ /* clang-format on */
309308
310309 DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo)
311310+ DECLARE_ASN1_FUNCTIONS(CMS_SignerInfo)
312311 DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest)
313312 DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo)
314313
315- @@ -391 ,6 +392 ,10 @@ int CMS_RecipientInfo_kari_decrypt(CMS_ContentInfo *cms,
314+ @@ -395 ,6 +396 ,10 @@ int CMS_RecipientInfo_kari_decrypt(CMS_ContentInfo *cms,
316315 int CMS_SharedInfo_encode(unsigned char **pder, X509_ALGOR *kekalg,
317- ASN1_OCTET_STRING *ukm, int keylen);
316+ ASN1_OCTET_STRING *ukm, int keylen);
318317
319318+ int CMS_add1_counter_signature(CMS_SignerInfo *si, CMS_ContentInfo* cms,
320319+ X509 *signer, EVP_PKEY *pk, const EVP_MD *md,
321320+ unsigned int flags);
322321+
323322 /* Backward compatibility for spelling errors. */
324- # define CMS_R_UNKNOWN_DIGEST_ALGORITM CMS_R_UNKNOWN_DIGEST_ALGORITHM
325- # define CMS_R_UNSUPPORTED_RECPIENTINFO_TYPE \
323+ #define CMS_R_UNKNOWN_DIGEST_ALGORITM CMS_R_UNKNOWN_DIGEST_ALGORITHM
324+ #define CMS_R_UNSUPPORTED_RECPIENTINFO_TYPE \
326325- -
327- 2.43 .0
326+ 2.51 .0
0 commit comments