<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-vangeest-lamps-update-asn1-signed-type-01" category="info" consensus="true" submissionType="IETF" updates="[5912, 5958]" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="Updated SIGNED ASN.1 Type">Updated Parameterized SIGNED ASN.1 Type for X.509 (PKIX)</title>
    <seriesInfo name="Internet-Draft" value="draft-vangeest-lamps-update-asn1-signed-type-01"/>
    <author initials="D." surname="Van Geest" fullname="Daniel Van Geest">
      <organization>CryptoNext Security</organization>
      <address>
        <email>daniel.vangeest@cryptonext-security.com</email>
      </address>
    </author>
    <author initials="C." surname="Wallace" fullname="Carl Wallace">
      <organization>Red Hound Software, Inc.</organization>
      <address>
        <email>carl@redhoundsoftware.com</email>
      </address>
    </author>
    <date year="2026" month="August" day="13"/>
    <keyword>Public Key Infrastructure</keyword>
    <keyword>ASN.1 SIGNED type</keyword>
    <abstract>
      <?line 87?>

<t>This document updates some ASN.1 modules which conform to the syntax of the 2002 version of ASN.1 but feature constraints that are no longer consistent with usage of the associated structures.
There are no bits-on-the-wire changes to any of the formats; this is simply a change to the syntax to better align with current practices.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://danvangeest.github.io/update-asn1-signed-type/draft-vangeest-lamps-update-asn1-signed-type.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-vangeest-lamps-update-asn1-signed-type/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/danvangeest/update-asn1-signed-type"/>.</t>
    </note>
  </front>
  <middle>
    <?line 93?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The data structures used in public key infrastructures (PKIs) were originally defined using the 1988 version of Abstract Syntax Notation One (ASN.1).
<xref target="RFC5280"/> uses the 1988 syntax, despite ITU's adoption of later ASN.1 versions (<xref target="X680"/>) in their corresponding specifications.
<xref target="RFC5911"/> and <xref target="RFC5912"/> were written to provide ASN.1 modules that conform to the 2002 version of the syntax for a variety of IETF RFCs.
During the migration, various constraint mechanisms that were available in the 2002 syntax were used as an aid to developers.</t>
      <t>For example, the <tt>PKIX-CommonTypes-2009</tt> ASN.1 module of <xref target="RFC5912"/> defines the <tt>SIGNATURE-ALGORITHM</tt> ASN.1 information object class and the <tt>SIGNED{ToBeSigned}</tt> ASN.1 type.
<tt>SIGNATURE-ALGORITHM</tt> has an optional field, <tt>&amp;Value</tt>, containing the type definition for the value structure of the signature.
If this field is absent, comments in the <tt>PKIX1Explicit-2009</tt> module state that no ASN.1 encoding is performed on the value.
In <xref target="RFC5912"/>, the <tt>SIGNED{ToBeSigned}</tt> type has a non-optional field, signature, with a <tt>CONTAINING</tt> clause referring to <tt>SIGNATURE-ALGORITHM.&amp;Value</tt>.</t>
      <t>However, it is not valid ASN.1 for a <tt>CONTAINING</tt> clause to refer to a type which is absent.
An ASN.1 syntax checker and compiler may accept this situation (since the type may also be present), but when an encoded ASN.1 information object with an absent <tt>&amp;Value</tt> field is decoded, the decoder will return an error.
This was not the intention of the <tt>PKIX1Explicit-2009</tt> module, the intention was that the unencoded signature contents would be used.
While the presence of extensibility markers in the corresponding information object sets may have masked problems with the missing field in the object class instantiations in some products, this document aims to remove ambiguities.</t>
      <t>At time of writing, there are many signature algorithms defining instantiations of the <tt>SIGNATURE-ALGORITHM</tt> class which don't include the <tt>&amp;Value</tt> field, namely RSASSA-PSS <xref target="RFC5912"/> <xref target="RFC8692"/>, RSA PKCS v1.5 <xref target="RFC5912"/> <xref target="RFC9688"/>, Ed25519 <xref target="RFC8410"/>, HSS-LMS <xref target="RFC8708"/> <xref target="RFC9708"/>, XMSS <xref target="RFC9802"/>, SLH-DSA <xref target="RFC9814"/> <xref target="RFC9909"/>, ML-DSA <xref target="RFC9881"/>, sa-unsigned <xref target="RFC9925"/>, and Composite ML-DSA <xref target="I-D.ietf-lamps-pq-composite-sigs"/>.
On the other hand, there are fewer signature algorithms instantiating the <tt>SIGNATURE-ALGORITHM</tt> class which include the <tt>&amp;Value</tt> field, namely DSA <xref target="RFC5912"/>, ECDSA <xref target="RFC5912"/> <xref target="RFC8692"/> <xref target="RFC9688"/>, and sa-noSignature <xref target="RFC6402"/>.
The ASN.1 module defined in <xref target="sec-5280"/> will allow ASN.1 decoders to process signature algorithms from the former set, as well as future <tt>SIGNATURE-ALGORITHM</tt> instantiations without the <tt>&amp;Value</tt> field defined.
Signature algorithms with the <tt>&amp;Value</tt> field defined can also use this module, but will not have compiler-assisted constraints applied.</t>
      <t>This document updates the following RFCs to define ASN.1 modules without ASN.1 <tt>CONTAINING</tt> clauses that refer to optional information object class fields:</t>
      <ul spacing="normal">
        <li>
          <t>RFC 5912, New ASN.1 Modules for the Public Key Infrastructure Using X.509 (PKIX) <xref target="RFC5912"/>. <xref section="14" sectionFormat="of" target="RFC5912"/>, "ASN.1 Module for RFC 5280, Explicit and Implicit" <xref target="RFC5280"/> is updated. Only the explicit module is updated.</t>
        </li>
        <li>
          <t>RFC 5958, Asymmetric Key Packages <xref target="RFC5958"/>. A commented-out alternative representation of OneAsymmetricKey is removed.</t>
        </li>
      </ul>
      <t>All other definitions, including those with <tt>CONTAINING</tt> clauses that do not rely on optional information object class fields, remain unchanged.</t>
    </section>
    <section anchor="sec-5280">
      <name>ASN.1 Module for RFC 5280, Explicit</name>
      <t><tt>SIGNED{ToBeSigned}</tt> is updated to a version with an ASN.1 "User-defined constraint" (see section 9 of <xref target="X682"/>).
