<?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-00" 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-00"/>
    <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="June" day="22"/>
    <keyword>Public Key Infrastructure</keyword>
    <keyword>ASN.1 SIGNED type</keyword>
    <abstract>
      <?line 70?>

<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 76?>

<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="RFC8692">RFC5912</xref>, RSA PKCS v1.5 <xref target="RFC9688">RFC5912</xref>, Ed25519 <xref target="RFC8410"/>, HSS-LMS <xref target="RFC9708">RFC8708</xref>, XMSS <xref target="RFC9802"/>, SLH-DSA <xref target="RFC9909">RFC9814</xref>, 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="RFC8692">RFC5912</xref> <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 simpler version without ASN.1 constraints.
This simpler version was presented as a commented out alternative in <xref target="RFC5912"/>.
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
}
]]></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
--
-- Three different versions of doing SIGNED:
--  1.  Simple and close to the PKIX1Explicit93 (RFC 2459) version
--
SIGNED{ToBeSigned} ::= SEQUENCE {
    toBeSigned          ToBeSigned,
    algorithmIdentifier 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.  Removed since PKIX1Explicit-2009:
--      A more complex version, but one that automatically ties
--      together both the signature algorithm and the
--      signature value for automatic decoding.

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="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="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 673?>

<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>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA908a3PjuJHf+StQ3qpE2hI1kmx5bOeSW42tmVHWr1jy7uxN
TdVQJCQxpkgtQdrjOM4vu2/3x64fAAlKlO2ZXB512oclEmj0C43uBhqu6zpZ
mEXySOxcrwIvk4G49FJvKTOZhn+BX+PRu/PhiRiMz9tdMblfSTFLUvGh3e8c
isblj6MPzR3Hm05TeWuB2Oi04/jwYp6k90cijGeJk1NLdeQI4Yr+Ybenv/QP
HCdI/BgwOBJB6s0y99aL51KqzI285Uq53NP1VNx1VTiPZeBmMILb6Tgqny5D
pcIkxidHYjScvBXiO+FFKgHswjiQKwn/i7OdltiRQZglaehF+GM0eAN/gLKd
0dXk7Y4T58upTI8cHOvI8ZNYyVjl6khkaS4doHXXAbip9I7EWPp5Gmb38OAu
SW/maZKvjsRpuAyRFYMAhgGMvEicSX/hxaFaKuIhMk94MXDrbHQ2dG7kPXQP
gCOuuMynUeiLH+W9GMWz1FMwqp/lqcSXzFXNYiTUuZVxDlh+J8S3Dg5dmWU/
AwVhPBfvEBA+XnphdCTUylPLH0KZzdpJOsfnXuovjsQiy1bq6NUrbIVPwlvZ
Nq1e4YNX0zS5U/IVAXgFQp6H2SKfgjQCLzaSfbVFpjvQPkI1yaC9Gcrq12Zg
7TDZBuHV16hQe5Etox3H8fJskYDsXVBVkPhJW/zkxeIdAgCEZnkUsXqeAD9l
VHkJZMPDv3jI9CNxnN6vsuRcfslKJRFCMksD6t02qP3gU+MYGrtKN277ydIx
aBy3xc9eFHm+rCBx7KWR9aKKwBXowPskRzEns+wO9LUFCuW3Syx86P5DKoMF
tlK6EY8bJ+kS4NxKnKRXb4/7vYOO+Qrz9MhxcCavtTnsdsuvPf31YP/QfD3c
PzgwT/e6Bt7B6455emh9PegU3Q66e+brYeeweHrQLZ72+vrr/h53+7DP+IJq
e+lcZqW23t3dtcMsb4dx9iqV/quJezU8dj+0oQO3Z4v4B/ohcAoymUksMphG
cRIl83uciVOYmJ4P0r2PM++LOE8ybnURS9Ggedo80kDGK+mHs9DnBslMTD0F
UzzWXagVGRvR6/S6bqdHT4wq4neXpAtWbXLtTuiJAhstFUrBjELvQOwgwCVY
Oq0GJWXQYnzxajQ8PhIHB709t3uEozntdhv0zHWFpylynMkiVAIscQ5wMqHN
tVDJUmoDtEyCPIJHd4vQXwiwkMgkkSUiW0ihmCFAJv7qdTo9cStTpUlnANM8
EzPpoVnD7jgwCERBDy9D0wq8EVECsyOl16HKEJM7mPIiV95cGuieUokf0rpT
2EnVBgIkwNBwpmGm3CR2ob17F+KAC5x3CvH14nsDiuWsfgc/gHr4V4XLVXQv
PN1+jTz4NZUZrJSwwoAZYdxg6qaI6Ar5GPqICvN2GQZBJB0wnqM4S4F7Pgke
EUXJexb2QCBQE8ZixQsBrA24bFoLgaLFVzXFHVIJy9g8BCsPqAZyFoJBAwho
xhHZLkyTCvdfoLVt56Oe8Z8QF1UCYtJbMI5awRqDGvdbJbwgWRnFRoudahnr
YQHbjzgdPzWRKIAVokyBT2qVxAEiquzpofTwYEw+0SKlf/U+Mbl3YBxBGZD/
qzS5DYN1nSQVWlPJdSW05IgLoiduPZhNGekCOQ4wJiByApZYM3IZzlPCr0Vt
k1xZeiuW5QJLwxOm3i0ujNNIaroZCz0stSBJe8DBWHhhgMgG8lZGyQowBc15
C6jJL7BqRWC6EcBnXLndY5jfSYyelXIB5OHnCgOQhJJlrBEsws/oNgwm11dD
d3D67uJqNHl/ZvqGlplLpn+WoCF+BJOLJFB0Hp48TJI3ckzL5qPpS8unUw99
wdSxgoAnMoNlL2iJz7/5yYty+bmFTMyAhYbNCIuRJt+FpIPPb7F5OUkKGQIm
ZETazmjGE5dGwOkL5gymIo6A5hBsi5YCMbE7/LKCyRVmmoOadwpmg2QRguFg
8mTsJ6SmABMEg3wCqSVxiRcMHpc8b23nF1FHLAHwsbvOlYKaFlsTT3w+vjif
DEbno/N3n1EgoDAilTOZsl4mtTJta+aCBr1P7kCh0pYIM0QfFhzEGFSNSWPd
rxsEQNM4ZCMZb7b1BWPbziDWYLRK+wvp36A9BJUBpq/CCH4sPbCgvi9XGYtH
wdrLatYAI+XLUurUEpx1MKswsyWO0WzRQnG3gPkOWkSSkMF2lWWuxRrDQstK
nQgkQWAR8Y8UekURUAuM51HSNEnbvAbeecw0bA7zHIBaBuQJRWqt9UA4pFX4
OI8NIYXAaRqQkt4lOaA6ZdvQdn5eABepF7PEJ9UHPxEiknAaRuAoAuNSYHuh
31XbWsMlJWEc5PbCu0W2qxtABWwpWCqwX8RDtniKlhHNPAZesQ3gmmYeEMh2
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
i9h2/hct3jM78mEAAA==

-->

</rfc>
