<?xml version="1.0" encoding="us-ascii"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.5.25 (Ruby 2.7.0) -->


<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [

<!ENTITY RFC1421 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.1421.xml">
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2986 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2986.xml">
<!ENTITY RFC4210 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4210.xml">
<!ENTITY RFC4648 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4648.xml">
<!ENTITY RFC5280 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml">
<!ENTITY RFC5652 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5652.xml">
<!ENTITY RFC5958 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5958.xml">
<!ENTITY RFC7468 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7468.xml">
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8411 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8411.xml">
<!ENTITY I-D.draft-ounsworth-pq-composite-sigs-03 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ounsworth-pq-composite-sigs-03.xml">
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-ounsworth-pq-explicit-composite-keys-01" category="std">
  <front>
    <title abbrev="PQ Explicit Composite Keys">Explicit Pairwise Composite Keys For Use In Internet PKI</title>

    <author initials="M." surname="Ounsworth (Editor)" fullname="Mike Ounsworth">
      <organization abbrev="Entrust">Entrust Limited</organization>
      <address>
        <postal>
          <street>2500 Solandt Road -- Suite 100</street>
          <city>Ottawa, Ontario</city>
          <code>K2K 3G5</code>
          <country>Canada</country>
        </postal>
        <email>mike.ounsworth@entrust.com</email>
      </address>
    </author>
    <author initials="S." surname="Mister" fullname="Serge Mister">
      <organization abbrev="Entrust">Entrust Limited</organization>
      <address>
        <postal>
          <street>1000 Innovation Drive</street>
          <city>Ottawa, Ontario</city>
          <code>K2K 1E3</code>
          <country>Canada</country>
        </postal>
        <email>serge.mister@entrust.com</email>
      </address>
    </author>
    <author initials="J." surname="Gray" fullname="John Gray">
      <organization abbrev="Entrust">Entrust Limited</organization>
      <address>
        <postal>
          <street>1000 Innovation Drive</street>
          <city>Ottawa, Ontario</city>
          <country>Canada</country>
        </postal>
        <email>john.gray@entrust.com</email>
      </address>
    </author>

    <date year="2022" month="February" day="12"/>

    <area>Security</area>
    <workgroup>LAMPS</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>With the widespread adoption of post-quantum cryptography will come the need for an entity to possess multiple public keys on different cryptographic algorithms. Since the trustworthiness of individual post-quantum algorithms is at question, a multi-key cryptographic operation will need to be performed in such a way that breaking it requires breaking each of the component algorithms individually. This requires defining new structures for holding composite public keys and composite signature data. This draft defines a structure generic enough to be useful beyond the post-quantum transition for any situation where a widely-supported but untrusted algorithm is being migrated to newer cryptography.</t>

<t>This document defines structures for binding an explicit pair of cryptographic algorithms together into a single object identifier, and it provides ASN.1 structures for encoding these pairwise composite public keys, private keys in wire protocols, as well as using them in conjunction with composite signatures, encryption and key transport mechanisms.</t>

<!-- End of Abstract -->



    </abstract>



  </front>

  <middle>


<section anchor="sec-intro" title="Introduction">

<t>During the transition to post-quantum cryptography, there will be uncertainty as to the strength of cryptographic algorithms; we will no longer fully trust traditional cryptography such as RSA, Diffie-Hellman, DSA and their elliptic curve variants, but we will also not fully trust their post-quantum replacements until they have had sufficient scrutiny. Unlike previous cryptographic algorithm migrations, the choice of when to migrate and which algorithms to migrate to, is not so clear. Even after the migration period, it may be advantageous for an entity&#39;s cryptographic identity to be composed of multiple public-key algorithms.</t>

<t>The deployment of composite public keys and composite signatures using post-quantum algorithms will face two challenges</t>

<t><list style="symbols">
  <t>Algorithm strength uncertainty: During the transition period, some post-quantum signature and encryption algorithms will not be fully trusted, while also the trust in legacy public key algorithms will start to erode.  A relying party may learn some time after deployment that a public key algorithm has become untrustworthy, but in the interim, they may not know which algorithm an adversary has compromised.</t>
  <t>Backwards compatibility: During the transition period, post-quantum algorithms will not be supported by all clients.</t>
</list></t>

<t>This document provides a mechanism to address algorithm strength uncertainty by providing formats for encoding multiple public keys and private keys into existing fields.</t>

<t>This document provides structures to encode explicit composite algorithm identifiers and parameters for use with composite signature, encryption, and key transport mechanisms defined in ~~ TODO cite corresponding drafts properly ~~.</t>

<t>This document is intended for general applicability anywhere that public key or private key structures are used within PKIX protocols.</t>

<!-- End of Introduction section -->

<section anchor="sec-terminology" title="Terminology">
<t>The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;, &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;, &quot;NOT RECOMMENDED&quot;, &quot;MAY&quot;, and &quot;OPTIONAL&quot; in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"/>  <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>

<t>The following terms are used in this document:</t>

<t>ALGORITHM:
          An information object class for identifying the type of
            cryptographic operation to be performed. This document is
            primarily concerned with algorithms for producing digital
            signatures, though the public key structure could just as
            easily hold encryption keys.</t>

<t>BER:
          Basic Encoding Rules (BER) as defined in <xref target="X.690"></xref>.</t>

<t>COMPONENT ALGORITHM:
          A single basic algorithm which is contained within a
            composite algorithm.</t>

<t>COMPOSITE ALGORITHM:
          An algorithm which is a sequence of one or more component
            algorithms, as defined in <xref target="sec-composite-structs"/>.</t>

<t>DER:
          Distinguished Encoding Rules as defined in <xref target="X.690"></xref>.</t>

<t>EXPLICIT COMPOSITE:
          Composite structures where the AlgorithmIdentifier OID explicitly
            defines the component algorithms. This case allows simplification
            and compression of the data structures.</t>

<t>GENERIC COMPOSITE:
          Composite structures that are agnostic to the choice of Algorithms
            that they carry.</t>

<t>PUBLIC / PRIVATE KEY:
          The public and private portion of an asymmetric cryptographic
            key, making no assumptions about which algorithm.</t>

<t>PRIMITIVE PUBLIC KEY / SIGNATURE:
          A public key or signature object of a non-composite algorithm
            type.</t>

<t>SIGNATURE:
          A digital cryptographic signature, making no assumptions
            about which algorithm.</t>

</section>
</section>
<section anchor="sec-composite-structs" title="Composite Structures">
<t>In order for public keys and signatures to be composed of pairs of algorithms, we define encodings consisting of a sequence of public key and signature primitives (aka &quot;component algorithms&quot;) such that these structures can be used as a drop-in replacement for existing public key or signature fields such as those found in PKCS#10 <xref target="RFC2986"></xref>, CMP <xref target="RFC4210"></xref>, X.509 <xref target="RFC5280"></xref>, CMS <xref target="RFC5652"></xref>.</t>

<t>This section defines the following structures:</t>

<t>~~ TODO ~~</t>

<section anchor="composite-keys" title="Composite Keys">

<t>A composite key is a single key object that performs an atomic signature or verification operation, using its encapsulated pair of component keys.</t>

<t>Explicit pairs can easily be defined by simply providing an OBJECT IDENTIFIER and two existing PUBLIC-KEY types to the pk-explicitComposite object class, and assigning an OID to the resulting structure. See examples of defining explicit pairs in <xref target="sec-appdx-defining-pairs"/>.</t>

<figure><artwork type="asn.1"><![CDATA[
-- TODO - CERT-KEY-USAGE should contain the intersection of the usages from firstPublicKey, secondPublicKey and the four listed below
-- pk-explicitComposite - Composite public key information object

pk-explicitComposite{OBJECT IDENTIFIER:id, PUBLIC-KEY:firstPublicKey, FirstPublicKeyType, PUBLIC-KEY:secondPublicKey, SecondPublicKeyType} PUBLIC-KEY ::= {
    IDENTIFIER id
    KEY ExplicitCompositePublicKey{firstPublicKey, FirstPublicKeyType, secondPublicKey, SecondPublicKeyType}
    PARAMS ARE absent
    CERT-KEY-USAGE {digitalSignature, nonRepudiation, keyCertSign, cRLSign}
}
]]></artwork></figure>

<t>The following ASN.1 object class then automatically generates the public key structure from the types defined in pk-explicitComposite.</t>

<figure><artwork type="asn.1" name="ExpliciteCompositeAlgorithmObject-asn.1-structures"><![CDATA[
-- ExplicitCompositePublicKey - The data structure for a composite public key
-- sec-alg-identifier and SecondPublicKeyType are needed because PUBLIC-KEY contains
-- a set of public key types, not a single type.
-- TODO The parameters should be optional only if they are marked optional in the PUBLIC-KEY


ExplicitCompositePublicKey{PUBLIC-KEY:firstPublicKey, FirstPublicKeyType, PUBLIC-KEY:secondPublicKey, SecondPublicKeyType} ::= SEQUENCE {
    firstPublicKey SEQUENCE {
        params firstPublicKey.&Params OPTIONAL,
        publicKey FirstPublicKeyType
    },
    secondPublicKey SEQUENCE {
        params secondPublicKey.&Params OPTIONAL,
        publicKey SecondPublicKeyType
    }
}
]]></artwork></figure>

</section>
<section anchor="composite-private-key" title="Composite Private Key">

<t>EDNOTE: THIS IS WRONG. (copied from generic draft) we need to do some work to come up with a private key structure.</t>

<t>The composite private key data is represented by the following structure:</t>

<figure><artwork type="asn.1" name="CompositePrivateKey-asn.1-structures"><![CDATA[
CompositePrivateKey ::= SEQUENCE SIZE (2..MAX) OF OneAsymmetricKey
]]></artwork></figure>

<t>Each element is a OneAsymmetricKey <xref target="RFC5958"></xref> object for a component private key.</t>

<t>The corresponding AlgorithmIdentifier for a composite private key MUST use the id-alg-composite object identifier, and the parameters field MUST be absent.</t>

<t>A CompositePrivateKey MUST contain at least one component private key, and they MUST be in the same order as in the corresponding CompositePublicKey.</t>

</section>
<section anchor="sec-composite-sig-structs" title="Composite Signature">

<t>The structure pk-explicitComposite contains all the necessary information in order for the ASN.1 compiler to generate composite signature structures that are explicitely bound to the specified pair of algorithms.</t>

<t>EDNOTE: Is this helping, or adding complexity for no reason? In theory, explicit composite public keys can be used with generic composite signature and encryption structures (ie the SEQUENC OF model).</t>

<section anchor="explicit-signature-params" title="Explicit Signature Params">

<t>The following ASN.1 object class then automatically generates the signature params structure from the types defined in pk-explicitComposite.</t>

<figure><artwork type="asn.1"><![CDATA[
-- ExplicitSignatureParams - The data structure for composite signature parameters
-- TODO firstParams and secondParams should be optional only if they are marked optional
-- in SIGNATURE-ALGORITHM

ExplicitSignatureParams{SIGNATURE-ALGORITHM:firstAlg, SIGNATURE-ALGORITHM:secondAlg} ::= SEQUENCE {
    firstParams firstAlg.&Params OPTIONAL,
    secondParams secondAlg.&Params OPTIONAL
}
]]></artwork></figure>

<t>EDNOTE: we need some help from the community on the ASN.1 here: &quot;OPTIONAL&quot; is not really the right semantics here; we really mean that they params here should be present or absent when the corresponding params are present or absent in ExplicitCompositePublicKey, which ought to be enforcable by the ASN.1 compiler, but we can&#39;t figure out the syntax for declaring that.</t>

</section>
<section anchor="explicit-composite-signature-algorithm" title="Explicit Composite Signature Algorithm">

<t>The following ASN.1 object class then automatically generates the signature algorithm structure from the types defined in pk-explicitComposite.</t>

<figure><artwork type="asn.1"><![CDATA[
-- TODO - Would it be possible to make these definitions compatible with n signature algorithms instead of 2?  Is it desired?
-- sa-explicitCompositeSignatureAlgorithm - Composite signature algorithm information object

sa-explicitCompositeSignatureAlgorithm{OBJECT IDENTIFIER:algId, SIGNATURE-ALGORITHM:firstAlg, PUBLIC-KEY:firstPublicKey, FirstPublicKeyType, SIGNATURE-ALGORITHM:secondAlg, PUBLIC-KEY:secondPublicKey, SecondPublicKeyType} SIGNATURE-ALGORITHM ::= {
    IDENTIFIER algId
    VALUE ExplicitCompositeSignatureValue{firstAlg.&Value, secondAlg.&Value}
    PARAMS TYPE ExplicitSignatureParams{firstAlg, secondAlg} ARE required
    PUBLIC-KEYS { pk-explicitComposite{algId, firstPublicKey, FirstPublicKeyType, secondPublicKey, SecondPublicKeyType} }
    SMIME-CAPS { IDENTIFIED BY algId }
}
]]></artwork></figure>

</section>
<section anchor="explicit-encryption-and-key-exchange-params" title="Explicit Encryption and Key Exchange Params">

<t>~~ TODO ~~ Need analogous structures to the signature ones above.</t>

</section>
</section>
<section anchor="sec-encoding-rules" title="Encoding Rules">
<!-- EDNOTE 7: Examples of how other specifications specify how a data structure is converted to a bit string can be found in RFC 2313, section 10.1.4, 3279 section 2.3.5, and RFC 4055, section 3.2. -->

<t>Many protocol specifications will require that the composite public key, composite private key, and composite signature data structures be represented by an octet string.</t>

<t>When an octet string is required, the DER encoding of the composite data structure SHALL be used directly.</t>

<t>When a bit string is required, the octets of the DER encoded composite data structure SHALL be used as the bits of the bit string, with the most significant bit of the first octet becoming the first bit, and so on, ending with the least significant bit of the last octet becoming the last bit of the bit string.</t>

<t>In the interests of simplicity and avoiding compatibility issues, implementations that parse these structures MAY accept both BER and DER.</t>

</section>
</section>
<section anchor="sec-in-pract" title="In Practice">

<t>This section addresses practical issues of how this draft affects other protocols and standards.</t>

<t>~~~ BEGIN EDNOTE 10~~~</t>

<t>EDNOTE 10: Possible topics to address:</t>

<t><list style="symbols">
  <t>The size of these certs and cert chains.</t>
  <t>In particular, implications for (large) composite keys / signatures / certs on the handshake stages of TLS and IKEv2.</t>
  <t>If a cert in the chain is a composite cert then does the whole chain need to be of composite Certs?</t>
  <t>We could also explain that the root CA cert does not have to be of the same algorithms. The root cert SHOULD NOT be transferred in the authentication exchange to save transport overhead and thus it can be different than the intermediate and leaf certs.</t>
  <t>We could talk about overhead (size and processing).</t>
  <t>We could also discuss backwards compatibility.</t>
  <t>We could include a subsection about implementation considerations.</t>
</list></t>

<t>~~~ END EDNOTE 10~~~</t>

<section anchor="pem-storage-of-composite-private-keys" title="PEM Storage of Composite Private Keys">

<t>CompositePrivateKeys can be encoded to the PEM format by placing a CompositePrivateKey into the privateKey field of a PrivateKeyInfo or OneAsymmetricKey object, and then applying the PEM encoding rules as defined in <xref target="RFC7468"></xref> section 10 and 11 for plaintext and encrypted private keys, respectively.</t>

</section>
<section anchor="asymmetric-key-packages-cms" title="Asymmetric Key Packages (CMS)">

<t>The Cryptographic Message Syntax (CMS), as defined in <xref target="RFC5652"></xref>, can be used to digitally sign, digest, authenticate, or encrypt the asymmetric key format content type.</t>

<t>When encoding composite private keys, the privateKeyAlgorithm in the OneAsymmetricKey SHALL be set to id-alg-composite.</t>

<t>The parameters of the privateKeyAlgorithm SHALL be a sequence of AlgorithmIdentifier objects, each of which are encoded according to the rules defined for each of the different keys in the composite private key.</t>

<t>The value of the privateKey field in the OneAsymmetricKey SHALL be set to the DER encoding of the SEQUENCE of private key values that make up the composite key. The number and order of elements in the sequence SHALL be the same as identified in the sequence of parameters in the privateKeyAlgorithm.</t>

<t>The value of the publicKey (if present) SHALL be set to the DER encoding of the corresponding CompositePublicKey. If this field is present, the number and order of component keys MUST be the same as identified in the sequence of parameters in the privateKeyAlgorithm.</t>

<t>The value of the attributes is encoded as usual.</t>

</section>
<section anchor="cryptographic-protocols" title="Cryptographic protocols">
<t>This section talks about how protocols like (D)TLS and IKEv2 are affected by this specifications. It will not attempt to solve all these problems, but it will explain the rationale, how things will work and what open problems need to be solved. Obvious issues that need to be discussed.</t>

<t><list style="symbols">
  <t>How does the protocol declare support for composite signatures?  TLS has hooks for declaring support for specific signature algorithms, however it would need to be extended, because the client would need to declare support for both the composite infrastructure, as well as for the various component signature algorithms.</t>
  <t>How does the protocol use the multiple keys.  The obvious way would be to have the server sign using its composite public key; is this sufficient.</t>
  <t>Overhead; including certificate size, signature processing time, and size of the signature.</t>
  <t>How to deal with crypto protocols that use public key encryption algorithms; this document only lists how to work with signature algorithms.  Encoding composite public keys is straightforward; encoding composite ciphertexts is less so - we decided to put that off to another draft.</t>
</list></t>

<!-- End of In Practice section -->

</section>
</section>
<section anchor="sec-iana" title="IANA Considerations">

<t>This draft does not define any OIDs, however derivative drafts that define concrete algorithm pairs will. The authors suggest that IANA assign OIDs for explicit composite pairs on the id-pkix arc under a composite() arc.</t>

<figure><artwork><![CDATA[
id-alg-composite OBJECT IDENTIFIER ::= {
    iso(1) identified-organization(3) dod(6) internet(1) security(5)
    mechanisms(5) pkix(7) algorithms(6) composite(??) }
]]></artwork></figure>

<!-- End of IANA Considerations section -->

</section>
<section anchor="security-considerations" title="Security Considerations">

<section anchor="policy-for-deprecated-and-acceptable-algorithms" title="Policy for Deprecated and Acceptable Algorithms">

<t>Traditionally, a public key, certificate, or signature contains a single cryptographic algorithm. If and when an algorithm becomes deprecated (for example, RSA-512, or SHA1), it is obvious that structures using that algorithm are implicitly revoked.</t>

<t>In the composite model this is less obvious since a single public key, certificate, or signature may contain a mixture of deprecated and non-deprecated algorithms. Moreover, implementers may decide that certain cryptographic algorithms have complementary security properties and are acceptable in combination even though neither algorithm is acceptable by itself.</t>

<t>Specifying a modified verification algorithm to handle these situations is beyond the scope of this draft, but could be desirable as the subject of an application profile document, or to be up to the discretion of implementers.</t>

<figure><artwork><![CDATA[
2. Check policy to see whether A1, A2, ..., An constitutes a valid
   combination of algorithms.

   if not checkPolicy(A1, A2, ..., An), then
     output "Invalid signature"
]]></artwork></figure>

<t>While intentionally not specified in this document, implementors should put careful thought into implementing a meaningfull policy mechinism within the context of their signature verification engines, for example only algorithms that provide similar security levels should be combined together.</t>

</section>
<section anchor="protection-of-private-keys" title="Protection of Private Keys">

<t>Structures described in this document do not protect private keys in any way unless combined with a security protocol or encryption properties of the objects (if any) where the CompositePrivateKey is used (see next Section).</t>

<t>Protection of the private keys is vital to public key cryptography. The consequences of disclosure depend on the purpose of the private key. If a private key is used for signature, then the disclosure allows unauthorized signing. If a private key is used for key management, then disclosure allows unauthorized parties to access the managed keying material. The encryption algorithm used in the encryption process must be at least as &#39;strong&#39; as the key it is protecting.</t>

</section>
<section anchor="checking-for-compromised-key-reuse" title="Checking for Compromised Key Reuse">

<t>CA implementations need to be careful when checking for compromised key reuse, for example as required by WebTrust regulations; when checking for compromised keys, you MUST unpack the CompositePublicKey structure and compare individual component keys. In other words, when marking a key as revoked for key compromise, the individual component keys should be marked, not the composite key as a whole.</t>

<!-- End of Security Considerations section -->

</section>
</section>
<section anchor="appendices" title="Appendices">

<section anchor="asn1-module" title="ASN.1 Module">

<figure><artwork type="asn.1"><![CDATA[
<CODE STARTS>

Composite-Signatures-2019
  { TBD }

DEFINITIONS IMPLICIT TAGS ::= BEGIN

EXPORTS ALL;

IMPORTS
  PUBLIC-KEY, SIGNATURE-ALGORITHM
    FROM AlgorithmInformation-2009  -- RFC 5912 [X509ASN1]
      { iso(1) identified-organization(3) dod(6) internet(1)
        security(5) mechanisms(5) pkix(7) id-mod(0)
        id-mod-algorithmInformation-02(58) }

  SubjectPublicKeyInfo
    FROM PKIX1Explicit-2009
      { iso(1) identified-organization(3) dod(6) internet(1)
        security(5) mechanisms(5) pkix(7) id-mod(0)
        id-mod-pkix1-explicit-02(51) }

  OneAsymmetricKey
    FROM AsymmetricKeyPackageModuleV1
      { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1)
        pkcs-9(9) smime(16) modules(0)
        id-mod-asymmetricKeyPkgV1(50) } ;

--
-- Object Identifiers
--

id-alg-composite OBJECT IDENTIFIER ::= { TBD }

--
-- Public Key
--

pk-Composite PUBLIC-KEY ::= {
    IDENTIFIER id-alg-composite
    KEY CompositePublicKey
    PARAMS ARE absent
    CERT-KEY-USAGE
        { digitalSignature, nonRepudiation, keyCertSign, cRLSign }
    PRIVATE-KEY CompositePrivateKey
}

CompositePublicKey ::= SEQUENCE SIZE (2..MAX) OF SubjectPublicKeyInfo

CompositePrivateKey ::= SEQUENCE SIZE (2..MAX) OF OneAsymmetricKey

--
-- Signature Algorithm
--

sa-CompositeSignature SIGNATURE-ALGORITHM ::= {
    IDENTIFIER id-alg-composite
    VALUE CompositeSignatureValue
    PARAMS TYPE CompositeParams ARE required
    PUBLIC-KEYS { pk-Composite }
    SMIME-CAPS { IDENTIFIED BY id-alg-composite } }

CompositeParams ::= SEQUENCE SIZE (2..MAX) OF AlgorithmIdentifier

CompositeSignatureValue ::= SEQUENCE SIZE (2..MAX) OF BIT STRING

END

<CODE ENDS>

]]></artwork></figure>