The <tt>SIGNATURE-ALGORITHM.&amp;Value</tt> field is optional, and it was not valid for the previous version of the <tt>SIGNED{ToBeSigned}</tt> signature <tt>CONTAINING</tt> constraint to reference a non-existent field.
This is the only change compared to the <tt>PKIX1Explicit-2009</tt> module in <xref target="RFC5912"/>.</t>
      <t>The new <tt>SIGNED{ToBeSigned}</tt> definition is:</t>
      <sourcecode type="asn.1"><![CDATA[
SIGNED{ToBeSigned} ::= SEQUENCE {
    toBeSigned          ToBeSigned,
    algorithmIdentifier AlgorithmIdentifier{SIGNATURE-ALGORITHM,
                        {SignatureAlgorithms}},
    signature           BIT STRING (CONSTRAINED BY { ToBeSigned
                            -- with the following processing:
                            -- if
                            --    SIGNATURE-ALGORITHM.&Value {
                            --      @algorithm.algorithm }
                            --   is specified,
                            -- then
                            --   the content of the BIT STRING
                            --   is the DER-encoded &Value type
                            --   representing the calculated
                            --   signature over a DER-encoded value
                            --   of a ToBeSigned (i.e., equivalent to
                            --   a (CONTAINING &Value ENCODED BY der)
                            --   clause)
                            -- Otherwise if &Value is unspecified,
                            --   the content is the array of octets
                            --   representing the opaque (i.e., not
                            --   ASN1) encoded signature with no
                            --   leading type or length
                        })
}
]]></sourcecode>
      <t>The full ASN.1 module is:</t>
      <sourcecode type="asn.1"><![CDATA[
<CODE BEGINS>
PKIX1Explicit-2026
    {iso(1) identified-organization(3) dod(6) internet(1)
    security(5) mechanisms(5) pkix(7) id-mod(0)
    id-mod-pkix1-explicit-03(TBD1)}
DEFINITIONS EXPLICIT TAGS ::=
BEGIN

IMPORTS

Extensions{}, EXTENSION, ATTRIBUTE, SingleAttribute{}
FROM PKIX-CommonTypes-2009
    {iso(1) identified-organization(3) dod(6) internet(1) security(5)
    mechanisms(5) pkix(7) id-mod(0) id-mod-pkixCommon-02(57)}
AlgorithmIdentifier{}, PUBLIC-KEY, 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)}

CertExtensions, CrlExtensions, CrlEntryExtensions
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)}
SignatureAlgs, PublicKeys
FROM PKIXAlgs-2009
    {iso(1) identified-organization(3) dod(6)
    internet(1) security(5) mechanisms(5) pkix(7) id-mod(0) 56}

SignatureAlgs, PublicKeys
FROM PKIX1-PSS-OAEP-Algorithms-2009
    {iso(1) identified-organization(3) dod(6)
    internet(1) security(5) mechanisms(5) pkix(7) id-mod(0)
    id-mod-pkix1-rsa-pkalgs-02(54)}

ORAddress
FROM PKIX-X400Address-2009
    {iso(1) identified-organization(3) dod(6) internet(1) security(5)
    mechanisms(5) pkix(7) id-mod(0) id-mod-pkix1-x400address-02(60)};

id-pkix  OBJECT IDENTIFIER  ::=
    {iso(1) identified-organization(3) dod(6) internet(1) security(5)
    mechanisms(5) pkix(7)}

-- PKIX arcs

id-pe OBJECT IDENTIFIER  ::=  { id-pkix 1 }
    -- arc for private certificate extensions
id-qt OBJECT IDENTIFIER ::= { id-pkix 2 }
    -- arc for policy qualifier types
id-kp OBJECT IDENTIFIER ::= { id-pkix 3 }
    -- arc for extended key purpose OIDs
id-ad OBJECT IDENTIFIER ::= { id-pkix 48 }
    -- arc for access descriptors

-- policyQualifierIds for Internet policy qualifiers

id-qt-cps      OBJECT IDENTIFIER ::=  { id-qt 1 }
    -- OID for CPS qualifier
id-qt-unotice  OBJECT IDENTIFIER ::=  { id-qt 2 }
    -- OID for user notice qualifier
-- access descriptor definitions

id-ad-ocsp         OBJECT IDENTIFIER ::= { id-ad 1 }
id-ad-caIssuers    OBJECT IDENTIFIER ::= { id-ad 2 }
id-ad-timeStamping OBJECT IDENTIFIER ::= { id-ad 3 }
id-ad-caRepository OBJECT IDENTIFIER ::= { id-ad 5 }

-- attribute data types
AttributeType           ::=  ATTRIBUTE.&id

--  Replaced by SingleAttribute{}
--
-- AttributeTypeAndValue   ::=  SEQUENCE {
--    type    ATTRIBUTE.&id({SupportedAttributes}),
--    value   ATTRIBUTE.&Type({SupportedAttributes}{@type}) }
--

-- Suggested naming attributes: Definition of the following
--   information object set may be augmented to meet local
--   requirements.  Note that deleting members of the set may
--   prevent interoperability with conforming implementations.
-- All attributes are presented in pairs: the AttributeType
--   followed by the type definition for the corresponding
--   AttributeValue.

