<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="info" docName="draft-mittal-est-coap-ca-certs-00" indexInclude="true" ipr="trust200902" submissionType="independent" xml:lang="en">
  <front>
    <title abbrev="EST-coaps-ca-certs">Manufacturer-Signed CA Certificate Distribution for EST and EST-coaps Deployments</title>
    <seriesInfo name="Internet-Draft" value="draft-mittal-est-coap-ca-certs-00"/>
    <author fullname="Narinder Mittal" initials="N" surname="Mittal">
      <organization showOnFrontPage="true">Landis+Gyr</organization>
      <address>
        <email>narinder.mittal@landisgyr.com</email>
      </address>
    </author>
	<author fullname="Chris Hett" initials="C" surname="Hett">
      <organization showOnFrontPage="true">Landis+Gyr</organization>
      <address>
        <email>chris.hett@landisgyr.com</email>
      </address>
    </author>
    <date month="09" year="2026"/>
    <area>Security</area>
	<workgroup>Independant Submission</workgroup>
    <keyword>Internet-Draft</keyword>
    <keyword>EST</keyword>
    <keyword>CoAPS</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">This document describes a manufacturer-assisted mechanism for distributing operational certification authority (CA) certificates to devices using Enrollment over Secure Transport (EST) or EST over secure CoAP (EST-coaps).</t>
	 <t indent="0" pn="section-abstract-2">The mechanism is intended for deployments in which a device is manufactured before the operational PKI and EST server trust anchors are known. The device is provisioned during manufacturing with a manufacturer trust anchor. An operational CA certificate bundle is subsequently signed by the manufacturer, or by a manufacturer-authorized signing authority, and delivered through a manufacturer-specific EST alias.
	</t>
	<t indent="0" pn="section-abstract-3">The device validates the signed bundle using its manufacturer trust anchor before installing the contained CA certificates as operational trust anchors. This mechanism is limited to CA certificate bootstrap and does not change EST enrollment semantics, proof-of-possession requirements, certification authority policy, or authenticated EST operation following bootstrap.</t>
	
    </abstract>
  
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-terminology">Terminology</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-trustassumptions">Trust Model</xref></t>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-estalias">Manufacturer-Specific EST Alias</xref></t>
          </li>
		  <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-signedcaresponse">Manufacturer-Signed CA Certificate Bundle</xref></t>
			
			<ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2">
              <li pn="section-toc.1-1.5.2.1">
                <t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-cacertsformat">ManufacturerSignedCACerts Structure</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.2">
                <t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-cmsrequirements">CMS Content Requirements</xref></t>
              </li>
			  <li pn="section-toc.1-1.5.2.3">
                <t indent="0" pn="section-toc.1-1.5.2.3.1"><xref derivedContent="5.3" format="counter" sectionFormat="of" target="section-5.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-aliasbinding">Alias Binding</xref></t>
              </li>
            </ul>
			
			
          </li>
		  
		   
		  <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bootstraptransportlayer">Bootstrap Transport Layer</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2">
              <li pn="section-toc.1-1.6.2.1">
                <t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent="6.1" format="counter" sectionFormat="of" target="section-6.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-httpstransport">HTTPS Transport</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.2">
                <t indent="0" pn="section-toc.1-1.6.2.2.1"><xref derivedContent="6.2" format="counter" sectionFormat="of" target="section-6.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-coaptransport">CoAP Transport</xref></t>
              </li>
            </ul>
          </li>
		  
		 <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-clientprocessingrules">Client Processing Rules</xref></t>
          </li>
		   <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-serverprocessingrules">Server Processing Rules</xref></t>
          </li>
		  
		  
		   <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-dosconsiderations">Denial-of-Service Considerations</xref></t>
          </li>
       
	   
	   <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="10" format="counter" sectionFormat="of" target="section-10"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.10.2">
              <li pn="section-toc.1-1.10.2.1">
                <t indent="0" pn="section-toc.1-1.10.2.1.1"><xref derivedContent="10.1" format="counter" sectionFormat="of" target="section-10.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-sec-mankeyprotection">Manufacturer Signing Key Protection</xref></t>
              </li>
              <li pn="section-toc.1-1.10.2.2">
                <t indent="0" pn="section-toc.1-1.10.2.2.1"><xref derivedContent="10.2" format="counter" sectionFormat="of" target="section-10.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-sec-seperatesigningfunc">Separation of Manufacturer Signing Function</xref></t>
              </li>
              <li pn="section-toc.1-1.10.2.3">
                <t indent="0" pn="section-toc.1-1.10.2.3.1"><xref derivedContent="10.3" format="counter" sectionFormat="of" target="section-10.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-sec-noenrollment">No Enrollment Before Trust Bootstrap</xref></t>
              </li>
			   <li pn="section-toc.1-1.10.2.4">
                <t indent="0" pn="section-toc.1-1.10.2.4.1"><xref derivedContent="10.4" format="counter" sectionFormat="of" target="section-10.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-sec-cia">Cleartext Transport Risks</xref></t>
              </li>
			   <li pn="section-toc.1-1.10.2.5">
                <t indent="0" pn="section-toc.1-1.10.2.5.1"><xref derivedContent="10.5" format="counter" sectionFormat="of" target="section-10.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-sec-replay">Replay of Old CA Certificate Responses</xref></t>
              </li>
			   <li pn="section-toc.1-1.10.2.6">
                <t indent="0" pn="section-toc.1-1.10.2.6.1"><xref derivedContent="10.6" format="counter" sectionFormat="of" target="section-10.6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-sec-aliasrisk">Alias Substitution</xref></t>
              </li>
			  <li pn="section-toc.1-1.10.2.7">
                <t indent="0" pn="section-toc.1-1.10.2.7.1"><xref derivedContent="10.7" format="counter" sectionFormat="of" target="section-10.7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-sec-rollover">Operational CA Compromise or Rollover</xref></t>
              </li>
            </ul>
          </li>
		   <li pn="section-toc.1-1.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="11" format="counter" sectionFormat="of" target="section-11"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
		  
		  
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="intro" numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">Enrollment over Secure Transport (EST), defined in <xref target="RFC7030" format="default" sectionFormat="of" derivedContent="RFC7030"/>, provides certificate enrollment and CA certificate retrieval over HTTPS. EST-coaps, defined in <xref target="RFC9148" format="default" sectionFormat="of" derivedContent="RFC9148"/>, transports EST payloads over CoAP protected by DTLS for constrained IoT environments. <xref target="RFC9148" format="default" sectionFormat="of" derivedContent="RFC9148"/> defines EST over secure CoAP and maps EST functions such as /cacerts, /simpleenroll, /simplereenroll, and /csrattrs to shorter EST-coaps resources such as /crts, /sen, /sren, and /att. In all of these functions, EST client is expected to authenticate the EST server before accepting EST responses. </t>
	  
      <t indent="0" pn="section-1-2">In many deployments, devices are manufactured before the operational PKI hierarchy or EST server trust anchors are known. Such devices may be provisioned only with a manufacturer trust anchor at manufacturing time. Provisioning customer-specific trust anchors after manufacturing can add operational complexity, increase the likelihood of configuration errors, and complicate shipment or deployment logistics. </t>
	  
      <t indent="0" pn="section-1-3">Although <xref target="RFC7030" format="default" sectionFormat="of" derivedContent="RFC7030"/> already recognizes bootstrap distribution of CA certificates and allows a client to provisionally continue a TLS handshake to retrieve /cacerts when initial server authentication fails, it relies on manual or out-of-band authorization of the returned CA certificate data.
      </t>
	  
      <t indent="0" pn="section-1-4">This document provides a cryptographic authorization mechanism by defining a bootstrap mechanism that allows the client to retrieve operational CA certificates from a manufacturer-specific EST alias. The response is signed in advance by the manufacturer or a manufacturer-authorized signer. The client validates the response using the manufacturer trust anchor already provisioned in the device. </t>
	  
	  <t indent="0" pn="section-1-5">This extension is limited to CA certificate retrieval. It does not permit certificate enrollment, re-enrollment, server-side key generation, or CSR attribute retrieval until the client has installed and validated the operational trust anchor and can establish a normally authenticated EST or EST-coaps session. </t>
	  
	  <t indent="0" pn="section-1-6">This document does not modify <xref target="RFC7030" format="default" sectionFormat="of" derivedContent="RFC7030"/> or <xref target="RFC9148" format="default" sectionFormat="of" derivedContent="RFC9148"/>. It describes a deployment mechanism that may be used to securely distribute operator CA certificates to constrained devices prior to EST enrollment. </t>
	  
    </section>
    <section anchor="terminology" numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-terminology">Terminology</name>
      <t indent="0" pn="section-2-1">
    The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
    "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
    described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> 
    when, and only when, they appear in all capitals.
      </t>
      <t indent="0" pn="section-2-2">The terminology from <xref target="RFC7030" format="default" sectionFormat="of" derivedContent="RFC7030"/> and <xref target="RFC9148" format="default" sectionFormat="of" derivedContent="RFC9148"/> applies. This document additionally defines the following terms: </t>
	  <table anchor="definitions" align="center" pn="table-1">
          <name slugifiedName="name-definitions">Definitions</name>
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1">Term</th>
              <th align="left" colspan="1" rowspan="1">Definition</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1"> Manufacturer Trust Anchor  </td>
              <td align="left" colspan="1" rowspan="1"> A trust anchor provisioned into the EST client during manufacturing and used to validate manufacturer-signed bootstrap material. </td>
            </tr>
			<tr>
              <td align="left" colspan="1" rowspan="1"> Manufacturer Alias  </td>
              <td align="left" colspan="1" rowspan="1"> An EST or EST-coaps alias associated with a manufacturer or manufacturer trust domain. </td>
            </tr>
			<tr>
              <td align="left" colspan="1" rowspan="1"> Operational Trust Anchor </td>
              <td align="left" colspan="1" rowspan="1"> A CA certificate used by the device to authenticate the operational EST server and operational PKI. </td>
            </tr>
			<tr>
              <td align="left" colspan="1" rowspan="1"> Manufacturer-Signed CA Certificate Bundle </td>
              <td align="left" colspan="1" rowspan="1"> A CA certificate response whose exact content is signed by the manufacturer or a manufacturer-authorized signer. </td>
            </tr>
			<tr>
              <td align="left" colspan="1" rowspan="1"> Bootstrap CA Certificate Retrieval  </td>
              <td align="left" colspan="1" rowspan="1"> The limited retrieval operation defined by this document, used before the client can authenticate the EST server using the operational trust anchor. </td>
            </tr>
			<tr>
              <td align="left" colspan="1" rowspan="1"> Bootstrap-Only Session  </td>
              <td align="left" colspan="1" rowspan="1"> A TLS or DTLS session in which normal EST server authentication has not yet succeeded and only the bootstrap CA certificate retrieval operation is permitted. </td>
            </tr>
 
          </tbody>
        </table>
    </section>
    <section anchor="trustassumptions" numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-trustassumptions">Trust Model</name>
      <t indent="0" pn="section-3-1">The trust model is based on manufacturer authorization of the CA certificate response. </t>
	  <t indent="0" pn="section-3-2">During manufacturing: </t>
	  
      <ol spacing="normal" indent="3" pn="section-3-3" type="1">
        <li pn="section-3-3.1">The device is provisioned with a manufacturer trust anchor. </li>
        <li pn="section-3-3.2">The manufacturer trust anchor is stored in a protected trust store. </li>
		<li pn="section-3-3.3">The device is configured with the manufacturer alias or with a method to derive the appropriate manufacturer alias. </li>
      </ol>
	  
	  <t indent="0" pn="section-3-4">During deployment: </t>
	  
      <ol spacing="normal" indent="3" pn="section-3-5" type="1">
        <li pn="section-3-5.1">The deployment operator identifies the operational CA certificate set. </li>
        <li pn="section-3-5.2">The manufacturer, or a manufacturer-authorized signing authority, creates a ManufacturerSignedCACerts object containing the bootstrap alias, validity information, and operational CA certificate bundle. The ManufacturerSignedCACerts object is signed using CMS SignedData. The EST server publishes the resulting CMS SignedData object under a manufacturer-specific EST alias. </li>
		<li pn="section-3-5.4">The EST server does not need to perform runtime signing for bootstrap retrieval. </li>
      </ol>
	 
	 <t indent="0" pn="section-3-6">During bootstrap: </t>
	  
      <ol spacing="normal" indent="3" pn="section-3-7" type="1">
        <li pn="section-3-7.1">The EST client retrieves the CA certificate response from the manufacturer-specific alias. </li>
        <li pn="section-3-7.2">The EST client validates the manufacturer signature using the manufacturer trust anchor. </li>
		<li pn="section-3-7.3">If validation succeeds, the EST client installs the CA certificate set as operational trust anchors. </li>
		<li pn="section-3-7.4">The EST client establishes a new authenticated EST or EST-coaps session using the installed operational trust anchors. </li>
      </ol>
    </section>
	
	
	<section anchor="estalias" numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-estalias">Manufacturer-Specific EST Alias</name>
      <t indent="0" pn="section-4-1">The EST server <bcp14>SHALL</bcp14> expose a manufacturer-specific alias for bootstrap CA certificate retrieval. </t>
	  <t indent="0" pn="section-4-2">For EST over HTTPS, the alias <bcp14>MAY</bcp14> use the following form: </t>
	  <t indent="4" pn="section-4-3">/.well-known/est/{manufacturer-alias}/cacerts </t>
	  
	  <t indent="0" pn="section-4-6">For EST-coaps, the corresponding short operation <bcp14>SHOULD</bcp14> use the EST-coaps /crts function under the manufacturer alias: </t>
	  <t indent="4" pn="section-4-7">coaps://est.example.com/.well-known/est/{manufacturer-alias}/crts </t>
      <t indent="0" pn="section-4-10"><xref target="RFC9148" format="default" sectionFormat="of" derivedContent="RFC9148"/>  defines EST-coaps resource mappings, including the shorter /crts resource for CA certificate retrieval.  </t>

      <t indent="0" pn="section-4-11">The manufacturer alias identifies the manufacturer trust domain under which the response signature is validated. The manufacturer alias <bcp14>MUST</bcp14> be provisioned into the device during manufacturing or derived using a manufacturer-defined mechanism. The alias alone <bcp14>MUST NOT</bcp14>  be treated as authorization to install the returned CA certificates. Authorization is established only through successful validation of the CMS signature chain to a trusted Manufacturer Trust Anchor and successful completion of all validation requirements specified in this document. </t>
	  
	  <t indent="0" pn="section-4-12">A deployment <bcp14>MAY</bcp14> derive the manufacturer-specific EST alias from the manufacturer's IANA Private Enterprise Number (PEN).</t>
	  <t indent="4" pn="section-4-13">For example: </t>
	  <t indent="4" pn="section-4-14">/.well-known/est/mfg/{PEN}</t>
	  <t indent="0" pn="section-4-15">where {PEN} is the decimal representation of the manufacturer's assigned IANA Private Enterprise Number. Profiles adopting this mechanism <bcp14>MAY</bcp14> require use of this alias construction method to ensure interoperability. This document does not mandate a single alias construction method. </t>
    </section>
	

	<section anchor="signedcaresponse" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-signedcaresponse">Manufacturer-Signed CA Certificate Bundle</name>
      <t indent="0" pn="section-5-1">The EST server <bcp14>SHALL</bcp14> return the manufacturer-signed response in Cryptographic Message Syntax (CMS) format as defined by RFC <xref target="RFC5652" format="default" sectionFormat="of" derivedContent="RFC5652"/>. The SignedData object encapsulates a structured bootstrap object known as <bcp14>ManufacturerSignedCACerts</bcp14>. The manufacturer, or a manufacturer-authorized signing authority, signs this structure before it is published by the EST server. The EST server acts solely as a distribution point for the signed object and is not required to perform runtime signing.</t>
	  <t indent="0" pn="section-5-2">The client validates the CMS signature using the Manufacturer Trust Anchor provisioned during manufacturing. The client <bcp14>MUST</bcp14>  successfully validate the CMS signature and all associated processing rules defined in this document before installing any returned CA certificates as operational trust anchors. </t>
	  
      <section anchor="cacertsformat" numbered="true" toc="include" removeInRFC="false" pn="section-5.1">
      <name slugifiedName="name-cacertsformat">ManufacturerSignedCACerts Structure</name>
	   <t indent="0" pn="section-5.1-1">The CMS SignedData object <bcp14>SHALL</bcp14> encapsulate a ManufacturerSignedCACerts structure.</t>
	  
	   <sourcecode type="json" markers="false">
		ManufacturerSignedCACerts ::= SEQUENCE {
			version             INTEGER (1..MAX),
			alias               UTF8String,
			sequenceNumber      INTEGER (0..MAX),
			notBefore           GeneralizedTime,
			notAfter            GeneralizedTime,
			caCertificates      SEQUENCE SIZE (1..MAX) OF Certificate
		}
		</sourcecode>	  
		<t indent="0" pn="section-5.1-2">The fields have the following meanings:</t>
		<t indent="0" pn="section-5.1-3">version: Identifies the version of the ManufacturerSignedCACerts structure.</t>
		<t indent="0" pn="section-5.1-4">alias: Identifies the bootstrap alias associated with the CA certificate bundle.</t>
		<t indent="0" pn="section-5.1-5">sequenceNumber: An increasing value used by the client to detect replay and rollback attacks.</t>
		<t indent="0" pn="section-5.1-6">notBefore: The beginning of the validity interval for the signed bundle.</t>
		<t indent="0" pn="section-5.1-7">notAfter: The end of the validity interval for the signed bundle.</t>
		<t indent="0" pn="section-5.1-8">caCertificates: The operational CA certificate bundle intended for installation by the EST client.</t>
	  </section>
	  
	  <section anchor="cmsrequirements" numbered="true" toc="include" removeInRFC="false" pn="section-5.2">
      <name slugifiedName="name-cmsrequirements">CMS Content Requirements</name>
	   <t indent="0" pn="section-5.2-1">The CMS SignedData object <bcp14>SHALL</bcp14> include:</t>
	  
	   <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-5.2-2">
	   	    <li pn="section-5.2-2-1">A signature over the complete ManufacturerSignedCACerts structure. </li>
			<li pn="section-5.2-2-2">The manufacturer signing certificate. </li>
			<li pn="section-5.2-2-3">Any intermediate certificates required to build a certification path to the Manufacturer Trust Anchor. </li>
			<li pn="section-5.2-2-4">CMS signed attributes required to validate the signed content. </li>
        </ul>
	  <t indent="0" pn="section-5.2-3">The manufacturer signing certificate <bcp14>SHALL</bcp14> chain to a Manufacturer Trust Anchor provisioned in the device.</t>
	   <t indent="0" pn="section-5.2-4">The signer certificate <bcp14>SHOULD</bcp14> contain key usage and certificate policy information appropriate for bootstrap CA certificate response signing.</t>
	   <t indent="0" pn="section-5.2-5">The CMS SignedData object <bcp14>SHALL</bcp14> be conveyed using the "application/pkcs7-mime" media type defined for CMS objects.</t>
	  </section>
	 
	<section anchor="aliasbinding" numbered="true" toc="include" removeInRFC="false" pn="section-5.3">
      <name slugifiedName="name-aliasbinding">Alias Binding</name>
	   <t indent="0" pn="section-5.3-1">The alias field contained within the <bcp14>ManufacturerSignedCACerts</bcp14>  structure is protected by the CMS signature. The client <bcp14>MUST</bcp14> verify that the alias contained in the signed structure matches the alias associated with the bootstrap request. If the alias values do not match, the client <bcp14>MUST</bcp14>  reject the response and <bcp14>MUST NOT</bcp14> install any returned CA certificates. This validation prevents substitution of a valid manufacturer-signed bundle from one bootstrap alias into another alias context.</t>
	  </section>
	  
	  
    </section>
	
	<section anchor="bootstraptransportlayer" numbered="true" toc="include" removeInRFC="false" pn="section-6">
      <name slugifiedName="name-bootstraptransportlayer">Bootstrap Transport Layer</name>
	  <t indent="0" pn="section-6.1">A client that does not yet possess the operational trust anchor may be unable to authenticate the EST server certificate during TLS or DTLS server authentication. In that case, the client <bcp14>MUST NOT</bcp14> perform general EST operations. </t>
	   <t indent="0" pn="section-6.2">The client <bcp14>MAY</bcp14> perform only the bootstrap CA certificate retrieval operation defined by this document. </t>
	    <t indent="0" pn="section-6.3">Until the manufacturer signature has been validated and the operational trust anchor has been installed, the client <bcp14>MUST</bcp14> treat the transport as unauthenticated for EST authorization purposes. The TLS or DTLS connection provides transport services only and <bcp14>MUST NOT</bcp14> be interpreted as establishing server identity or authorization for any EST operation other than bootstrap CA certificate retrieval.</t>
	  
	  
	  <section anchor="httpstransport" numbered="true" toc="include" removeInRFC="false" pn="section-6.4">
      <name slugifiedName="name-httpstransport">HTTPS Transport</name>
	  <t indent="0" pn="section-6.4-1">For EST over HTTPS, the client <bcp14>MAY</bcp14> establish a TLS connection even when the EST server certificate cannot be validated against the client's current trust anchor store, but only for retrieving the manufacturer-signed CA certificate bundle. </t>
	  <t indent="0" pn="section-6.4-2">The client <bcp14>MUST NOT</bcp14> send certificate enrollment requests, CSRs, client credentials, long-term identifiers, or sensitive information over such a connection. </t>
	  <t indent="0" pn="section-6.4-3">The client <bcp14>MUST</bcp14> validate the manufacturer signature over the CA certificate response before installing any returned CA certificate. After the manufacturer signature is validated and the operational CA certificates are installed, the client <bcp14>MUST</bcp14> establish a new TLS session and perform normal EST server authentication before performing any non-bootstrap EST operation. </t>
	  
	  </section>
	  
	  <section anchor="coaptransport" numbered="true" toc="include" removeInRFC="false" pn="section-6.5">
      <name slugifiedName="name-coaptransport">CoAP Transport</name>
	  <t indent="0" pn="section-6.5-1">For EST-coaps, the client has two deployment options: </t>
	   <ol spacing="normal" indent="3" pn="section-6.5-2" type="1">
        <li pn="section-6.5-3">
		<t indent="0" pn="section-6.5-4">CoAP over DTLS with unauthenticated server certificate during bootstrap </t>
		<ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6.5-4-1">
			<li pn="section-6.5-4-2">The client establishes DTLS to the EST-coaps server. </li>
			<li pn="section-6.5-4-3">The server may present its operational certificate. </li>
			<li pn="section-6.5-4-4">The client records that the DTLS server authentication has not yet been validated. </li>
			<li pn="section-6.5-4-5">The client sends only the bootstrap /crts request. </li>
			<li pn="section-6.5-4-6">The client validates the manufacturer signature before accepting the returned CA certificates. </li>
        </ul>
		<t indent="0" pn="section-6.5-4-7">The unauthenticated TLS/DTLS connection provides transport services only and <bcp14>MUST NOT</bcp14> be interpreted as establishing server identity. </t>		
		
		</li>

		<li pn="section-6.5-5">
		<t indent="0" pn="section-6.5-6">CoAP without DTLS for bootstrap-only retrieval </t>
		<ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6.5-6-1">
			<li pn="section-6.5-6-2">The client retrieves only the manufacturer-signed CA certificate bundle. </li>
			<li pn="section-6.5-6-3">Integrity and origin authentication are provided by the manufacturer CMS signature, not by the transport. </li>
			<li pn="section-6.5-6-4">This mode <bcp14>MUST NOT</bcp14> be used for enrollment, re-enrollment, CSR attributes, server-side key generation, or any operation that exposes sensitive client information. </li>
        </ul>
		
		</li>
		
      </ol>
	   <t indent="0" pn="section-6.5-7">The first option is <bcp14>RECOMMENDED</bcp14> when feasible because it provides confidentiality against passive observers, although it does not provide full server authentication until the operational trust anchor is installed. </t>
	    <t indent="0" pn="section-6.5-8">The second option <bcp14>MAY</bcp14> be used where DTLS cannot be established before operational trust is available, provided that the response is public bootstrap material and the client validates the manufacturer signature before installation. </t>
	  
	  </section>


	  
    </section>
	
	
	<section anchor="clientprocessingrules" numbered="true" toc="include" removeInRFC="false" pn="section-7">
      <name slugifiedName="name-clientprocessingrules">Client Processing Rules</name>
	  <t indent="0" pn="section-7.1">The client <bcp14>MUST</bcp14> process the response as follows: </t>
	  <ol spacing="normal" indent="3" pn="section-7.2" type="1">
        <li pn="section-7.2-2">Retrieve the CMS SignedData certificate response from the manufacturer-specific alias. </li>
			<li pn="section-7.2-4">Build a certification path from the manufacturer signing certificate to the locally configured manufacturer trust anchor. </li>
			<li pn="section-7.2-5">Verify that the manufacturer signing certificate is authorized for bootstrap CA certificate response signing. </li>
			<li pn="section-7.2-6">Verify the CMS signature over the exact CA certificate response body. </li>
			<li pn="section-7.2-7">If validation succeeds, install the CA certificates into the operational trust anchor store. </li>
			<li pn="section-7.2-8">If validation fails, discard the CA certificates and log the failure.</li>
		
      </ol>
