File 2292-Prune-OTP-PKIX-Relaxed.patch of Package erlang

From 86091e133842d8b9283cbfaf6cfad9efd7421c61 Mon Sep 17 00:00:00 2001
From: Jan Uhlig <juhlig@hnc-agency.org>
Date: Tue, 30 Sep 2025 17:07:26 +0200
Subject: [PATCH 2/3] Prune OTP-PKIX-Relaxed

---
 lib/public_key/asn1/OTP-PKIX-Relaxed.asn1  | 165 ++++-----------------
 lib/public_key/src/pubkey_cert_records.erl |   2 +-
 2 files changed, 29 insertions(+), 138 deletions(-)

diff --git a/lib/public_key/asn1/OTP-PKIX-Relaxed.asn1 b/lib/public_key/asn1/OTP-PKIX-Relaxed.asn1
index a994b5dfe7..01c2aa81e8 100644
--- a/lib/public_key/asn1/OTP-PKIX-Relaxed.asn1
+++ b/lib/public_key/asn1/OTP-PKIX-Relaxed.asn1
@@ -32,11 +32,6 @@ IMPORTS
         ATTRIBUTE, Extensions{}, SingleAttribute
         FROM PKIX-CommonTypes-2009
 
-	CertificateSerialNumber, CertExtensions{}, NoticeReference
-	FROM PKIX1Implicit-2009
-	{iso(1) identified-organization(3) dod(6) internet(1) security(5)
-	mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-implicit-02(59)}
-
        at-name, at-surname, at-givenName, at-initials, at-generationQualifier,
        at-x520CommonName, at-x520LocalityName, at-x520StateOrProvinceName,
        at-x520OrganizationName, at-x520OrganizationalUnitName, at-x520Title,
@@ -47,90 +42,41 @@ IMPORTS
        id-at-organizationalUnitName, id-at-title, id-at-countryName, id-at-serialNumber,
        id-at-pseudonym, id-emailAddress,
        ub-name, ub-common-name, ub-locality-name, ub-state-name, ub-organization-name,
-       ub-organizational-unit-name, ub-title, ub-serial-number, ub-pseudonym, ub-emailaddress-length,
-       Validity, Version, SubjectPublicKeyInfo,
-       UniqueIdentifier,
-       id-qt-unotice, id-qt-cps
+       ub-organizational-unit-name, ub-title, ub-serial-number, ub-pseudonym, ub-emailaddress-length
        FROM PKIX1Explicit-2009
        {iso(1) identified-organization(3) dod(6) internet(1)
 	security(5) mechanisms(5) pkix(7) id-mod(0)
-	id-mod-pkix1-explicit-02(51)}
-
-	--Keys and Signatures
-        dsa-with-sha1, DSA-Sig-Value, mda-sha1, pk-dsa, DSA-Params
-        FROM PKIXAlgs-2009
-
-	AlgorithmIdentifier{}, SIGNATURE-ALGORITHM
-	FROM AlgorithmInformation-2009
-	{iso(1) identified-organization(3) dod(6) internet(1) security(5)
-	mechanisms(5) pkix(7) id-mod(0)
-	id-mod-algorithmInformation-02(58)};
+	id-mod-pkix1-explicit-02(51)};
 --
 -- Certificate
 --
 
 OTPCertificate  ::=  SEQUENCE  {
      tbsCertificate       OTPTBSCertificate,
-     signatureAlgorithm    AlgorithmIdentifier{SIGNATURE-ALGORITHM,
-                                    { OTPSignatureAlgorithms }},
+     signatureAlgorithm    OTP-PKIX.AlgorithmIdentifier{OTP-PKIX.SIGNATURE-ALGORITHM,
+                                                        { OTP-PKIX.OTPSignatureAlgorithms }},
      signature            BIT STRING  }
 
 OTPTBSCertificate  ::=  SEQUENCE  {
-     version         [0]  Version DEFAULT v1,
-     serialNumber         CertificateSerialNumber,
-     signature            AlgorithmIdentifier{SIGNATURE-ALGORITHM,
-                                    { OTPSignatureAlgorithms }},
+     version         [0]  OTP-PKIX.Version DEFAULT v1,
+     serialNumber         OTP-PKIX.CertificateSerialNumber,
+     signature            OTP-PKIX.AlgorithmIdentifier{OTP-PKIX.SIGNATURE-ALGORITHM,
+                                                       { OTP-PKIX.OTPSignatureAlgorithms }},
      issuer               OTPName,
-     validity             Validity,
+     validity             OTP-PKIX.Validity,
      subject              OTPName,
-     subjectPublicKeyInfo SubjectPublicKeyInfo,
+     subjectPublicKeyInfo OTP-PKIX.SubjectPublicKeyInfo,
      ... ,
       [[2:               -- If present, version MUST be v2
-      issuerUniqueID  [1]  IMPLICIT UniqueIdentifier OPTIONAL,
-      subjectUniqueID [2]  IMPLICIT UniqueIdentifier OPTIONAL
+      issuerUniqueID  [1]  IMPLICIT OTP-PKIX.UniqueIdentifier OPTIONAL,
+      subjectUniqueID [2]  IMPLICIT OTP-PKIX.UniqueIdentifier OPTIONAL
       ]],
       [[3:               -- If present, version MUST be v3 --
-      extensions      [3]  Extensions{{CertExtensions}} OPTIONAL
+      extensions      [3]  Extensions{{OTP-PKIX.CertExtensions}} OPTIONAL
       ]], ... }
 