-- Arc for standard naming attributes

id-at OBJECT IDENTIFIER ::= { joint-iso-ccitt(2) ds(5) 4 }

-- Naming attributes of type X520name

id-at-name              AttributeType ::= { id-at 41 }
at-name ATTRIBUTE ::= { TYPE X520name IDENTIFIED BY id-at-name }

id-at-surname           AttributeType ::= { id-at 4 }
at-surname ATTRIBUTE ::= { TYPE X520name IDENTIFIED BY id-at-surname }

id-at-givenName         AttributeType ::= { id-at 42 }
at-givenName ATTRIBUTE ::=
    { TYPE X520name IDENTIFIED BY id-at-givenName }

id-at-initials          AttributeType ::= { id-at 43 }
at-initials ATTRIBUTE ::=
    { TYPE X520name IDENTIFIED BY id-at-initials }

id-at-generationQualifier AttributeType ::= { id-at 44 }
at-generationQualifier ATTRIBUTE ::=
    { TYPE X520name IDENTIFIED BY id-at-generationQualifier }
-- Directory string type --

DirectoryString{INTEGER:maxSize} ::= CHOICE {
    teletexString    TeletexString(SIZE (1..maxSize)),
    printableString  PrintableString(SIZE (1..maxSize)),
    bmpString        BMPString(SIZE (1..maxSize)),
    universalString  UniversalString(SIZE (1..maxSize)),
    uTF8String       UTF8String(SIZE (1..maxSize))
}

X520name ::= DirectoryString {ub-name}

-- Naming attributes of type X520CommonName

id-at-commonName        AttributeType ::= { id-at 3 }

at-x520CommonName ATTRIBUTE ::=
    {TYPE X520CommonName IDENTIFIED BY id-at-commonName }

X520CommonName ::= DirectoryString {ub-common-name}

-- Naming attributes of type X520LocalityName

id-at-localityName      AttributeType ::= { id-at 7 }

at-x520LocalityName ATTRIBUTE ::=
    { TYPE X520LocalityName IDENTIFIED BY id-at-localityName }
X520LocalityName ::= DirectoryString {ub-locality-name}

-- Naming attributes of type X520StateOrProvinceName

id-at-stateOrProvinceName AttributeType ::= { id-at 8 }

at-x520StateOrProvinceName ATTRIBUTE ::=
    { TYPE DirectoryString {ub-state-name}
        IDENTIFIED BY id-at-stateOrProvinceName }
X520StateOrProvinceName ::= DirectoryString {ub-state-name}

-- Naming attributes of type X520OrganizationName

id-at-organizationName  AttributeType ::= { id-at 10 }

at-x520OrganizationName ATTRIBUTE ::=
    { TYPE DirectoryString {ub-organization-name}
        IDENTIFIED BY id-at-organizationName }
X520OrganizationName ::= DirectoryString {ub-organization-name}

-- Naming attributes of type X520OrganizationalUnitName
id-at-organizationalUnitName AttributeType ::= { id-at 11 }

at-x520OrganizationalUnitName ATTRIBUTE ::=
    { TYPE DirectoryString  {ub-organizational-unit-name}
        IDENTIFIED BY id-at-organizationalUnitName }
X520OrganizationalUnitName ::= DirectoryString
                                    {ub-organizational-unit-name}

-- Naming attributes of type X520Title

id-at-title             AttributeType ::= { id-at 12 }

at-x520Title ATTRIBUTE ::= { TYPE DirectoryString { ub-title }
    IDENTIFIED BY id-at-title }

-- Naming attributes of type X520dnQualifier

id-at-dnQualifier       AttributeType ::= { id-at 46 }

at-x520dnQualifier ATTRIBUTE ::= { TYPE PrintableString
    IDENTIFIED BY id-at-dnQualifier }

-- Naming attributes of type X520countryName (digraph from IS 3166)

id-at-countryName       AttributeType ::= { id-at 6 }

at-x520countryName ATTRIBUTE ::=  { TYPE PrintableString (SIZE (2))
    IDENTIFIED BY id-at-countryName }

-- Naming attributes of type X520SerialNumber

id-at-serialNumber      AttributeType ::= { id-at 5 }

at-x520SerialNumber ATTRIBUTE ::=  {TYPE PrintableString
    (SIZE (1..ub-serial-number)) IDENTIFIED BY id-at-serialNumber }

-- Naming attributes of type X520Pseudonym

id-at-pseudonym         AttributeType ::= { id-at 65 }

at-x520Pseudonym ATTRIBUTE ::= { TYPE DirectoryString {ub-pseudonym}
    IDENTIFIED BY id-at-pseudonym }

-- Naming attributes of type DomainComponent (from RFC 2247)

id-domainComponent      AttributeType ::=
    { itu-t(0) data(9) pss(2342) ucl(19200300) pilot(100)
    pilotAttributeType(1) 25 }
at-domainComponent ATTRIBUTE ::= {TYPE IA5String
    IDENTIFIED BY id-domainComponent }

-- Legacy attributes

pkcs-9 OBJECT IDENTIFIER ::=
    { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 9 }
id-emailAddress          AttributeType ::= { pkcs-9 1 }

at-emailAddress ATTRIBUTE ::= {TYPE IA5String
    (SIZE (1..ub-emailaddress-length)) IDENTIFIED BY
    id-emailAddress }

-- naming data types --

Name ::= CHOICE { -- only one possibility for now --
    rdnSequence  RDNSequence }

RDNSequence ::= SEQUENCE OF RelativeDistinguishedName

DistinguishedName ::=   RDNSequence

RelativeDistinguishedName  ::=
    SET SIZE (1 .. MAX) OF SingleAttribute { {SupportedAttributes} }

--  These are the known name elements for a DN

