summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/libcrypto/cms/cms_lib.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/lib/libcrypto/cms/cms_lib.c b/src/lib/libcrypto/cms/cms_lib.c
index 389bc3d06e..b6580dd6f5 100644
--- a/src/lib/libcrypto/cms/cms_lib.c
+++ b/src/lib/libcrypto/cms/cms_lib.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: cms_lib.c,v 1.13 2019/08/11 11:04:18 jsing Exp $ */ 1/* $OpenBSD: cms_lib.c,v 1.14 2019/08/12 18:13:13 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.
@@ -642,6 +642,14 @@ CMS_get1_crls(CMS_ContentInfo *cms)
642 return crls; 642 return crls;
643} 643}
644 644
645static const ASN1_OCTET_STRING *
646cms_X509_get0_subject_key_id(X509 *x)
647{
648 /* Call for side-effect of computing hash and caching extensions */
649 X509_check_purpose(x, -1, -1);
650 return x->skid;
651}
652
645int 653int
646cms_ias_cert_cmp(CMS_IssuerAndSerialNumber *ias, X509 *cert) 654cms_ias_cert_cmp(CMS_IssuerAndSerialNumber *ias, X509 *cert)
647{ 655{
@@ -657,7 +665,7 @@ cms_ias_cert_cmp(CMS_IssuerAndSerialNumber *ias, X509 *cert)
657int 665int
658cms_keyid_cert_cmp(ASN1_OCTET_STRING *keyid, X509 *cert) 666cms_keyid_cert_cmp(ASN1_OCTET_STRING *keyid, X509 *cert)
659{ 667{
660 const ASN1_OCTET_STRING *cert_keyid = X509_get0_subject_key_id(cert); 668 const ASN1_OCTET_STRING *cert_keyid = cms_X509_get0_subject_key_id(cert);
661 669
662 if (cert_keyid == NULL) 670 if (cert_keyid == NULL)
663 return -1; 671 return -1;
@@ -695,7 +703,7 @@ cms_set1_keyid(ASN1_OCTET_STRING **pkeyid, X509 *cert)
695 ASN1_OCTET_STRING *keyid = NULL; 703 ASN1_OCTET_STRING *keyid = NULL;
696 const ASN1_OCTET_STRING *cert_keyid; 704 const ASN1_OCTET_STRING *cert_keyid;
697 705
698 cert_keyid = X509_get0_subject_key_id(cert); 706 cert_keyid = cms_X509_get0_subject_key_id(cert);
699 if (cert_keyid == NULL) { 707 if (cert_keyid == NULL) {
700 CMSerror(CMS_R_CERTIFICATE_HAS_NO_KEYID); 708 CMSerror(CMS_R_CERTIFICATE_HAS_NO_KEYID);
701 return 0; 709 return 0;