</section>
<section anchor="sec-appdx-defining-pairs" title="Examples of defining explicit pairs">

<t>To add support for a new pair of algorithms, all that is required is the following two constructs:</t>

<figure><artwork type="asn.1"><![CDATA[
id-sa-entrust-sha256RSAandECDSA OBJECT IDENTIFIER ::= { 1 2 3 4 }

sa-entrust-sha256RSAandECDSA SIGNATURE-ALGORITHM ::= sa-explicitCompositeSignatureAlgorithm{
    id-sa-entrust-sha256RSAandECDSA,
    sa-sha256WithRSAEncryption,
    pk-rsa,
    RSAPublicKey,
    sa-ecdsaWithSHA256,
    pk-ec,
    ECPoint
}
]]></artwork></figure>

<t>TODO: run this through an ASN.1 compiler and list here what the final generated structures look like.</t>

</section>
<section anchor="intellectual-property-considerations" title="Intellectual Property Considerations">

<t>The following IPR Disclosure relates to this draft:</t>

<t>https://datatracker.ietf.org/ipr/3588/</t>

</section>
</section>
<section anchor="contributors-and-acknowledgements" title="Contributors and Acknowledgements">
<t>This document incorporates contributions and comments from a large group of experts. The Editors would especially like to acknowledge the expertise and tireless dedication of the following people, who attended many long meetings and generated millions of bytes of electronic mail and VOIP traffic over the past year in pursuit of this document:</t>