SupportedAttributes ATTRIBUTE ::= {
    at-name | at-surname | at-givenName | at-initials |
    at-generationQualifier | at-x520CommonName |
    at-x520LocalityName | at-x520StateOrProvinceName |
    at-x520OrganizationName | at-x520OrganizationalUnitName |
    at-x520Title | at-x520dnQualifier | at-x520countryName |
    at-x520SerialNumber | at-x520Pseudonym | at-domainComponent |
    at-emailAddress, ... }

--
-- Certificate- and CRL-specific structures begin here
--

Certificate  ::=  SIGNED{TBSCertificate}

TBSCertificate  ::=  SEQUENCE  {
    version         [0]  Version DEFAULT v1,
    serialNumber         CertificateSerialNumber,
    signature            AlgorithmIdentifier{SIGNATURE-ALGORITHM,
                            {SignatureAlgorithms}},
    issuer               Name,
    validity             Validity,
    subject              Name,
    subjectPublicKeyInfo SubjectPublicKeyInfo,
    ... ,
    [[2:               -- If present, version MUST be v2
    issuerUniqueID  [1]  IMPLICIT UniqueIdentifier OPTIONAL,
    subjectUniqueID [2]  IMPLICIT UniqueIdentifier OPTIONAL
    ]],
    [[3:               -- If present, version MUST be v3 --
    extensions      [3]  Extensions{{CertExtensions}} OPTIONAL
    ]], ... }

Version  ::=  INTEGER  {  v1(0), v2(1), v3(2)  }

CertificateSerialNumber  ::=  INTEGER

Validity ::= SEQUENCE {
    notBefore      Time,
    notAfter       Time  }

Time ::= CHOICE {
    utcTime        UTCTime,
    generalTime    GeneralizedTime }

UniqueIdentifier  ::=  BIT STRING

SubjectPublicKeyInfo  ::=  SEQUENCE  {
    algorithm            AlgorithmIdentifier{PUBLIC-KEY,
                            {PublicKeyAlgorithms}},
    subjectPublicKey     BIT STRING  }

-- CRL structures

CertificateList  ::=  SIGNED{TBSCertList}

TBSCertList  ::=  SEQUENCE  {
    version              Version OPTIONAL,
                                -- if present, MUST be v2
    signature            AlgorithmIdentifier{SIGNATURE-ALGORITHM,
                            {SignatureAlgorithms}},
    issuer               Name,
    thisUpdate           Time,
    nextUpdate           Time OPTIONAL,
    revokedCertificates  SEQUENCE SIZE (1..MAX) OF SEQUENCE {
        userCertificate  CertificateSerialNumber,
        revocationDate   Time,
        ... ,
        [[2:                  -- if present, version MUST be v2
        crlEntryExtensions  Extensions{{CrlEntryExtensions}}
                                OPTIONAL
        ]], ...
    } OPTIONAL,
    ... ,
    [[2:                       -- if present, version MUST be v2
    crlExtensions       [0] Extensions{{CrlExtensions}}
                                OPTIONAL
    ]], ... }

-- Version, Time, CertificateSerialNumber, and Extensions were
-- defined earlier for use in the certificate structure

--
--  The two object sets below should be expanded to include
--  those algorithms which are supported by the system.
--
--  For example:
--  SignatureAlgorithms SIGNATURE-ALGORITHM ::= {
--    PKIXAlgs-2008.SignatureAlgs, ...,
--        - - RFC 3279 provides the base set
--    PKIX1-PSS-OAEP-ALGORITHMS.SignatureAlgs |
--        - - RFC 4055 provides extension algs
--    OtherModule.SignatureAlgs
--        - - RFC XXXX provides additional extension algs
--  }

SignatureAlgorithms SIGNATURE-ALGORITHM ::= {
    PKIXAlgs-2009.SignatureAlgs, ...,
    PKIX1-PSS-OAEP-Algorithms-2009.SignatureAlgs }

PublicKeyAlgorithms PUBLIC-KEY ::= {
    PKIXAlgs-2009.PublicKeys, ...,
    PKIX1-PSS-OAEP-Algorithms-2009.PublicKeys}

-- Upper Bounds

ub-state-name INTEGER ::= 128
ub-organization-name INTEGER ::= 64
ub-organizational-unit-name INTEGER ::= 64
ub-title INTEGER ::= 64
ub-serial-number INTEGER ::= 64
ub-pseudonym INTEGER ::= 128
ub-emailaddress-length INTEGER ::= 255
ub-locality-name INTEGER ::= 128
ub-common-name INTEGER ::= 64
ub-name INTEGER ::= 32768
-- Note - upper bounds on string types, such as TeletexString, are
-- measured in characters.  Excepting PrintableString or IA5String, a
-- significantly greater number of octets will be required to hold
-- such a value.  As a minimum, 16 octets or twice the specified
-- upper bound, whichever is the larger, should be allowed for
-- TeletexString.  For UTF8String or UniversalString, at least four
-- times the upper bound should be allowed.

-- Information object classes used in the definition
-- of certificates and CRLs