<t indent="0" pn="section-7.3">The client <bcp14>MUST NOT</bcp14> install CA certificates unless the manufacturer signature validates successfully. </t>
<t indent="0" pn="section-7.4">The client <bcp14>MUST NOT</bcp14> use the retrieved CA certificates for certificate enrollment until they have been installed as operational trust anchors and used to authenticate a new EST or EST-coaps session.</t>

	  
    </section>
   
	<section anchor="serverprocessingrules" numbered="true" toc="include" removeInRFC="false" pn="section-8">
      <name slugifiedName="name-serverprocessingrules">Server Processing Rules</name>
	  <t indent="0" pn="section-8.1">The EST server <bcp14>SHALL</bcp14> publish only manufacturer-approved CA certificate responses under the manufacturer-specific alias. </t>
	<t indent="0" pn="section-8.2">The EST server <bcp14>MAY</bcp14> serve the same static manufacturer-signed object to all devices of the corresponding manufacturer trust domain. </t>
	<t indent="0" pn="section-8.3">The EST server <bcp14>MUST NOT</bcp14> dynamically generate manufacturer signatures unless it possesses an authorized manufacturer signing credential or has access to a manufacturer-approved signing service.</t>
	<t indent="0" pn="section-8.4">The EST server <bcp14>MAY</bcp14> serve the bootstrap response as a cacheable object when deployment policy allows.</t>  
    </section>
	

