summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/x509/x509_purp.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/x509/x509_purp.c')
-rw-r--r--src/lib/libcrypto/x509/x509_purp.c33
1 files changed, 2 insertions, 31 deletions
diff --git a/src/lib/libcrypto/x509/x509_purp.c b/src/lib/libcrypto/x509/x509_purp.c
index 176d9d679f..621f6f0f90 100644
--- a/src/lib/libcrypto/x509/x509_purp.c
+++ b/src/lib/libcrypto/x509/x509_purp.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x509_purp.c,v 1.21 2023/02/16 10:18:59 tb Exp $ */ 1/* $OpenBSD: x509_purp.c,v 1.22 2023/04/16 08:06:42 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 */
@@ -380,7 +380,6 @@ X509_supported_extension(X509_EXTENSION *ex)
380 NID_sbgp_autonomousSysNum, /* 291 */ 380 NID_sbgp_autonomousSysNum, /* 291 */
381#endif 381#endif
382 NID_policy_constraints, /* 401 */ 382 NID_policy_constraints, /* 401 */
383 NID_proxyCertInfo, /* 663 */
384 NID_name_constraints, /* 666 */ 383 NID_name_constraints, /* 666 */
385 NID_policy_mappings, /* 747 */ 384 NID_policy_mappings, /* 747 */
386 NID_inhibit_any_policy /* 748 */ 385 NID_inhibit_any_policy /* 748 */
@@ -446,7 +445,6 @@ static void
446x509v3_cache_extensions_internal(X509 *x) 445x509v3_cache_extensions_internal(X509 *x)
447{ 446{
448 BASIC_CONSTRAINTS *bs; 447 BASIC_CONSTRAINTS *bs;
449 PROXY_CERT_INFO_EXTENSION *pci;
450 ASN1_BIT_STRING *usage; 448 ASN1_BIT_STRING *usage;
451 ASN1_BIT_STRING *ns; 449 ASN1_BIT_STRING *ns;
452 EXTENDED_KEY_USAGE *extusage; 450 EXTENDED_KEY_USAGE *extusage;
@@ -481,30 +479,6 @@ x509v3_cache_extensions_internal(X509 *x)
481 x->ex_flags |= EXFLAG_INVALID; 479 x->ex_flags |= EXFLAG_INVALID;
482 } 480 }
483 481
484 /* Handle proxy certificates */
485 if ((pci = X509_get_ext_d2i(x, NID_proxyCertInfo, &i, NULL))) {
486 if (x->ex_flags & EXFLAG_CA ||
487 X509_get_ext_by_NID(x, NID_subject_alt_name, -1) >= 0 ||
488 X509_get_ext_by_NID(x, NID_issuer_alt_name, -1) >= 0) {
489 x->ex_flags |= EXFLAG_INVALID;
490 }
491 if (pci->pcPathLengthConstraint) {
492 if (pci->pcPathLengthConstraint->type ==
493 V_ASN1_NEG_INTEGER) {
494 x->ex_flags |= EXFLAG_INVALID;
495 x->ex_pcpathlen = 0;
496 } else
497 x->ex_pcpathlen =
498 ASN1_INTEGER_get(pci->
499 pcPathLengthConstraint);
500 } else
501 x->ex_pcpathlen = -1;
502 PROXY_CERT_INFO_EXTENSION_free(pci);
503 x->ex_flags |= EXFLAG_PROXY;
504 } else if (i != -1) {
505 x->ex_flags |= EXFLAG_INVALID;
506 }
507
508 /* Handle key usage */ 482 /* Handle key usage */
509 if ((usage = X509_get_ext_d2i(x, NID_key_usage, &i, NULL))) { 483 if ((usage = X509_get_ext_d2i(x, NID_key_usage, &i, NULL))) {
510 if (usage->length > 0) { 484 if (usage->length > 0) {
@@ -908,10 +882,7 @@ X509_check_issued(X509 *issuer, X509 *subject)
908 return ret; 882 return ret;
909 } 883 }
910 884
911 if (subject->ex_flags & EXFLAG_PROXY) { 885 if (ku_reject(issuer, KU_KEY_CERT_SIGN))
912 if (ku_reject(issuer, KU_DIGITAL_SIGNATURE))
913 return X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE;
914 } else if (ku_reject(issuer, KU_KEY_CERT_SIGN))
915 return X509_V_ERR_KEYUSAGE_NO_CERTSIGN; 886 return X509_V_ERR_KEYUSAGE_NO_CERTSIGN;
916 return X509_V_OK; 887 return X509_V_OK;
917} 888}