-- Parameterized Type SIGNED
--
-- Four different versions of doing SIGNED:
--  1.  Simple and close to the PKIX1Explicit93 (RFC 2459) version
--
--  SIGNED{ToBeSigned} ::= SEQUENCE {
--    toBeSigned  ToBeSigned,
--    algorithm   AlgorithmIdentifier{SIGNATURE-ALGORITHM,
--                    {SignatureAlgorithms}},
--    signature   BIT STRING
--  }
--
--  2.  From Authenticated Framework
--
--  SIGNED{ToBeSigned} ::= SEQUENCE {
--    toBeSigned        ToBeSigned,
--    COMPONENTS OF SIGNATURE{ToBeSigned}
--  }
--  SIGNATURE{ToBeSigned} ::= SEQUENCE {
--    algorithmIdentifier   AlgorithmIdentifier,
--    encrypted             ENCRYPTED-HASH{ToBeSigned}
--  }
--  ENCRYPTED-HASH{ToBeSigned} ::=
--    BIT STRING
--      (CONSTRAINED BY {
--        shall be the result of applying a hashing procedure to
--        the DER-encoded (see 4.1) octets of a value of
--        ToBeSigned and then applying an encipherment procedure
--        to those octets
--      })
--
--
--  3.  A more complex version, but one that automatically ties
--      together both the signature algorithm and the
--      signature value for automatic decoding.
--      This is removed in this document.
--
--  SIGNED{ToBeSigned} ::= SEQUENCE {
--     toBeSigned           ToBeSigned,
--     algorithmIdentifier  SEQUENCE {
--         algorithm        SIGNATURE-ALGORITHM.
--                            &id({SignatureAlgorithms}),
--         parameters       SIGNATURE-ALGORITHM.
--                            &Params({SignatureAlgorithms}
--                              {@algorithmIdentifier.algorithm})
--                                  OPTIONAL
--     },
--     signature BIT STRING (CONTAINING SIGNATURE-ALGORITHM.&Value(
--                              {SignatureAlgorithms}
--                              {@algorithmIdentifier.algorithm}))
--  }
--
--  4.  Similar to option 1, with ASN.1 user-defined constraints and
--      textual descriptions of the signature encodings.
SIGNED{ToBeSigned} ::= SEQUENCE {
    toBeSigned          ToBeSigned,
    algorithmIdentifier AlgorithmIdentifier{SIGNATURE-ALGORITHM,
                        {SignatureAlgorithms}},
    signature           BIT STRING (CONSTRAINED BY { ToBeSigned
                            -- with the following processing:
                            -- if
                            --    SIGNATURE-ALGORITHM.&Value {
                            --      @algorithm.algorithm }
                            --   is specified,
                            -- then
                            --   the content of the BIT STRING
                            --   is the DER-encoded &Value type
                            --   representing the calculated
                            --   signature over a DER-encoded value
                            --   of a ToBeSigned (i.e., equivalent to
                            --   a (CONTAINING &Value ENCODED BY der)
                            --   clause)
                            -- Otherwise if &Value is unspecified,
                            --   the content is the array of octets
                            --   representing the opaque (i.e., not
                            --   ASN1) encoded signature with no
                            --   leading type or length
                        })
}

END
<CODE ENDS>
]]></sourcecode>
    </section>
    <section anchor="sec-5958">
      <name>ASN.1 Module for RFC 5958</name>
      <t>The only change for this module from the <tt>AsymmetricKeyPackageModuleV1</tt> module in <xref target="RFC5958"/> is to remove the commented-out alternative representation of <tt>OneAsymmetricKey</tt> which made full use of ASN.1 constraints.
The <tt>PUBLIC-KEY.&amp;PrivateKey</tt> field is optional, and it was not valid for the <tt>OneAsymmetricKey</tt> privateKey <tt>CONTAINING</tt> constraint to reference a non-existent field.
For an ASN.1 compiler, there is no difference between the <tt>AsymmetricKeyPackageModuleV1</tt> and <tt>AsymmetricKeyPackageModuleV1-2026</tt> modules.</t>
      <sourcecode type="asn.1"><![CDATA[
<CODE BEGINS>
AsymmetricKeyPackageModuleV1-2026
  { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
    smime(16) modules(0) id-mod-asymmetricKeyPkgV1-2026(TBD2) }

DEFINITIONS IMPLICIT TAGS ::=

BEGIN

-- EXPORTS ALL

IMPORTS

-- FROM New SMIME ASN.1 [RFC5911]

Attribute{}, CONTENT-TYPE
FROM CryptographicMessageSyntax-2009
  { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
    smime(16) modules(0) id-mod-cms-2004-02(41) }

-- From New PKIX ASN.1 [RFC5912]
ATTRIBUTE
FROM PKIX-CommonTypes-2009
  { iso(1) identified-organization(3) dod(6) internet(1)
    security(5) mechanisms(5) pkix(7) id-mod(0)
    id-mod-pkixCommon-02(57) }

-- From New PKIX ASN.1 [RFC5912]

AlgorithmIdentifier{}, ALGORITHM, PUBLIC-KEY, CONTENT-ENCRYPTION
  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) }

;

ContentSet CONTENT-TYPE ::= {
ct-asymmetric-key-package,
... -- Expect additional content types --
}
ct-asymmetric-key-package CONTENT-TYPE ::=
{ AsymmetricKeyPackage IDENTIFIED BY id-ct-KP-aKeyPackage }

id-ct-KP-aKeyPackage OBJECT IDENTIFIER ::=
  { joint-iso-itu-t(2) country(16) us(840) organization(1)
      gov(101) dod(2) infosec(1) formats(2)
      key-package-content-types(78) 5
  }

AsymmetricKeyPackage ::= SEQUENCE SIZE (1..MAX) OF OneAsymmetricKey

OneAsymmetricKey ::= SEQUENCE {
  version                   Version,
  privateKeyAlgorithm       PrivateKeyAlgorithmIdentifier,
  privateKey                PrivateKey,
  attributes            [0] Attributes OPTIONAL,
  ...,
  [[2: publicKey        [1] PublicKey OPTIONAL ]],
  ...
}

PrivateKeyInfo ::= OneAsymmetricKey

-- PrivateKeyInfo is used by [P12]. If any items tagged as version
-- 2 are used, the version must be v2, else the version should be
-- v1. When v1, PrivateKeyInfo is the same as it was in [RFC5208].

Version ::= INTEGER { v1(0), v2(1) } (v1, ..., v2)

PrivateKeyAlgorithmIdentifier ::= AlgorithmIdentifier
                                  { PUBLIC-KEY,
                                    { PrivateKeyAlgorithms } }