<section anchor="dosconsiderations" numbered="true" toc="include" removeInRFC="false" pn="section-9">
      <name slugifiedName="name-dosconsiderations">Denial-of-Service Considerations</name>
	  <t indent="0" pn="section-9.1">Bootstrap CA certificate retrieval may occur before normal EST server authentication is available. Therefore, the EST server <bcp14>MUST</bcp14> be designed to resist unauthenticated requests. The server <bcp14>SHOULD</bcp14> apply the following protections:</t>
	  <ol spacing="normal" indent="3" pn="section-9.2" type="1">
		<li pn="section-9.2-2">Serve bootstrap CA certificate responses as static or precomputed objects. </li>
		<li pn="section-9.2-3">Avoid per-client database lookups for unauthenticated bootstrap requests. </li>
		<li pn="section-9.2-4">Avoid dynamic signing during request processing. </li>
		<li pn="section-9.2-5">Rate limit requests per source address, network prefix, manufacturer alias, and server instance.</li>
		<li pn="section-9.2-6">Use DTLS cookies or stateless retry mechanisms where DTLS is used. </li>
		<li pn="section-9.2-7">Limit the set of methods allowed on bootstrap aliases to GET only. </li>
		<li pn="section-9.2-8">Reject enrollment, re-enrollment, CSR attributes, and server-side key generation requests on bootstrap-only aliases.</li>
		<li pn="section-9.2-9">Use CoAP Block-Wise Transfer carefully so that block state does not create unbounded server memory usage.</li>
		<li pn="section-9.2-10">Apply response-size limits and amplification controls.</li>
		<li pn="section-9.2-11">Log abnormal request rates and repeated invalid alias requests.</li>
		<li pn="section-9.2-12">Allow operators to disable or throttle manufacturer aliases independently.</li>		
      </ol>
	  
    </section>

	<section anchor="sec" numbered="true" toc="include" removeInRFC="false" pn="section-10">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
	  
	  
      <section anchor="sec-mankeyprotection" numbered="true" toc="include" removeInRFC="false" pn="section-10.1">
        <name slugifiedName="name-sec-mankeyprotection">Manufacturer Signing Key Protection</name>
        <t indent="0" pn="section-10.1-1">The manufacturer signing private key is security critical. Compromise of this key could allow an attacker to create unauthorized CA certificate responses that devices may install as operational trust anchors.</t>
		<t indent="0" pn="section-10.1-2">The manufacturer signing key <bcp14>SHOULD</bcp14> be protected using a Hardware Security Module (HSM), Key Management System (KMS), or equivalent protected environment. The key <bcp14>SHOULD</bcp14> be generated and stored according to manufacturer key management policy and protected against unauthorized export.</t>
		<t indent="0" pn="section-10.1-3">Loss of control of the manufacturer signing key can compromise the security of all devices that trust the corresponding Manufacturer Trust Anchor.</t>
      </section>
	  
	  <section anchor="sec-seperatesigningfunc" numbered="true" toc="include" removeInRFC="false" pn="section-10.2">
        <name slugifiedName="name-sec-seperatesigningfunc">Separation of Manufacturer Signing Function</name>
        <t indent="0" pn="section-10.2-1">The manufacturer signing certificate <bcp14>SHOULD</bcp14> be dedicated to bootstrap CA certificate response signing.</t>
		<t indent="0" pn="section-10.2-2">It <bcp14>SHOULD NOT</bcp14> be reused for TLS server authentication, CA certificate issuance, firmware signing, or other unrelated purposes. Separation of duties reduces the impact of compromise of any individual key and simplifies authorization policy within the client.</t>
      </section>
	  
	  <section anchor="sec-noenrollment" numbered="true" toc="include" removeInRFC="false" pn="section-10.3">
        <name slugifiedName="name-sec-noenrollment">No Enrollment Before Trust Bootstrap</name>
        <t indent="0" pn="section-10.3-1">The client <bcp14>MUST</bcp14> complete manufacturer signature validation and operational trust anchor installation before initiating any EST operation over a new TLS or DTLS transport. This ensures that all non-bootstrap EST operations continue to rely on authenticated server communication.</t>
      </section>
	  
	  <section anchor="sec-cia" numbered="true" toc="include" removeInRFC="false" pn="section-10.4">
        <name slugifiedName="name-sec-cia">Cleartext Transport Risks</name>
        <t indent="0" pn="section-10.4-1">The manufacturer CMS signature provides integrity and origin authentication for the CA certificate response.</t>
		 <t indent="0" pn="section-10.4-2">If Cleartext HTTP or CoAP is used, it exposes the alias and the signed CA certificate bundle to passive observers. This is acceptable only if the bootstrap CA certificate response is considered public deployment metadata. Deployments that require confidentiality for the manufacturer alias and CA certificate bundle <bcp14>SHOULD</bcp14> use TLS or DTLS. Cleartext transport <bcp14>MUST NOT</bcp14> be used for credential exchange, enrollment requests, client authentication, or any operation involving sensitive client information.</t>
      </section>
  
	  <section anchor="sec-replay" numbered="true" toc="include" removeInRFC="false" pn="section-10.5">
        <name slugifiedName="name-sec-replay">Replay of Old CA Certificate Responses</name>
        <t indent="0" pn="section-10.5-1">A validly signed but old CA certificate bundle might be replayed by an attacker. To mitigate these attacks, the signed response <bcp14>SHOULD</bcp14> include validity information such as a sequence number, version information, or signing time. Clients <bcp14>SHOULD</bcp14> store the highest accepted sequence number or version for each alias and <bcp14>SHOULD</bcp14> reject older bundles.</t>
		 <t indent="0" pn="section-10.5-2">If the client possesses a reliable source of time, the client <bcp14>MUST</bcp14> verify that the current time falls within the validity interval defined by notBefore and notAfter.</t>
		 <t indent="0" pn="section-10.5-3">If reliable time is unavailable, the client <bcp14>MAY</bcp14> defer validity interval verification and rely on sequenceNumber-based freshness validation. Once authenticated time is available, the client <bcp14>SHOULD</bcp14> verify the validity interval and apply local policy if the bundle falls outside the defined validity period.</t>
      </section>
  	  
	<section anchor="sec-aliasrisk" numbered="true" toc="include" removeInRFC="false" pn="section-10.6">
        <name slugifiedName="name-sec-aliasrisk">Alias Substitution</name>
        <t indent="0" pn="section-10.6-1">An attacker might attempt to substitute a signed object intended for one alias into the response for another alias. To prevent this, the alias <bcp14>MUST</bcp14> be included in the CMS-protected content. The client <bcp14>MUST</bcp14> verify that the protected alias matches the requested alias or an equivalent locally configured alias.</t>
      </section>
	  
	  <section anchor="sec-rollover" numbered="true" toc="include" removeInRFC="false" pn="section-10.7">
        <name slugifiedName="name-sec-rollover">Operational CA Compromise or Rollover</name>
        <t indent="0" pn="section-10.7-1">This mechanism can be used to distribute replacement operational trust anchors following operational CA rollover, CA expiration, CA compromise, or other trust-anchor transition events. A manufacturer-signed bundle may contain new operational CA certificates, replacement operational CA certificates, or a complete replacement trust-anchor set. </t>
		<t indent="0" pn="section-10.7-2">Clients <bcp14>MUST</bcp14> apply local trust-anchor management policy when processing a newly validated bundle. </t>
		<t indent="0" pn="section-10.7-3">Deployments that permit trust-anchor replacement through manufacturer-signed bundles <bcp14>SHOULD</bcp14> ensure that sequence number processing prevents rollback to previously accepted trust-anchor sets. A successfully validated manufacturer-signed bundle <bcp14>MAY</bcp14> update, replace, or augment existing operational trust anchors in accordance with local policy and without requiring out-of-band authorization.</t>
		
      </section>
	  
    </section>
  
	 
   <section anchor="iana" numbered="true" toc="include" removeInRFC="false" pn="section-11">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
	  <t indent="0" pn="section-11-1">This document does not define any new protocol message types, URI schemes, CoAP methods, HTTP methods, TLS extensions, DTLS extensions, certificate extensions, or registries. The manufacturer alias defined by this document is represented as part of the EST or EST-coaps URI path and is not an IANA-registered parameter. </t>
	  
	   <t indent="0" pn="section-11-2">No IANA actions are required by this document. </t>
     </section>
  
  </middle>
  <back>
    <references pn="section-12">
      <name slugifiedName="name-references">References</name>
      <references pn="section-12.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1997" month="March"/>
            <abstract>
              <t indent="0">In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>      

       <reference anchor="RFC5652" target="https://www.rfc-editor.org/info/rfc5652" quoteTitle="true" derivedAnchor="RFC5652">
		  <front>
			<title>Cryptographic Message Syntax (CMS)</title>
			<author initials="R." surname="Housley" fullname="R. Housley" role="editor">
			  <organization showOnFrontPage="true"/>
			</author>
			<date year="2009" month="September"/>
			<abstract>
			  <t indent="0">This document describes the Cryptographic Message Syntax (CMS). CMS provides a general syntax for protecting data with digital signatures, message authentication codes, and encryption.</t>
			</abstract>
		  </front>
		  <seriesInfo name="RFC" value="5652"/>
		  <seriesInfo name="DOI" value="10.17487/RFC5652"/>
		</reference>
	
        
        <reference anchor="RFC7030" target="https://www.rfc-editor.org/info/rfc7030" quoteTitle="true" derivedAnchor="RFC7030">
          <front>
            <title>Enrollment over Secure Transport</title>
            <author initials="M." surname="Pritikin" fullname="M. Pritikin" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="P." surname="Yee" fullname="P. Yee" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Harkins" fullname="D. Harkins" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2013" month="October"/>
            <abstract>
              <t indent="0">This document profiles certificate enrollment for clients using Certificate Management over CMS (CMC) messages over a secure transport.  This profile, called Enrollment over Secure Transport (EST), describes a simple, yet functional, certificate management protocol targeting Public Key Infrastructure (PKI) clients that need to acquire client certificates and associated Certification Authority (CA) certificates.  It also supports client-generated public/private key pairs as well as key pairs generated by the CA.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7030"/>
          <seriesInfo name="DOI" value="10.17487/RFC7030"/>
        </reference>
        
		
 
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="May"/>
            <abstract>
              <t indent="0">RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
       
   
        
        
        
		<reference anchor="RFC9148" target="https://www.rfc-editor.org/info/rfc9148" quoteTitle="true" derivedAnchor="RFC9148">
          <front>
            <title>EST-coaps: Enrollment over Secure Transport with the Secure Constrained Application Protocol</title>
            <author fullname="Peter van der Stok" initials="P." surname="van der Stok">
			  <organization showOnFrontPage="true">Consultant</organization>
			</author>
			<author fullname="Panos Kampanakis" initials="P" surname="Kampanakis">
			  <organization showOnFrontPage="true">Cisco Systems</organization>
			</author>
			<author fullname="Michael C. Richardson" initials="M." surname="Richardson">
			  <organization abbrev="SSW" showOnFrontPage="true">Sandelman Software Works</organization>
			</author>
			<author fullname="Shahid Raza" initials="S" surname="Raza">
			  <organization showOnFrontPage="true">RISE Research Institutes of Sweden</organization>
			</author>
            <date year="2022" month="April"/>
			<abstract>
            <t indent="0">Enrollment over Secure Transport (EST) is used as a certificate provisioning
				protocol over HTTPS. Low-resource devices often use the lightweight Constrained
				Application Protocol (CoAP) for message exchanges. This document defines how to
	  transport EST payloads over secure CoAP (EST-coaps), which allows
	  constrained devices to use existing EST functionality for provisioning certificates.
		</t>
		 </abstract>
          </front>
          <seriesInfo name="RFC" value="9148"/>
          <seriesInfo name="DOI" value="10.17487/RFC9148"/>
        </reference>
      </references>
    </references>
	
	<section>