--- Here follows a workaround to handle very old certificates.
-
-OTPSignatureAlgorithms SIGNATURE-ALGORITHM ::= {
-    OTPSignatureAlgs, ...,
-    PKIX1-PSS-OAEP-Algorithms-2009.SignatureAlgs }
-
-OTPSignatureAlgs SIGNATURE-ALGORITHM ::= {
-  PKIXAlgs-2009.sa-rsaWithMD2      |
-  PKIXAlgs-2009.sa-rsaWithMD5      |
-  PKIXAlgs-2009.sa-rsaWithSHA1     |
-  otp-sa-dsaWithSHA1               |
-  PKIXAlgs-2009.sa-ecdsaWithSHA1,
-  ..., -- Extensible
-  PKIXAlgs-2009.sa-dsaWithSHA224   |
-  PKIXAlgs-2009.sa-dsaWithSHA256   |
-  PKIXAlgs-2009.sa-ecdsaWithSHA224 |
-  PKIXAlgs-2009.sa-ecdsaWithSHA256 |
-  PKIXAlgs-2009.sa-ecdsaWithSHA384 |
-  PKIXAlgs-2009.sa-ecdsaWithSHA512
-}
-
-otp-sa-dsaWithSHA1 SIGNATURE-ALGORITHM ::= {
-  IDENTIFIER dsa-with-sha1
-  VALUE DSA-Sig-Value
--- Allow DSA-Params as well as NULL here.
-  PARAMS TYPE OTP-DSA-Params-Or-NULL ARE absent
-  HASHES { mda-sha1 }
-  PUBLIC-KEYS { pk-dsa }
-  SMIME-CAPS { IDENTIFIED BY dsa-with-sha1 }
-}
-
-OTP-DSA-Params-Or-NULL ::= CHOICE {
-  present DSA-Params,           -- Only in very old certificates.
-  absent NULL
-}
-
--- OTPName can contain country name and email addresses that don't
--- follow the standard.
+-- OTPName can contain empty RDNs that don't follow the standard
+-- but seem to be generally accepted.
 
 OTPName ::= CHOICE {
     rdnSequence  RDNSequence }
@@ -226,74 +172,19 @@ OTP-emailAddress ::= CHOICE {
     wrong   UTF8String
 }
 