PrivateKey ::= OCTET STRING
                  -- Content varies based on type of key. The
                  -- algorithm identifier dictates the format of
                  -- the key.

PublicKey ::= BIT STRING
                  -- Content varies based on type of key. The
                  -- algorithm identifier dictates the format of
                  -- the key.

Attributes ::= SET OF Attribute { { OneAsymmetricKeyAttributes } }

OneAsymmetricKeyAttributes ATTRIBUTE ::= {
  ... -- For local profiles
}

EncryptedPrivateKeyInfo ::= SEQUENCE {
  encryptionAlgorithm  EncryptionAlgorithmIdentifier,
  encryptedData        EncryptedData }

EncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
                                    { CONTENT-ENCRYPTION,
                                      { KeyEncryptionAlgorithms } }

EncryptedData ::= OCTET STRING -- Encrypted PrivateKeyInfo

PrivateKeyAlgorithms ALGORITHM ::= {
  ... -- Extensible
}

KeyEncryptionAlgorithms ALGORITHM ::= {
  ... -- Extensible
}

END
<CODE ENDS>
]]></sourcecode>
    </section>
    <section anchor="operational-considerations">
      <name>Operational Considerations</name>
      <t>Code generated using the <tt>SIGNED{ToBeSigned}</tt> or <tt>OneAsymmetricKey</tt> definitions featuring a <tt>CONTAINING</tt> clause may differ from code generated using the definitions provided in this document.
