summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/libcrypto/pkcs7/pk7_attr.c30
1 files changed, 18 insertions, 12 deletions
diff --git a/src/lib/libcrypto/pkcs7/pk7_attr.c b/src/lib/libcrypto/pkcs7/pk7_attr.c
index ceaba9138d..8b6fbf9d23 100644
--- a/src/lib/libcrypto/pkcs7/pk7_attr.c
+++ b/src/lib/libcrypto/pkcs7/pk7_attr.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: pk7_attr.c,v 1.20 2025/07/31 02:10:55 tb Exp $ */ 1/* $OpenBSD: pk7_attr.c,v 1.21 2025/07/31 02:21:01 tb Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 2001. 3 * project 2001.
4 */ 4 */
@@ -203,19 +203,25 @@ LCRYPTO_ALIAS(PKCS7_add0_attrib_signing_time);
203 203
204int 204int
205PKCS7_add1_attrib_digest(PKCS7_SIGNER_INFO *si, const unsigned char *md, 205PKCS7_add1_attrib_digest(PKCS7_SIGNER_INFO *si, const unsigned char *md,
206 int mdlen) 206 int md_len)
207{ 207{
208 ASN1_OCTET_STRING *os; 208 ASN1_OCTET_STRING *os;
209 int ret = 0;
209 210
210 os = ASN1_OCTET_STRING_new(); 211 if ((os = ASN1_OCTET_STRING_new()) == NULL)
211 if (!os) 212 goto err;
212 return 0; 213 if (!ASN1_STRING_set(os, md, md_len))
213 if (!ASN1_STRING_set(os, md, mdlen) || 214 goto err;
214 !PKCS7_add_signed_attribute(si, NID_pkcs9_messageDigest, 215 if (!PKCS7_add_signed_attribute(si, NID_pkcs9_messageDigest,
215 V_ASN1_OCTET_STRING, os)) { 216 V_ASN1_OCTET_STRING, os))
216 ASN1_OCTET_STRING_free(os); 217 goto err;
217 return 0; 218 os = NULL;
218 } 219
219 return 1; 220 ret = 1;
221
222 err:
223 ASN1_OCTET_STRING_free(os);
224
225 return ret;
220} 226}
221LCRYPTO_ALIAS(PKCS7_add1_attrib_digest); 227LCRYPTO_ALIAS(PKCS7_add1_attrib_digest);