--- We use this variation of SingleAttribute/AttributeTypeAndValue
--- when calculating the "short" hash of the certificate issuer.
--- See public_key:short_name_hash/1.
-
-HashSingleAttribute ::= SEQUENCE {
-    type      OBJECT IDENTIFIER,
-    value     UTF8String
-}
-
-HashRDNSequence ::= SEQUENCE OF HashRelativeDistinguishedName
-
-HashRelativeDistinguishedName  ::=
-      SET SIZE (1 .. MAX) OF HashSingleAttribute
-
--- Used to workaround that some CAs create too long User Notices
-
-OTPCertificatePolicies ::= SEQUENCE SIZE (1..MAX) OF OTPPolicyInformation
-
-OTPPolicyInformation ::= SEQUENCE {
-     policyIdentifier   CertPolicyId,
-     policyQualifiers   SEQUENCE SIZE (1..MAX) OF
-                OTPPolicyQualifierInfo OPTIONAL }
-
-CertPolicyId ::= OBJECT IDENTIFIER
-
-CERT-POLICY-QUALIFIER ::= TYPE-IDENTIFIER
-
-OTPPolicyQualifierInfo ::= SEQUENCE {
-       policyQualifierId  CERT-POLICY-QUALIFIER.
-            &id({PolicyQualifierId}),
-       qualifier          CERT-POLICY-QUALIFIER.
-            &Type({PolicyQualifierId}{@policyQualifierId})}
-
--- Implementations that recognize additional policy qualifiers MUST
--- augment the following definition for PolicyQualifierId
-
-PolicyQualifierId CERT-POLICY-QUALIFIER ::=
-    { pqid-cps | pqid-unotice, ... }
-
-pqid-cps CERT-POLICY-QUALIFIER ::= { CPSuri IDENTIFIED BY id-qt-cps }
-pqid-unotice CERT-POLICY-QUALIFIER ::= { OTPUserNotice
-    IDENTIFIED BY id-qt-unotice }
-
--- CPS pointer qualifier
-
-CPSuri ::= IA5String
-
-OTPUserNotice ::= SEQUENCE {
-     noticeRef        NoticeReference OPTIONAL,
-     explicitText     OTPDisplayText OPTIONAL}
-
--- NoticeReference ::= SEQUENCE {
---     organization     OTPDisplayText,
---     noticeNumbers    SEQUENCE OF INTEGER }
-
-OTPDisplayText ::= CHOICE {
-     ia5String        IA5String      (SIZE (1..650)),
-     visibleString    VisibleString  (SIZE (1..650)),
-     bmpString        BMPString      (SIZE (1..650)),
-     utf8String       UTF8String     (SIZE (1..650)) }
-
--- Extensions
-
-Extensions  ::=  SEQUENCE SIZE (1..MAX) OF OTPExtension
 
-OTPExtension  ::=  SEQUENCE  {
-     extnID      OBJECT IDENTIFIER,
-     critical    BOOLEAN DEFAULT FALSE,
-     extnValue   OCTET STRING  }
+HashSingleAttribute ::= OTP-PKIX.HashSingleAttribute
+HashRDNSequence ::= OTP-PKIX.HashRDNSequence
+HashRelativeDistinguishedName ::= OTP-PKIX.HashRelativeDistinguishedName
+OTPCertificatePolicies ::= OTP-PKIX.OTPCertificatePolicies
+OTPPolicyInformation ::= OTP-PKIX.OTPPolicyInformation
+CertPolicyId ::= OTP-PKIX.CertPolicyId
+CERT-POLICY-QUALIFIER ::= OTP-PKIX.CERT-POLICY-QUALIFIER
+OTPPolicyQualifierInfo ::= OTP-PKIX.OTPPolicyQualifierInfo
+CPSuri ::= OTP-PKIX.CPSuri
+OTPUserNotice ::= OTP-PKIX.OTPUserNotice
+OTPDisplayText ::= OTP-PKIX.OTPDisplayText
+Extensions ::= OTP-PKIX.Extensions
+OTPExtension ::= OTP-PKIX.OTPExtension
 
 END
diff --git a/lib/public_key/src/pubkey_cert_records.erl b/lib/public_key/src/pubkey_cert_records.erl
index 60e5bfcd30..f42499813d 100644
--- a/lib/public_key/src/pubkey_cert_records.erl
+++ b/lib/public_key/src/pubkey_cert_records.erl
@@ -463,7 +463,7 @@ decode_extensions(Exts, WhenCRL) ->
 decode_otp_cert_polices(Ext, Value) ->
     %% RFC 3280 states that certificate users SHOULD gracefully handle
     %% explicitText with more than 200 characters.
-    {ok, CPs} = 'OTP-PKIX-Relaxed':decode('OTPCertificatePolicies', Value),
+    {ok, CPs} = 'OTP-PKIX':decode('OTPCertificatePolicies', Value),
     Ext#'Extension'{extnValue=[translate_cert_polices(CP) || CP <- CPs]}.
 
 translate_cert_polices(#'OTPPolicyInformation'{policyIdentifier = Id, policyQualifiers = Qs0}) ->
-- 
2.51.0

openSUSE Build Service is sponsored by