<t>John Gray (Entrust Datacard),
Serge Mister (Entrust Datacard),
Scott Fluhrer (Cisco Systems),
Panos Kampanakis (Cisco Systems),
Daniel Van Geest (ISARA), and
Tim Hollebeek (Digicert).</t>

<t>We are grateful to all, including any contributors who may have
been inadvertently omitted from this list.</t>

<t>This document borrows text from similar documents, including those referenced below. Thanks go to the authors of those
   documents.  &quot;Copying always makes things easier and less error prone&quot; - <xref target="RFC8411"></xref>.</t>

<!-- End of Contributors section -->

</section>


  </middle>

  <back>

    <references title='Normative References'>

&RFC1421;
&RFC2119;
&RFC2986;
&RFC4210;
&RFC4648;
&RFC5280;
&RFC5652;
&RFC5958;
&RFC7468;
&RFC8174;
&RFC8411;
<reference anchor="X.690" >
  <front>
    <title>Information technology - ASN.1 encoding Rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)</title>
    <author >
      <organization>ITU-T</organization>
    </author>
    <date year="2015" month="November"/>
  </front>
  <seriesInfo name="ISO/IEC" value="8825-1:2015"/>
</reference>


    </references>

    <references title='Informative References'>

&I-D.draft-ounsworth-pq-composite-sigs-03;


    </references>



  </back>

<!-- ##markdown-source:
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

-->

</rfc>