<name>Operational Scenario Example</name>
<t>This section expands on the Operational Scenario Overviews by providing detailed examples of the messages. This appendix is informative and provided only as an example.</t>

<section>
<name>Obtaining CA certificates with embedded manufacturer trust</name>
<t>The following is an example of a valid /cacerts with manufacturer alias</t>
<sourcecode type="coap" markers="false">
GET /.well-known/est/{manufacturer-alias}/cacerts HTTP/1.1
User-Agent: curl/7.22.0 (i686-pc-linux-gnu) libcurl/7.22.0 OpenS
SL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
Host: 192.0.2.1:8085
Accept: */*
</sourcecode>
<t>In response, server provides the response:</t>
<sourcecode type="coap" markers="false">  
HTTP/1.1 200 OK
Status: 200 OK
Content-Type: application/cms
Content-Transfer-Encoding: base64
Content-Length: 647
 
MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0B
BwGgggFOMIIBSjCB8aADAgECAgEBMAoGCCqGSM49BAMCMB4xHDAJBgNVBAYTAlJV
MA8GA1UEAx4IAFQAZQBzAHQwHhcNMjMwNzE4MjAwNzE0WhcNMjQwNzE4MjAwNzE0
WjAeMRwwCQYDVQQGEwJSVTAPBgNVBAMeCABUAGUAcwB0MFkwEwYHKoZIzj0CAQYI
KoZIzj0DAQcDQgAEr13czVhlDbc3Y3o/sYXvEWBxVIjEqMWQwo8eSvwJxkb5dZoV
qoOcwoVYQ2ADq7+hpbzcosYF3Zm/fYUY//RV9qMgMB4wDwYDVR0TBAgwBgEB/wIB
AzALBgNVHQ8EBAMCAAYwCgYIKoZIzj0EAwIDSAAwRQIhAPbH2ODIYTya2rRP6vz8
KERaH5Lro84ImJbePBzxRqd3AiBWWFI7bvNy9MtsWH/wDM9360E7vtRUdNvW0L7a
Z72O7jGB+jCB9wIBATAjMB4xHDAJBgNVBAYTAlJVMA8GA1UEAx4IAFQAZQBzAHQC
AQEwDQYJYIZIAWUDBAIBBQCgaTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwG
CSqGSIb3DQEJBTEPFw0yMzA3MTgyMDA3MTRaMC8GCSqGSIb3DQEJBDEiBCCN5SFU
PprUlKgWp/V/CxMLKKHU1mjtY/WttBvrXTN8DjAKBggqhkjOPQQDAgRHMEUCICRg
kFOpxXsJIuKk8IQapP6tRweZmV7s8AZ3rXeW3wYsAiEArysc8vCTt6jFbXvdv72m
T261hpld0ggKQEVbJ+ePjv8AAAAAAAA=
</sourcecode>
<t>Response content structure in CMS Format:</t>
<sourcecode type="json" markers="false">
ContentInfo {
    contentType id-signedData, 
				//(Value = 1.2.840.113549.1.7.2)
    content     SignedData
}
 
SignedData {
   version           CMSVersion, (Value = 3)
   digestAlgorithms  SET OF DigestAlgorithmIdentifier, 
					//(Value = 2.16.840.1.101.3.4.2.1)
   encapContentInfo  EncapsulatedContentInfo,
   certificates      CertificateSet, //(Manufacturer Signing Certificate with Full Chain)
   crls              CertificateRevocationLists, //(Optional)
   signerInfos       SET OF SignerInfo 
}
 
SignerInfo {
    version             CMSVersion, //(Value = 3)
    sid                 SignerIdentifier,
    digestAlgorithm     DigestAlgorithmIdentifier, 
						//(Value = 2.16.840.1.101.3.4.2.1)
    signedAttrs         SignedAttributes,
    signatureAlgorithm  SignatureAlgorithmIdentifier, 
						//(Value = 1.2.840.10045.4.3.2)
    signature           SignatureValue,
    unsignedAttrs       UnsignedAttributes //(Optional)
}                                       
 
SignerIdentifier ::= CHOICE {
	issuerAndSerialNumber IssuerAndSerialNumber,
	subjectKeyIdentifier [0] SubjectKeyIdentifier  //(Preferred to Use)
}
 
SignedAttributes ::= SET SIZE (1..MAX) OF Attribute 
				// (Sample Paramterse
					// ContentType - 1.2.840.113549.1.9.3 
					// MessageDigest - 1.2.840.113549.1.9.4 
					// SigningTime - 1.2.840.113549.1.9.5
				// )

Attribute ::= SEQUENCE {
	attrType OBJECT IDENTIFIER,
	attrValues SET OF AttributeValue 
}
 
AttributeValue ::= ANY
 
EncapsulatedContentInfo ::= SEQUENCE {
	eContentType id-data,
	eContent [0] EXPLICIT OCTET STRING 
		//ManufacturerSignedCACerts content
}

ManufacturerSignedCACerts ::= SEQUENCE {
                        version             INTEGER,
                        alias               UTF8String,
                        sequenceNumber      INTEGER,
                        notBefore           GeneralizedTime,
                        notAfter            GeneralizedTime,
                        caCertificates      SEQUENCE SIZE (1..MAX) OF Certificate
}
</sourcecode>
</section>
	  
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.f">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author fullname="Narinder Mittal" initials="N." surname="Mittal">
        <organization showOnFrontPage="true">Landis+Gyr</organization>
        <address>
          <email>narinder.mittal@landisgyr.com</email>
        </address>
      </author>
      <author fullname="Chris Hett" initials="C" surname="Hett">
         <organization showOnFrontPage="true">Landis+Gyr</organization>
        <address>
          <email>chris.hett@landisgyr.com</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