The lower level structures previously identified by the information object set used by the <tt>CONTAINING</tt> clause will not longer be automatically parsed and there will be no automatic affirmation that the field contains a valid and expected type.
Library or application code will need to account for these changes to retain the desired functionality.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Even though all the RFCs in this document are security-related, the document itself does not have any security considerations.
The ASN.1 modules keep the same bits-on-the-wire as the modules that they replace.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to allocate a value from the "SMI Security for PKIX Module Identifier (1.3.6.1.5.5.7.0)" registry for the ASN.1 module in <xref target="sec-5280"/>.</t>
      <ul spacing="normal">
        <li>
          <t>Decimal: IANA Assigned - <em>Replace TBD1</em></t>
        </li>
        <li>
          <t>Description: PKIX1Explicit-2026 - id-mod-pkix1-explicit-03</t>
        </li>
      </ul>
      <t>IANA is requested to allocate a value from the "SMI Security for S/MIME Module Identifier (1.2.840.113549.1.9.16.0)" registry for the ASN.1 module in <xref target="sec-5958"/>.</t>
      <ul spacing="normal">
        <li>
          <t>Decimal: IANA Assigned - <em>Replace TBD2</em></t>
        </li>
        <li>
          <t>Description: AsymmetricKeyPackageModuleV1-2026 - id-mod-asymmetricKeyPkgV1-2026</t>
        </li>
      </ul>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC5958">
          <front>
            <title>Asymmetric Key Packages</title>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document defines the syntax for private-key information and a content type for it. Private-key information includes a private key for a specified public-key algorithm and a set of attributes. The Cryptographic Message Syntax (CMS), as defined in RFC 5652, can be used to digitally sign, digest, authenticate, or encrypt the asymmetric key format content type. This document obsoletes RFC 5208. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5958"/>
          <seriesInfo name="DOI" value="10.17487/RFC5958"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC5911">
          <front>
            <title>New ASN.1 Modules for Cryptographic Message Syntax (CMS) and S/MIME</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="June" year="2010"/>
            <abstract>
              <t>The Cryptographic Message Syntax (CMS) format, and many associated formats, are expressed using ASN.1. The current ASN.1 modules conform to the 1988 version of ASN.1. This document updates those ASN.1 modules to conform to the 2002 version of ASN.1. There are no bits-on-the-wire changes to any of the formats; this is simply a change to the syntax. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5911"/>
          <seriesInfo name="DOI" value="10.17487/RFC5911"/>
        </reference>
        <reference anchor="RFC5912">
          <front>
            <title>New ASN.1 Modules for the Public Key Infrastructure Using X.509 (PKIX)</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="June" year="2010"/>
            <abstract>
              <t>The Public Key Infrastructure using X.509 (PKIX) certificate format, and many associated formats, are expressed using ASN.1. The current ASN.1 modules conform to the 1988 version of ASN.1. This document updates those ASN.1 modules to conform to the 2002 version of ASN.1. There are no bits-on-the-wire changes to any of the formats; this is simply a change to the syntax. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5912"/>
          <seriesInfo name="DOI" value="10.17487/RFC5912"/>
        </reference>
        <reference anchor="RFC8692">
          <front>
            <title>Internet X.509 Public Key Infrastructure: Additional Algorithm Identifiers for RSASSA-PSS and ECDSA Using SHAKEs</title>
            <author fullname="P. Kampanakis" initials="P." surname="Kampanakis"/>
            <author fullname="Q. Dang" initials="Q." surname="Dang"/>
            <date month="December" year="2019"/>
            <abstract>
              <t>Digital signatures are used to sign messages, X.509 certificates, and Certificate Revocation Lists (CRLs). This document updates the "Algorithms and Identifiers for the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile" (RFC 3279) and describes the conventions for using the SHAKE function family in Internet X.509 certificates and revocation lists as one-way hash functions with the RSA Probabilistic signature and Elliptic Curve Digital Signature Algorithm (ECDSA) signature algorithms. The conventions for the associated subject public keys are also described.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8692"/>
          <seriesInfo name="DOI" value="10.17487/RFC8692"/>
        </reference>
        <reference anchor="RFC9688">
          <front>
            <title>Use of the SHA3 One-Way Hash Functions in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="November" year="2024"/>
            <abstract>
              <t>This document describes the conventions for using the one-way hash functions in the SHA3 family with the Cryptographic Message Syntax (CMS). The SHA3 family can be used as a message digest algorithm, as part of a signature algorithm, as part of a message authentication code, or as part of a Key Derivation Function (KDF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9688"/>
          <seriesInfo name="DOI" value="10.17487/RFC9688"/>
        </reference>
        <reference anchor="RFC8410">
          <front>
            <title>Algorithm Identifiers for Ed25519, Ed448, X25519, and X448 for Use in the Internet X.509 Public Key Infrastructure</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies algorithm identifiers and ASN.1 encoding formats for elliptic curve constructs using the curve25519 and curve448 curves. The signature algorithms covered are Ed25519 and Ed448. The key agreement algorithms covered are X25519 and X448. The encoding for public key, private key, and Edwards-curve Digital Signature Algorithm (EdDSA) structures is provided.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8410"/>
          <seriesInfo name="DOI" value="10.17487/RFC8410"/>
        </reference>
        <reference anchor="RFC8708">
          <front>
            <title>Use of the HSS/LMS Hash-Based Signature Algorithm in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document specifies the conventions for using the Hierarchical Signature System (HSS) / Leighton-Micali Signature (LMS) hash-based signature algorithm with the Cryptographic Message Syntax (CMS). In addition, the algorithm identifier and public key syntax are provided. The HSS/LMS algorithm is one form of hash-based digital signature; it is described in RFC 8554.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8708"/>
          <seriesInfo name="DOI" value="10.17487/RFC8708"/>
        </reference>
        <reference anchor="RFC9708">
          <front>
            <title>Use of the HSS/LMS Hash-Based Signature Algorithm in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="January" year="2025"/>
            <abstract>
              <t>This document specifies the conventions for using the Hierarchical Signature System (HSS) / Leighton-Micali Signature (LMS) hash-based signature algorithm with the Cryptographic Message Syntax (CMS). In addition, the algorithm identifier and public key syntax are provided. The HSS/LMS algorithm is one form of hash-based digital signature; it is described in RFC 8554. This document obsoletes RFC 8708.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9708"/>
          <seriesInfo name="DOI" value="10.17487/RFC9708"/>
        </reference>
        <reference anchor="RFC9802">
          <front>
            <title>Use of the HSS and XMSS Hash-Based Signature Algorithms in Internet X.509 Public Key Infrastructure</title>
            <author fullname="D. Van Geest" initials="D." surname="Van Geest"/>
            <author fullname="K. Bashiri" initials="K." surname="Bashiri"/>
            <author fullname="S. Fluhrer" initials="S." surname="Fluhrer"/>
            <author fullname="S. Gazdag" initials="S." surname="Gazdag"/>
            <author fullname="S. Kousidis" initials="S." surname="Kousidis"/>
            <date month="June" year="2025"/>
            <abstract>
              <t>This document specifies algorithm identifiers and ASN.1 encoding formats for the following stateful Hash-Based Signature (HBS) schemes: Hierarchical Signature System (HSS), eXtended Merkle Signature Scheme (XMSS), and XMSS^MT (a multi-tree variant of XMSS). This specification applies to the Internet X.509 Public Key Infrastructure (PKI) when digital signatures are used to sign certificates and certificate revocation lists (CRLs).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9802"/>
          <seriesInfo name="DOI" value="10.17487/RFC9802"/>
        </reference>
        <reference anchor="RFC9814">
          <front>
            <title>Use of the SLH-DSA Signature Algorithm in the Cryptographic Message Syntax (CMS)</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="S. Fluhrer" initials="S." surname="Fluhrer"/>
            <author fullname="P. Kampanakis" initials="P." surname="Kampanakis"/>
            <author fullname="B. Westerbaan" initials="B." surname="Westerbaan"/>
            <date month="July" year="2025"/>
            <abstract>
              <t>SLH-DSA is a stateless hash-based signature algorithm. This document specifies the conventions for using the SLH-DSA signature algorithm with the Cryptographic Message Syntax (CMS). In addition, the algorithm identifier and public key syntax are provided.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9814"/>
          <seriesInfo name="DOI" value="10.17487/RFC9814"/>
        </reference>
        <reference anchor="RFC9909">
          <front>
            <title>Internet X.509 Public Key Infrastructure -- Algorithm Identifiers for the Stateless Hash-Based Digital Signature Algorithm (SLH-DSA)</title>
            <author fullname="K. Bashiri" initials="K." surname="Bashiri"/>
            <author fullname="S. Fluhrer" initials="S." surname="Fluhrer"/>
            <author fullname="S. Gazdag" initials="S." surname="Gazdag"/>
            <author fullname="D. Van Geest" initials="D." surname="Van Geest"/>
            <author fullname="S. Kousidis" initials="S." surname="Kousidis"/>
            <date month="December" year="2025"/>
            <abstract>
              <t>Digital signatures are used within the X.509 Public Key Infrastructure, such as X.509 certificates and Certificate Revocation Lists (CRLs), as well as to sign messages. This document specifies the conventions for using the Stateless Hash-Based Digital Signature Algorithm (SLH-DSA) in the X.509 Public Key Infrastructure. The conventions for the associated signatures, subject public keys, and private keys are also specified.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9909"/>
          <seriesInfo name="DOI" value="10.17487/RFC9909"/>
        </reference>
        <reference anchor="RFC9881">
          <front>
            <title>Internet X.509 Public Key Infrastructure -- Algorithm Identifiers for the Module-Lattice-Based Digital Signature Algorithm (ML-DSA)</title>
            <author fullname="J. Massimo" initials="J." surname="Massimo"/>
            <author fullname="P. Kampanakis" initials="P." surname="Kampanakis"/>
            <author fullname="S. Turner" initials="S." surname="Turner"/>
            <author fullname="B. E. Westerbaan" initials="B. E." surname="Westerbaan"/>
            <date month="October" year="2025"/>
            <abstract>
              <t>Digital signatures are used within X.509 certificates and Certificate Revocation Lists (CRLs), and to sign messages. This document specifies the conventions for using FIPS 204, the Module-Lattice-Based Digital Signature Algorithm (ML-DSA) in Internet X.509 certificates and CRLs. The conventions for the associated signatures, subject public keys, and private key are also described.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9881"/>
          <seriesInfo name="DOI" value="10.17487/RFC9881"/>
        </reference>
        <reference anchor="RFC9925">
          <front>
            <title>Unsigned X.509 Certificates</title>
            <author fullname="D. Benjamin" initials="D." surname="Benjamin"/>
            <date month="February" year="2026"/>
            <abstract>
              <t>This document defines a placeholder X.509 signature algorithm that may be used in contexts where the consumer of the certificate is not expected to verify the signature. As part of this, it updates RFC 5280.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9925"/>
          <seriesInfo name="DOI" value="10.17487/RFC9925"/>
        </reference>
        <reference anchor="RFC6402">
          <front>
            <title>Certificate Management over CMS (CMC) Updates</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="November" year="2011"/>
            <abstract>
              <t>This document contains a set of updates to the base syntax for CMC, a Certificate Management protocol using the Cryptographic Message Syntax (CMS). This document updates RFC 5272, RFC 5273, and RFC 5274.</t>
              <t>The new items in this document are: new controls for future work in doing server side key generation, definition of a Subject Information Access value to identify CMC servers, and the registration of a port number for TCP/IP for the CMC service to run on. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6402"/>
          <seriesInfo name="DOI" value="10.17487/RFC6402"/>
        </reference>
        <reference anchor="RFC5208">
          <front>
            <title>Public-Key Cryptography Standards (PKCS) #8: Private-Key Information Syntax Specification Version 1.2</title>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This document represents a republication of PKCS #8 v1.2 from RSA Laboratories' Public Key Cryptography Standard (PKCS) series. Change control is transferred to the IETF. The body of this document, except for the security considerations section, is taken directly from the PKCS #8 v1.2 specification.</t>
              <t>This document describes a syntax for private-key information. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5208"/>
          <seriesInfo name="DOI" value="10.17487/RFC5208"/>
        </reference>
        <reference anchor="X680" target="https://www.itu.int/rec/T-REC-X.680">
          <front>
            <title>Information technology - Abstract Syntax Notation One (ASN.1): Specification of basic notation</title>
            <author>
              <organization>ITU-T</organization>
            </author>
            <date year="2021" month="February"/>
          </front>
          <seriesInfo name="ITU-T Recommendation" value="X.680"/>
          <seriesInfo name="ISO/IEC" value="8824-1:2021"/>
        </reference>
        <reference anchor="X682" target="https://www.itu.int/rec/T-REC-X.682">
          <front>
            <title>Information technology - Abstract Syntax Notation One (ASN.1): Constraint specification</title>
            <author>
              <organization>ITU-T</organization>
            </author>
            <date year="2021" month="February"/>
          </front>
          <seriesInfo name="ITU-T Recommendation" value="X.682"/>
          <seriesInfo name="ISO/IEC" value="8824-3:2021"/>
        </reference>
        <reference anchor="P12">
          <front>
            <title>PKCS #12 v1.0: Personal Information Exchange Syntax</title>
            <author>
              <organization>RSA Laboratories</organization>
            </author>
            <date year="1999" month="June"/>
          </front>
        </reference>
        <reference anchor="I-D.ietf-lamps-pq-composite-sigs">
          <front>
            <title>Composite Module-Lattice-Based Digital Signature Algorithm (ML-DSA) for use in X.509 Public Key Infrastructure</title>
            <author fullname="Mike Ounsworth" initials="M." surname="Ounsworth">
              <organization>Entrust Limited</organization>
            </author>
            <author fullname="John Gray" initials="J." surname="Gray">
              <organization>Entrust Limited</organization>
            </author>
            <author fullname="Massimiliano Pala" initials="M." surname="Pala">
              <organization>OpenCA Labs</organization>
            </author>
            <author fullname="Jan Klaußner" initials="J." surname="Klaußner">
              <organization>Bundesdruckerei GmbH</organization>
            </author>
            <author fullname="Scott Fluhrer" initials="S." surname="Fluhrer">
              <organization>Cisco Systems</organization>
            </author>
            <date day="21" month="April" year="2026"/>
            <abstract>
              <t>   This document defines combinations of US NIST Module-Lattice-Based
   Digital Signature Algorithm (ML-DSA) in hybrid with traditional
   algorithms RSASSA-PKCS1-v1.5, RSASSA-PSS, ECDSA, Ed25519, and Ed448.
   These combinations are tailored to meet regulatory guidelines in
   certain regions.  Composite ML-DSA is applicable in applications that
   use X.509 or PKIX data structures that accept ML-DSA, but where the
   operator wants extra protection against breaks or catastrophic bugs
   in ML-DSA, and where existential unforgeability (EUF-CMA) level
   security is acceptable.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-pq-composite-sigs-19"/>
        </reference>
      </references>
    </references>
    <?line 751?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks goes to Pierce Leonberger who submitted an errata for <tt>SIGNED{ToBeSigned}</tt> in 2014 which didn't get the attention it deserved.
Thanks to Josef Frühwirth who brought up the issue again more recently.
Thanks to Michael StJohns for working with the authors to try to find an alternate solution which could keep the ASN.1 constraints.
Ultimately there was no such solution, but the investigation was valuable.</t>
      <t>Thanks to the authors of <xref target="RFC5912"/> and <xref target="RFC5958"/>.  This document is just a small update on their work.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
qCmaSb5kWf+VjohZ4jn/CztSKIqycAAA

-->

</rfc>
