<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.34 (Ruby 4.0.2) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-ietf-acme-authority-token-jwtclaimcon-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="ACME JWTClaimConstraints Auth Token">JWTClaimConstraints profile of ACME Authority Token</title>

    <author initials="C." surname="Wendt" fullname="Chris Wendt">
      <organization>Somos Inc.</organization>
      <address>
        <postal>
          <country>US</country>
        </postal>
        <email>chris@appliedbits.com</email>
      </address>
    </author>
    <author initials="D." surname="Hancock" fullname="David Hancock">
      <organization>Somos Inc.</organization>
      <address>
        <postal>
          <country>US</country>
        </postal>
        <email>davidhancock.ietf@gmail.com</email>
      </address>
    </author>

    <date year="2026" month="June" day="12"/>

    <area>sec</area>
    
    <keyword>acme, STIR</keyword>

    <abstract>


<?line 44?>

<t>This document defines an authority token profile for the validation of JWTClaimConstraints and EnhancedJWTClaimConstraints certificate extensions within the Automated Certificate Management Environment (ACME) protocol. This profile is based on the Authority Token framework and establishes the specific ACME identifier type, challenge mechanism, and token format necessary to authorize a client to request a certificate containing these constraints.</t>



    </abstract>



  </front>

  <middle>


<?line 48?>

<section anchor="introduction"><name>Introduction</name>

<t>The validation of certificate extensions that constrain the use of a certificate's credentials, such as the JWTClaimConstraints extension defined in <xref target="RFC8226"/> and the EnhancedJWTClaimConstraints extension defined in <xref target="RFC9118"/>, is critical for defining the scope of an issued certificate. This document specifies an authority token profile for validating these constraints, modeled after the authority token framework established in <xref target="RFC9447"/> and the TNAuthList validation defined in <xref target="RFC9448"/>.</t>

<t>This profile facilitates proper delegation and authorization for entities requesting certificates under ACME and similar frameworks. It defines the use of the JWTClaimConstraints Authority Token in the ACME challenge to prove an authoritative or trusted use of the contents of the JWTClaimConstraints and EnhancedJWTClaimConstraints extensions based on the issuer of the token.</t>

<t>This document is intended for use by Secure Telephone Identity (STI) Certification Authorities. In this ecosystem, certificates contain telephone-number-related (TNAuthList) extensions and JWTClaimConstraints extensions defined in <xref target="RFC8226"/> and <xref target="RFC9118"/>, and certificate issuance is governed by a set of STI-specific Token Authorities. The TNAuthList Authority Token profile (<xref target="RFC9448"/>) is the parallel specification for telephone number authorization in this ecosystem and is already widely deployed. This document follows the same pattern to address authorization of the JWTClaimConstraints and EnhancedJWTClaimConstraints extensions. ACME implementers unfamiliar with the STIR ecosystem can treat the validation of the JWTClaimConstraints token value as a domain-specific authorization step analogous to TNAuthList validation: the ACME wire protocol mechanics are identical, and the Token Authority is responsible for the domain-specific semantic validation described in <xref target="RFC8226"/> and <xref target="RFC9118"/>.</t>

<t>This document also discusses the ability for an authority to authorize the creation of CA types of certificates for delegation as defined in <xref target="RFC9060"/>.</t>

</section>
<section anchor="terminology"><name>Terminology</name>

<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" 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>

</section>
<section anchor="acme-new-order-identifiers-for-jwtclaimconstraints"><name>ACME new-order Identifiers for JWTClaimConstraints</name>

<t>In <xref target="RFC8555"/>, Section 7 defines the procedure that an ACME client uses to order a new certificate from a Certification Authority (CA). This draft defines a new type of identifier object called JWTClaimConstraints. A JWTClaimConstraints identifier contains the Token Claim Constraints information to be populated in the JWTClaimConstraints or EnhancedJWTClaimConstraints of the new certificate.</t>

<t>For the JWTClaimConstraints identifier, the new-order request includes a type set to the string "JWTClaimConstraints". The value of the JWTClaimConstraints identifier MUST be set to the details of the JWTClaimConstraints or EnhancedJWTClaimConstraints extension requested.</t>

<t>The format of the string that represents the JWTClaimConstraints MUST be constructed using base64url encoding, as per <xref target="RFC8555"/> base64url encoding described in Section 5 of <xref target="RFC4648"/> according to the profile specified in JSON Web Signature in Section 2 of <xref target="RFC7515"/>. The base64url encoding MUST NOT include any padding characters and the JWTClaimConstraints ASN.1 object MUST be encoded using DER encoding rules.</t>

<t>An example of an ACME order object "identifiers" field containing a JWTClaimConstraints certificate:</t>

<figure><artwork><![CDATA[
 "identifiers": [{"type":"JWTClaimConstraints",
   "value":"F83n2a...avn27DN3"}]
]]></artwork></figure>

<t>where the "value" object string represents the arbitrary length base64url encoded string.</t>

<t>A full new-order request would look as follows,</t>

<figure><artwork><![CDATA[
POST /acme/new-order HTTP/1.1
Host: example.com
Content-Type: application/jose+json

{
  "protected": base64url({
    "alg": "ES256",
    "kid": "https://example.com/acme/acct/evOfKhNU60wg",
    "nonce": "5XJ1L3lEkMG7tR6pA00clA",
    "url": "https://example.com/acme/new-order"
  }),
  "payload": base64url({
    "identifiers": [{"type":"JWTClaimConstraints",
      "value":"F83n...n27DN3"}],
    "notBefore": "2025-01-01T00:00:00Z",
    "notAfter": "2025-01-08T00:00:00Z"
  }),
  "signature": "H6ZXtGjTZyUnPeKn...wEA4TklBdh3e454g"
}
]]></artwork></figure>

<t>On receiving a valid new-order request, the ACME server creates an authorization object, <xref target="RFC8555"/> Section 7.1.4, containing the challenge that the ACME client must satisfy to demonstrate authority for the identifiers specified by the new order (in this case, the JWTClaimConstraints identifier). The CA adds the authorization object URL to the "authorizations" field of the order object, and returns the order object to the ACME client in the body of a 201 (Created) response.</t>

<figure><artwork><![CDATA[
HTTP/1.1 201 Created
Content-Type: application/json
Replay-Nonce: MYAuvOpaoIiywTezizk5vw
Location: https://example.com/acme/order/1234

{
  "status": "pending",
  "expires": "2025-01-08T00:00:00Z",

  "notBefore": "2025-01-01T00:00:00Z",
  "notAfter": "2025-01-08T00:00:00Z",
  "identifiers": [
    {"type": "JWTClaimConstraints",
     "value": "F83n2a...avn27DN3"}
  ],

  "authorizations": [
   "https://example.com/acme/authz/1234"
  ],
  "finalize": "https://example.com/acme/order/1234/finalize"
}
]]></artwork></figure>

</section>
<section anchor="jwtclaimconstraints-authorization"><name>JWTClaimConstraints Authorization</name>

<t>On receiving the new-order response, the ACME client queries the referenced authorization object to obtain the challenges for the identifier contained in the new-order request.</t>

<figure><artwork><![CDATA[
POST /acme/authz/1234 HTTP/1.1
Host: example.com
Content-Type: application/jose+json

{
  "protected": base64url({
    "alg": "ES256",
    "kid": "https://example.com/acme/acct/evOfKhNU60wg",
    "nonce": "uQpSjlRb4vQVCjVYAyyUWg",
    "url": "https://example.com/acme/authz/1234"
  }),
  "payload": "",
  "signature": "nuSDISbWG8mMgE7H...QyVUL68yzf3Zawps"
}
]]></artwork></figure>

<figure><artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Link: <https://example.com/acme/some-directory>;rel="index"

{
  "status": "pending",
  "expires": "2025-01-08T00:00:00Z",

  "identifier": {
    "type": "JWTClaimConstraints",
    "value": "F83n2a...avn27DN3"
  },

  "challenges": [
    {
      "type": "tkauth-01",
      "tkauth-type": "atc",
      "token-authority": "https://authority.example.org",
      "url": "https://boulder.example.com/acme/chall/prV_B7yEyA4",
      "token": "IlirfxKKXAsHtmzK29Pj8A"
    }
  ]
}
]]></artwork></figure>

<t>When processing a certificate order containing an identifier of type "JWTClaimConstraints", a CA uses the Authority Token challenge type of "tkauth-01" with a "tkauth-type" of "atc", defined in <xref target="RFC9447"/>, to verify that the requesting ACME client has authenticated and authorized control over the requested resources represented by the "JWTClaimConstraints" value.</t>

<t>The challenge "token-authority" parameter is OPTIONAL. If a "token-authority" parameter is present, the ACME client MAY use this value to identify the URL representing the Token Authority that will provide the JWTClaimConstraints Authority Token response to the challenge. If the "token-authority" parameter is not present, the ACME client MUST identify the Token Authority based on locally configured information or local policies.</t>

<t>The ACME client responds to the challenge by posting the JWTClaimConstraints Authority Token to the challenge URL identified in the returned ACME authorization object.</t>

<figure><artwork><![CDATA[
POST /acme/chall/prV_B7yEyA4 HTTP/1.1
Host: example.com
Content-Type: application/jose+json

{
  "protected": base64url({
    "alg": "ES256",
    "kid": "https://example.com/acme/acct/evOfKhNU60wg",
    "nonce": "Q_s3MWoqT05TrdkM2MTDcw",
    "url": "https://example.com/acme/chall/prV_B7yEyA4"
  }),
  "payload": base64url({
    "tkauth": "DGyRejmCefe7v4N...vb29HhjjLPSggwiE"
  }),
  "signature": "9cbg5JO1Gf5YLjjz...SpkUfcdPai9uVYYQ"
}
]]></artwork></figure>

<t>The "tkauth" field in the challenge response object is specific to the tkauth-01 challenge type. When responding to a challenge for a JWTClaimConstraints identifier, this field SHALL contain the JWTClaimConstraints Authority Token defined in the next section.</t>

</section>
<section anchor="jwtclaimconstraints-authority-token"><name>JWTClaimConstraints Authority Token</name>

<t>The JWTClaimConstraints Authority Token is a profile instance of the ACME Authority Token defined in <xref target="RFC9447"/>.</t>

<t>The JWTClaimConstraints Authority Token Protected header MUST comply with the Authority Token Protected header as defined in <xref target="RFC9447"/>.</t>

<section anchor="jwtclaimconstraints-authority-token-payload"><name>JWTClaimConstraints Authority Token Payload</name>

<t>The JWTClaimConstraints Authority Token Payload MUST include the mandatory claims "exp", "jti", and "atc", and MAY include the optional claims defined for the Authority Token.</t>

<section anchor="iss-claim"><name>"iss" claim</name>

<t>The "iss" claim is an optional claim defined in <xref target="RFC7519"/> Section 4.1.1.  It can be used as a URL identifying the Token Authority that issued the JWTClaimConstraints Authority Token beyond the "x5u" or other Header claims that identify the location of the certificate or certificate chain of the Token Authority used to validate the JWTClaimConstraints Authority Token.</t>

</section>
<section anchor="exp-claim"><name>"exp" claim</name>

<t>The "exp" claim, defined in <xref target="RFC7519"/> Section 4.1.4, MUST be included and contains the DateTime value of the ending date and time that the JWTClaimConstraints Authority Token expires.</t>

</section>
<section anchor="jti-claim"><name>"jti" claim</name>

<t>The "jti" claim, defined in <xref target="RFC7519"/> Section 4.1.7, MUST be included and contains a unique identifier for this JWTClaimConstraints Authority Token transaction.</t>

</section>
<section anchor="atc-claim"><name>"atc" claim</name>

<t>The "atc" claim MUST be included and is defined in <xref target="RFC9447"/>. It contains a JSON object with the following elements:</t>

<t><list style="symbols">
  <t>a "tktype" key with a string value equal to "JWTClaimConstraints" to represent a JWTClaimConstraints profile of the authority token <xref target="RFC9447"/> defined by this document. "tktype" is a required key and MUST be included.</t>
  <t>a "tkvalue" key with a string value equal to the base64url encoding of the JWTClaimConstraints or EnhancedJWTClaimConstraints certificate extension ASN.1 object using DER encoding rules. "tkvalue" is a required key and MUST be included.</t>
  <t>a "ca" key with a boolean value set to false (since the JWTClaimConstraints extension is applicable only to end-entity certificates). "ca" is an optional key; if not included, the "ca" value is considered false by default.</t>
  <t>a "fingerprint" key is constructed as defined in <xref target="RFC8555"/> Section 8.1 corresponding to the computation of the fingerprint step using the ACME account key credentials. "fingerprint" is a required key and MUST be included.</t>
</list></t>

<t>An example of the JWTClaimConstraints Authority Token is as follows:</t>

<figure><artwork><![CDATA[
{
  "protected": base64url({
    "typ": "JWT",
    "alg": "ES256",
    "x5u": "https://authority.example.org/cert"
  }),
  "payload": base64url({
    "iss": "https://authority.example.org",
    "exp": 1640995200,
    "jti": "id6098364921",
    "atc": {
      "tktype": "JWTClaimConstraints",
      "tkvalue": "F83n2a...avn27DN3",
      "ca": false,
      "fingerprint": "SHA256 56:3E:CF:AE:83:CA:4D:15:B0:29:FF:1B:71:
       D3:BA:B9:19:81:F8:50:9B:DF:4A:D4:39:72:E2:B1:F0:B9:38:E3"
    }
  }),
  "signature": "9cbg5JO1Gf5YLjjz...SpkUfcdPai9uVYYQ"
}
]]></artwork></figure>

</section>
</section>
<section anchor="acquiring-the-token-from-the-token-authority"><name>Acquiring the token from the Token Authority</name>

<t>Following <xref target="RFC9447"/> Section 5, the authority token should be acquired using a RESTful HTTP POST transaction as follows:</t>

<figure><artwork><![CDATA[
POST /at/account/:id/token HTTP/1.1
Host: authority.example.org
Content-Type: application/json
]]></artwork></figure>

<t>The request will pass the account id as a string in the request parameter "id". Note that this account identifier refers to the ACME client's account with the Token Authority, and is distinct from the ACME account used with the CA. There is assumed to be a corresponding authentication procedure that can be verified for the success of this transaction, for example, an HTTP Authorization header field containing valid authorization credentials as defined in <xref target="RFC7231"/> Section 14.8.</t>

<t>The body of the POST request MUST contain a JSON object with key value pairs corresponding to values that are requested as the content of the claims in the issued token.</t>

<t>As an example, the body SHOULD contain a JSON object as follows:</t>

<figure><artwork><![CDATA[
{
  "atc": {
    "tktype": "JWTClaimConstraints",
    "tkvalue": "F83n2a...avn27DN3",
    "ca": false,
    "fingerprint": "SHA256 56:3E:CF:AE:83:CA:4D:15:B0:29:FF:1B:71:D3
      :BA:B9:19:81:F8:50:9B:DF:4A:D4:39:72:E2:B1:F0:B9:38:E3"
  }
}
]]></artwork></figure>

<t>The response to the POST request if successful returns a 200 OK with a JSON body that contains, at a minimum, the JWTClaimConstraints Authority Token as a JSON object with a key of "token" and the base64url encoded string representing the atc token. JSON is easily extensible, so users of this specification may want to pass other pieces of information relevant to a specific application.</t>

<t>An example successful response would be as follows:</t>

<figure><artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json

{"token": "DGyRejmCefe7v4N...vb29HhjjLPSggwiE"}
]]></artwork></figure>

<t>The ACME client then uses the value of the "token" field as the "tkauth" field in the challenge response POST to the ACME challenge URL, as described in Section 4.</t>

<t>If the request is not successful, the response should indicate the error condition. Specifically, for the case that the authorization credentials are invalid or if the Account ID provided does not exist, the response code MUST be 403 - Forbidden. Other 4xx and 5xx responses MUST follow standard <xref target="RFC7231"/> HTTP error condition conventions.</t>

</section>
<section anchor="token-authority-responsibilities"><name>Token Authority Responsibilities</name>

<t>When creating the JWTClaimConstraints Authority Token, the Token Authority MUST validate that the information contained in the ASN.1 JWTClaimConstraints accurately represents the corresponding JWTClaimConstraint resources the requesting party is authorized to represent based on their pre-established and verified secure relationship between the Token Authority and the requesting party.</t>

<t>The fingerprint in the token request is not meant to be verified by the Token Authority. Rather, it is meant to be signed as part of the token so that the party that requests the token can, as part of the challenge response, allow the ACME server to validate that the token requested and used came from the same party that controls the ACME client.</t>

</section>
<section anchor="scope-of-the-jwtclaimconstraints"><name>Scope of the JWTClaimConstraints</name>

<t>Because this specification involves the JWTClaimConstraints and EnhancedJWTClaimConstraints extensions, the client MAY request an Authority Token with some subset of its own authority as the JWTClaimConstraints provided in the "tkvalue" element of the "atc" JSON object. JWTClaimConstraints can be constructed to define a limited scope of claims and claim values the client has authority over.</t>

</section>
<section anchor="acme-challenges-requiring-multiple-authority-tokens"><name>ACME Challenges requiring multiple Authority Tokens</name>

<t>The ACME new-order request may include multiple identifiers, each of which is authorized separately. With the introduction of this specification, for STIR certificates <xref target="RFC8226"/>, a certificate order may require two Authority Token identifier types:</t>

<t><list style="symbols">
  <t>The JWTClaimConstraints identifier defined in this document, and</t>
  <t>The TNAuthList identifier defined in <xref target="RFC9448"/>.</t>
</list></t>

<t>Other Authority Token types may be introduced in future Authority Token profile specifications with similar requirements.</t>

<t>This section describes scenarios where a new-order request contains both of these identifier types. In such cases, the CA requires the ACME client to provide both a JWTClaimConstraints Authority Token and a TNAuthList Authority Token as part of the challenge response.</t>

<t>The TNAuthList Authority Token authorizes the token holder to obtain certificates containing a TNAuthList extension whose scope is less than or equal to the scope of the TNAuthList identifier in the token.</t>

<t>The JWTClaimConstraints Authority Token authorizes the token holder to obtain a certificate containing a JWTClaimConstraints or EnhancedJWTClaimConstraints extension, provided that the extension is within the scope of the JWTClaimConstraints identifier in the token. Since these two certificate extensions constrain the resources and claims available to the certificate, there is an inherent interaction between these two types of Authority Tokens.</t>

<t>The "value" field of the JWTClaimConstraints identifier, and the corresponding "tkvalue" in the "atc" claim, is a base64url-encoded DER representation of a JWTClaimConstraints or EnhancedJWTClaimConstraints ASN.1 object as defined in <xref target="RFC8226"/> and <xref target="RFC9118"/>. From the ACME server's perspective this value is opaque: validation step 5 in Section 6 requires only that the value in the token matches the value in the order. The semantic content of the extension — which claims are permitted or excluded, and for which telephone numbers — is a STIR ecosystem concern governed by <xref target="RFC8226"/> and <xref target="RFC9118"/>, and is validated by the Token Authority prior to token issuance (see Section 5.3). Informative examples of JWTClaimConstraints ASN.1 structures, their DER encodings, and corresponding base64url values are provided in <xref target="appendix-examples"/>.</t>

<section anchor="acme-procedures-when-challenge-requires-two-authority-tokens"><name>ACME Procedures when Challenge requires two Authority Tokens</name>

<t>Sections 3 and 4 describe the ACME procedures for issuing a certificate based on a single JWTClaimConstraints identifier. This section describes how these procedures are modified to support the case where the new-order request contains both a TNAuthList and JWTClaimConstraints identifier.</t>

<t>First, the "identifiers" field in the new-order request includes both identifier types:</t>

<figure><artwork><![CDATA[
     "identifiers": [
     {"type": "TNAuthList",
      "value": "KHn6xf...jw4A1vgh"},
     {"type": "JWTClaimConstraints",
      "value": "F83n2a...avn27DN3"}]
]]></artwork></figure>

<t>The CA includes two "authorizations" URLs in the 201 (Created) response to the new-order request, one for each identifier:</t>

<figure><artwork><![CDATA[
     "authorizations": [
        "https://example.com/acme/authz/1234",
        "https://example.com/acme/authz/5678"]
]]></artwork></figure>

<t>The ACME client then queries each "authorizations" URL as shown in Section 4. The CA returns the Authority Token challenge for each identifier. The ACME client responds to each challenge by providing an Authority Token of the appropriate type.</t>

</section>
</section>
</section>
<section anchor="validating-the-jwtclaimconstraints-authority-token"><name>Validating the JWTClaimConstraints Authority Token</name>

<t>Upon receiving a response to the challenge, the ACME server MUST perform the following steps to determine the validity of the response. Steps 1 through 3 and steps 6 through 8 are general ACME authority token validation steps applicable to any Authority Token profile. Steps 4 and 5 are specific to the JWTClaimConstraints profile. The semantic validation of whether the JWTClaimConstraints or EnhancedJWTClaimConstraints content accurately reflects the requesting party's authorized resources is the responsibility of the Token Authority prior to issuing the token (see Section 5.3), and is governed by <xref target="RFC8226"/> and <xref target="RFC9118"/>.</t>

<t><list style="numbers" type="1">
  <t>Verify that the value of the "atc" claim is a well-formed JSON object containing the mandatory key values ("tktype", "tkvalue", "fingerprint").</t>
  <t>Verify Token Issuer: If there is an "x5u" parameter, verify the "x5u" parameter is an HTTPS URL with a reference to a certificate representing the trusted issuer of authority tokens. If there is an "x5c" parameter, verify the certificate array contains a certificate representing the trusted issuer of authority tokens.</t>
  <t>Verify Signature: Verify the JWTClaimConstraints Authority Token signature using the public key of the certificate referenced by the token's "x5u" or "x5c" parameter.</t>
  <t>Verify Token Type: Verify that the "atc" claim contains a "tktype" identifier with the value "JWTClaimConstraints".</t>
  <t>Verify Constraints Match: Verify that the "atc" claim "tkvalue" identifier contains the equivalent base64url encoded JWTClaimConstraints or EnhancedJWTClaimConstraints certificate extension string value as the Identifier specified in the original challenge.</t>
  <t>Verify Claims: Verify that the remaining claims are valid (e.g., verify that the token has not expired using the "exp" claim).</t>
  <t>Verify Account Control: Verify that the "atc" claim "fingerprint" is valid and matches the account key of the client making the request.</t>
  <t>Verify CA Flag: Verify that the "atc" claim "ca" identifier boolean corresponds to the CA boolean in the Basic Constraints extension in the Certificate Signing Request (CSR) for either a CA certificate or an end-entity certificate.</t>
</list></t>

<t>If all steps in the token validation process pass, then the ACME server MUST set the challenge object "status" to "valid". If any step of the validation process fails, the "status" in the challenge object MUST be set to "invalid".</t>

</section>
<section anchor="using-acme-issued-certificates-with-json-web-signature"><name>Using ACME-issued Certificates with JSON Web Signature</name>

<t>JSON Web Signature (JWS) objects can include an "x5u" header parameter to refer to a certificate for signature validation. In order to support this usage, the Certificate Authority (CA) MAY host the newly issued certificate and provide a URL that the ACME client owner can directly reference in the "x5u" header parameter of their signed JWS objects.</t>

<t>To facilitate this, the CA MAY add a newly defined field called "x5u" to the 200 (OK) order object response when the certificate is ready for the finalize request:</t>

<t>x5u (optional, string): A URL that can be used to reference the certificate in the "x5u" parameter of a JWS object.</t>

<t>An example of a 200 (OK) response containing the new "x5u" field:</t>

<figure><artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Replay-Nonce: CGf81JWBsq8QyIgPCi9Q9X
Link: <https://example.com/acme/directory>;rel="index"
Location: https://example.com/acme/order/TOlocE8rfgo

{
  "status": "valid",
  "expires": "2016-01-20T14:09:07.99Z",

  "notBefore": "2016-01-01T00:00:00Z",
  "notAfter": "2016-01-08T00:00:00Z",

  "identifiers": [
    "type": "JWTClaimConstraints",
    "value": "F83n2a...avn27DN3"
  ],

  "authorizations": ["https://example.com/acme/authz/1234"],

  "finalize": "https://example.com/acme/order/TOlocE8rfgo/finalize",

  "certificate": "https://example.com/acme/cert/mAt3xBGaobw",

  "x5u": "https://example.com/cert-repo/giJI53km23.pem"
}
]]></artwork></figure>

</section>
<section anchor="security_considerations"><name>Security Considerations</name>

<t>The token represented by this document has the credentials to represent JWTClaimConstraints and EnhancedJWTClaimConstraints, which constrain the resources and claims a certificate holder can assert. The creation, transport, and any storage of this token MUST follow the strictest of security best practices, beyond the recommendations of the use of encrypted transport protocols in this document, to protect it from getting in the hands of bad actors with illegitimate intent to impersonate or misuse the constrained resources.</t>

<t>This document inherits the security properties of <xref target="RFC9447"/>. Implementations SHOULD follow the best practices identified in <xref target="RFC8725"/> for cryptographic security.</t>

<t>This document only specifies SHA256 for the fingerprint hash. However, the syntax of the fingerprint object would permit other algorithms if, due to concerns about algorithmic agility, a more robust algorithm were required at a future time. Future specifications CAN define new algorithms for the fingerprint object as needed.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document requests the addition of a new identifier object type to the "ACME Identifier Types" registry defined in Section 9.7.7 of <xref target="RFC8555"/>.</t>

<figure><artwork><![CDATA[
+---------------------+-----------+
|        Label        | Reference |
+---------------------+-----------+
| JWTClaimConstraints |  RFCThis  |
+---------------------+-----------+
]]></artwork></figure>

</section>
<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>We would like to thank ACME and STIR working groups for valuable contributions to the authority token framework used in this document.</t>

</section>


  </middle>

  <back>



    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC4648">
  <front>
    <title>The Base16, Base32, and Base64 Data Encodings</title>
    <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
    <date month="October" year="2006"/>
    <abstract>
      <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4648"/>
  <seriesInfo name="DOI" value="10.17487/RFC4648"/>
</reference>
<reference anchor="RFC7231">
  <front>
    <title>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</title>
    <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
    <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
    <date month="June" year="2014"/>
    <abstract>
      <t>The Hypertext Transfer Protocol (HTTP) is a stateless \%application- level protocol for distributed, collaborative, hypertext information systems. This document defines the semantics of HTTP/1.1 messages, as expressed by request methods, request header fields, response status codes, and response header fields, along with the payload of messages (metadata and body content) and mechanisms for content negotiation.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7231"/>
  <seriesInfo name="DOI" value="10.17487/RFC7231"/>
</reference>
<reference anchor="RFC7515">
  <front>
    <title>JSON Web Signature (JWS)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
    <date month="May" year="2015"/>
    <abstract>
      <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7515"/>
  <seriesInfo name="DOI" value="10.17487/RFC7515"/>
</reference>
<reference anchor="RFC7519">
  <front>
    <title>JSON Web Token (JWT)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
    <date month="May" year="2015"/>
    <abstract>
      <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7519"/>
  <seriesInfo name="DOI" value="10.17487/RFC7519"/>
</reference>
<reference anchor="RFC8226">
  <front>
    <title>Secure Telephone Identity Credentials: Certificates</title>
    <author fullname="J. Peterson" initials="J." surname="Peterson"/>
    <author fullname="S. Turner" initials="S." surname="Turner"/>
    <date month="February" year="2018"/>
    <abstract>
      <t>In order to prevent the impersonation of telephone numbers on the Internet, some kind of credential system needs to exist that cryptographically asserts authority over telephone numbers. This document describes the use of certificates in establishing authority over telephone numbers, as a component of a broader architecture for managing telephone numbers as identities in protocols like SIP.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8226"/>
  <seriesInfo name="DOI" value="10.17487/RFC8226"/>
</reference>
<reference anchor="RFC8555">
  <front>
    <title>Automatic Certificate Management Environment (ACME)</title>
    <author fullname="R. Barnes" initials="R." surname="Barnes"/>
    <author fullname="J. Hoffman-Andrews" initials="J." surname="Hoffman-Andrews"/>
    <author fullname="D. McCarney" initials="D." surname="McCarney"/>
    <author fullname="J. Kasten" initials="J." surname="Kasten"/>
    <date month="March" year="2019"/>
    <abstract>
      <t>Public Key Infrastructure using X.509 (PKIX) certificates are used for a number of purposes, the most significant of which is the authentication of domain names. Thus, certification authorities (CAs) in the Web PKI are trusted to verify that an applicant for a certificate legitimately represents the domain name(s) in the certificate. As of this writing, this verification is done through a collection of ad hoc mechanisms. This document describes a protocol that a CA and an applicant can use to automate the process of verification and certificate issuance. The protocol also provides facilities for other certificate management functions, such as certificate revocation.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8555"/>
  <seriesInfo name="DOI" value="10.17487/RFC8555"/>
</reference>
<reference anchor="RFC8725">
  <front>
    <title>JSON Web Token Best Current Practices</title>
    <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
    <author fullname="D. Hardt" initials="D." surname="Hardt"/>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <date month="February" year="2020"/>
    <abstract>
      <t>JSON Web Tokens, also known as JWTs, are URL-safe JSON-based security tokens that contain a set of claims that can be signed and/or encrypted. JWTs are being widely used and deployed as a simple security token format in numerous protocols and applications, both in the area of digital identity and in other application areas. This Best Current Practices document updates RFC 7519 to provide actionable guidance leading to secure implementation and deployment of JWTs.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="225"/>
  <seriesInfo name="RFC" value="8725"/>
  <seriesInfo name="DOI" value="10.17487/RFC8725"/>
</reference>
<reference anchor="RFC9060">
  <front>
    <title>Secure Telephone Identity Revisited (STIR) Certificate Delegation</title>
    <author fullname="J. Peterson" initials="J." surname="Peterson"/>
    <date month="September" year="2021"/>
    <abstract>
      <t>The Secure Telephone Identity Revisited (STIR) certificate profile provides a way to attest authority over telephone numbers and related identifiers for the purpose of preventing telephone number spoofing. This specification details how that authority can be delegated from a parent certificate to a subordinate certificate. This supports a number of use cases, including those where service providers grant credentials to enterprises or other customers capable of signing calls with STIR.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9060"/>
  <seriesInfo name="DOI" value="10.17487/RFC9060"/>
</reference>
<reference anchor="RFC9118">
  <front>
    <title>Enhanced JSON Web Token (JWT) Claim Constraints for Secure Telephone Identity Revisited (STIR) Certificates</title>
    <author fullname="R. Housley" initials="R." surname="Housley"/>
    <date month="August" year="2021"/>
    <abstract>
      <t>RFC 8226 specifies the use of certificates for Secure Telephone Identity Credentials; these certificates are often called "Secure Telephone Identity Revisited (STIR) Certificates". RFC 8226 provides a certificate extension to constrain the JSON Web Token (JWT) claims that can be included in the Personal Assertion Token (PASSporT), as defined in RFC 8225. If the PASSporT signer includes a JWT claim outside the constraint boundaries, then the PASSporT recipient will reject the entire PASSporT. This document updates RFC 8226; it provides all of the capabilities available in the original certificate extension as well as an additional way to constrain the allowable JWT claims. The enhanced extension can also provide a list of claims that are not allowed to be included in the PASSporT.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9118"/>
  <seriesInfo name="DOI" value="10.17487/RFC9118"/>
</reference>
<reference anchor="RFC9447">
  <front>
    <title>Automated Certificate Management Environment (ACME) Challenges Using an Authority Token</title>
    <author fullname="J. Peterson" initials="J." surname="Peterson"/>
    <author fullname="M. Barnes" initials="M." surname="Barnes"/>
    <author fullname="D. Hancock" initials="D." surname="Hancock"/>
    <author fullname="C. Wendt" initials="C." surname="Wendt"/>
    <date month="September" year="2023"/>
    <abstract>
      <t>Some proposed extensions to the Automated Certificate Management Environment (ACME) rely on proving eligibility for certificates through consulting an external authority that issues a token according to a particular policy. This document specifies a generic Authority Token Challenge for ACME that supports subtype claims for different identifiers or namespaces that can be defined separately for specific applications.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9447"/>
  <seriesInfo name="DOI" value="10.17487/RFC9447"/>
</reference>
<reference anchor="RFC9448">
  <front>
    <title>TNAuthList Profile of Automated Certificate Management Environment (ACME) Authority Token</title>
    <author fullname="C. Wendt" initials="C." surname="Wendt"/>
    <author fullname="D. Hancock" initials="D." surname="Hancock"/>
    <author fullname="M. Barnes" initials="M." surname="Barnes"/>
    <author fullname="J. Peterson" initials="J." surname="Peterson"/>
    <date month="September" year="2023"/>
    <abstract>
      <t>This document defines a profile of the Automated Certificate Management Environment (ACME) Authority Token for the automated and authorized creation of certificates for Voice over IP (VoIP) telephone providers to support Secure Telephone Identity (STI) using the TNAuthList defined by STI certificates.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9448"/>
  <seriesInfo name="DOI" value="10.17487/RFC9448"/>
</reference>
<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>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="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>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>



    </references>




<?line 433?>

<section anchor="appendix-examples"><name>JWTClaimConstraints Identifier Value Examples</name>

<t>This appendix provides informative examples of JWTClaimConstraints and EnhancedJWTClaimConstraints ASN.1 structures as defined in <xref target="RFC8226"/> and <xref target="RFC9118"/>, along with their DER encodings and base64url values as used in the ACME identifier "value" field and the "tkvalue" of the "atc" claim. These examples are intended for implementers of STI Token Authorities and certificate requestors in the STIR/SHAKEN ecosystem. ACME server implementations treat the identifier value as opaque and are not required to parse or validate its internal structure.</t>

<t>Note: single-quote delimiters in the ASN.1 notation below denote string values; inner double quotes are part of the JSON-formatted claim values as defined in <xref target="RFC8226"/>.</t>

<section anchor="no-extended-claims-authorized"><name>No Extended Claims Authorized</name>

<t>In this case, the requestor is authorized to use a set of telephone numbers but no optional claim information. The EnhancedJWTClaimConstraints extension uses a mustExclude constraint to prohibit all optional claims relevant to the application.</t>

<figure><artwork><![CDATA[
SEQUENCE {
  mustExclude [2] {
    SEQUENCE {
      IA5String 'attest'
      IA5String 'origid'
      IA5String 'div'
      IA5String 'rph'
      IA5String 'sph'
      IA5String 'rcd'
      IA5String 'rcdi'
      IA5String 'crn'
      }
    }
  }
]]></artwork></figure>

<t>DER encoding (51 bytes, hex):</t>

<figure><artwork><![CDATA[
30 31 a2 2f 16 06 61 74 74 65 73 74 16 06 6f 72
69 67 69 64 16 03 64 69 76 16 03 72 70 68 16 03
73 70 68 16 03 72 63 64 16 04 72 63 64 69 16 03
63 72 6e
]]></artwork></figure>

<t>base64url value:</t>

<figure><artwork><![CDATA[
MDGiLxYGYXR0ZXN0FgZvcmlnaWQWA2RpdhYDcnBoFgNzcGgWA3JjZBYEcmNkaRYDY3Ju
]]></artwork></figure>

<t>A simpler alternative for requestors not authorized to include optional claims is to submit a new-order request containing only a TNAuthList identifier. In this case, the absence of a JWTClaimConstraints identifier MAY trigger local policy in the CA to include a restrictive EnhancedJWTClaimConstraints extension in the issued certificate.</t>

</section>
<section anchor="extended-claims-authorized-uniform-constraints"><name>Extended Claims Authorized (Uniform Constraints)</name>

<t>In this case, the requestor is authorized to assert a specific set of claim information that applies uniformly across all authorized telephone numbers. The extension uses a permittedValues constraint for the authorized claims and a mustExclude constraint for the remainder.</t>

<figure><artwork><![CDATA[
SEQUENCE {
  permittedValues [1] {
    SEQUENCE {
      SEQUENCE {
        IA5String 'rcd'
        SEQUENCE {
          UTF8String '"nam": "James Bond"'
          }
        IA5String 'crn'
        SEQUENCE {
          UTF8String '"For your ears only"'
          }
        }
      }
    }
  mustExclude [2] {
    SEQUENCE {
      IA5String 'attest'
      IA5String 'origid'
      IA5String 'div'
      IA5String 'rph'
      IA5String 'sph'
      IA5String 'rcdi'
      }
    }
  }
]]></artwork></figure>

<t>DER encoding (104 bytes, hex):</t>

<figure><artwork><![CDATA[
30 66 a1 3d 30 3b 30 39 16 03 72 63 64 30 15 0c
13 22 6e 61 6d 22 3a 20 22 4a 61 6d 65 73 20 42
6f 6e 64 22 16 03 63 72 6e 30 16 0c 14 22 46 6f
72 20 79 6f 75 72 20 65 61 72 73 20 6f 6e 6c 79
22 a2 25 16 06 61 74 74 65 73 74 16 06 6f 72 69
67 69 64 16 03 64 69 76 16 03 72 70 68 16 03 73
70 68 16 04 72 63 64 69
]]></artwork></figure>

<t>base64url value:</t>

<figure><artwork><![CDATA[
MGahPTA7MDkWA3JjZDAVDBMibmFtIjogIkphbWVzIEJvbmQiFgNjcm4wFgwUIkZv
ciB5b3VyIGVhcnMgb25seSKiJRYGYXR0ZXN0FgZvcmlnaWQWA2RpdhYDcnBoFgNz
cGgWBHJjZGk
]]></artwork></figure>

</section>
<section anchor="extended-claims-authorized-per-tn-subset-constraints"><name>Extended Claims Authorized (Per-TN Subset Constraints)</name>

<t>In this case, the requestor is authorized to assert different sets of claims for distinct subsets of telephone numbers. This is expressed by including an "orig" claim in the permittedValues entry to associate specific claim values with a particular set of telephone numbers.</t>

<figure><artwork><![CDATA[
SEQUENCE {
  permittedValues [1] {
    SEQUENCE {
      SEQUENCE {
        IA5String 'rcd'
        SEQUENCE {
          UTF8String '"nam": "James Bond"'
          }
        IA5String 'crn'
        SEQUENCE {
          UTF8String '"For your ears only"'
          }
        IA5String 'orig'
        SEQUENCE {
          UTF8String '"12025551000"'
          UTF8String '"12025551001"'
          }
        }
      }
    }
  mustExclude [2] {
    SEQUENCE {
      IA5String 'attest'
      IA5String 'origid'
      IA5String 'div'
      IA5String 'rph'
      IA5String 'sph'
      IA5String 'rcdi'
      }
    }
  }
]]></artwork></figure>

<t>DER encoding (143 bytes, hex):</t>

<figure><artwork><![CDATA[
30 81 8c a1 63 30 61 30 5f 16 03 72 63 64 30 15
0c 13 22 6e 61 6d 22 3a 20 22 4a 61 6d 65 73 20
42 6f 6e 64 22 16 03 63 72 6e 30 16 0c 14 22 46
6f 72 20 79 6f 75 72 20 65 61 72 73 20 6f 6e 6c
79 22 16 04 6f 72 69 67 30 1e 0c 0d 22 31 32 30
32 35 35 35 31 30 30 30 22 0c 0d 22 31 32 30 32
35 35 35 31 30 30 31 22 a2 25 16 06 61 74 74 65
73 74 16 06 6f 72 69 67 69 64 16 03 64 69 76 16
03 72 70 68 16 03 73 70 68 16 04 72 63 64 69
]]></artwork></figure>

<t>base64url value:</t>

<figure><artwork><![CDATA[
MIGMoWMwYTBfFgNyY2QwFQwTIm5hbSI6ICJKYW1lcyBCb25kIhYDY3JuMBYMFCJG
b3IgeW91ciBlYXJzIG9ubHkiFgRvcmlnMB4MDSIxMjAyNTU1MTAwMCIMDSIxMjAy
NTU1MTAwMSKiJRYGYXR0ZXN0FgZvcmlnaWQWA2RpdhYDcnBoFgNzcGgWBHJjZGk
]]></artwork></figure>

</section>
</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA+1d63LbxpL+j6eYpX/E2kNSvEvi2d1a6mralmxLlBUllUqB
wJCEBAIMAIqiHZ/ah9gn3CfZ7p4LBhdSdJI/p+q4XA4JDubS0/11T18mtVrN
SrzE53329m504tve/CQM4iSyvSCJ2SIKJ57PWThhg5PLMzZYJrMw8pI1G4WP
PLDs8TjiT33xY1kH+IJs64ZOYM9hIDeyJ0nN48mkZjtzXrNVp7UEG9YeVomD
/ThhUGu0rHg5nntx7IVBsl7A68Oz0Tljr5jtx2GfVbzA5QsO/wRJpcoq3PUS
6Mz28ctwcAz/CSP4dD06r1iOnfBpGK37LE5cy/IWUZ8l0TJOWo3GEQxlR9yG
37hjPfL1KozcPsMZVtnNaHhtWXFiB+6vth8GMI01j62F12c/J6FTZXEYJRGf
xPBpPccPv1iWWFffYjWLwR8viPvspM7uYLIJPRHkOJlFXmw8DaNpn92E8zBm
w8Cp0zM+tz2/zxxs+t/2YuF73B17SVx3wjk1cMJlkODCbm8y453W2Rs7cELn
0Rjx1H7y3MzzLWO62Hgm2tZx0/57ij+UjmwFYTS3E++Jw6rZ9flJp9c5lB8P
Wu2m+thtdtOPR/LjYavVUx+7XdXg8KClPh41eg31sdlU/R51OgfpR3pqecEk
nYhVq9WYPUaWdBLLGs2A2sCLyzlwDHP5xAt4zOyAaTZkxIaa96Erlsw4e7J9
z4U+wwDFoYzZgTvYWYC04m7Z7w6PEm/iIRcy/pzwAJk6ZisvmXkBjQHiEsK8
uctOjLaXdmBPOc33LHjyojCgz69R6vZwnsCCoV9ntDQ1bfg4tmPoKdRdm6LL
JhHwAvD4I02bA2+PfS+eAS2wdbzgDg4vJNtD6YKvHCgBMlgFRrR9nwdTzuYc
PgdePK9SP4J0gvos4A6PYztCiiryfuHMZg7wLywAnkb8tyWMjc+MBYPkJ0Ay
L5jiZGJ6oKhYFxs691zX55b1Chg2iUJ36eDO4Pbmd2oD1ZMZzFD3S4texoR0
mbn8ANsWcVo/AA6I99KZMVsQqWyP9QiStVyQQ/b1q+Tvb98EleDlbYyyuRNk
/G/fqri7DmwmTNEnBqV2kl4sdsKFWEkADeMlvG+sSPKJFgG51S8LgSJr2a5U
2Tx0uQ8jAbZzITD5vlKOS7nNWBnIsUGe0RUy7HsPeMPYzgI5QOK/fatLqdaT
tR3P9xJYKz1bcKSPz6eiDxxBMaN4govDDU6QCJIjcZUG0WK2BBUTCXHAHmJv
7vl2lC4qrrNhiicGO23ilLxAKgjAEVL5AhmBJTxxc3MI2FCtke4Cchgjoehw
7H7LyC/hlCElGQghXopUz7Sp9TygwmcPZ+DCa0hXnNp4zW64s4xgV2EbFjPQ
n2xIIgWLfw26dc+AO9wQRRrYD6AqDg7dcieM17BcQJrMxkiwYInquxYs52Me
1SLuE5S+Tnlpz1wbkuGF5W+R4Yw44gMTZ5BSSF4kxxR2L8JOgAw2GBcJEhAW
XdMYK/Y/s+hRVgTyvKI4/bUhBXs4GG7Mwo6Qe3wN4imXaxoxQaOcIHh5UtPC
4IHtg2XkrkFVgSCtgSwLP1xzNw8lk9D3w5XUICAXMJUE0CAg/HfdCLRBbsS/
hEvrUkvNFz5pSR6huE5skFAPRBT1K42CVpyxNgdECow2UANF9b5pUgLJoO2S
oxawYe1gDQXpXmaXB+MsYCFgMk7DJb5djmv9VPJXHoiJUulKuzowEjwWahgg
v5rCZIZ11rhXQOUFzNgbG7ZLfpYxGHfYVRZbY1Ap4xe5vSDyaIgz14udZRxL
6LPHCMBrGj+nVQxDgPAKN0AS/WRA5kWc09qx1HApghcFE21DmtorwJho7gUh
kHwtzAGw5Rka8zGrXN7ejPBggP9lVx/o8/XZp9vh9dkpfr55M3j/Xn9QLW7e
fLh9f5p+St88+XB5eXZ1Kl6Gpyz36HJwXxGbVfnwcTT8cDV4X9FSlhIwIpwf
c4LOaBFxhC1apbElxycfWbMDy/03WG+r2TyCrRFfDpsHHfiymvFADBYGIKTi
K9AYYGex4CAI0AkAA/D9AnQIGjMwRDwLVwGb8YgT8YgHA76qAb0AHoba8BOb
UCISljVU7AJWO4IhYD1t00FGGwJPgyCjEiDLC7hCaDphCi6Jc0ImhrVxChlA
nUQhgNEGNQFK5GSwp8AIT5epXU89IVchUxl2bDh+gGkCLXw0WkrWBaBSigBG
H1LzxIYkUnOWaa/OImEgN3kRLpZCM0mVXzYMEHsb+EmIypEJtvBcSvz2qVfV
23KflRnuBY6/dIluRDPUVjBpwvMkQpuoUtJxRegrgYpbwNMgHQngODOAy4GY
/lbD5QWipGazXA9oKAEB8kAiu5ZLIT6MOIhbTBbTplHVXIW5CwcNsriwB7SO
ep1l5IP56IQuPCKZQoPTkIiSZlnJVgLTxQnSi3huRuR1HNgfmmuohIj0vrLZ
6fW3Nx+u2B0fsxtvGtgJipjRaUt3isduwEjaq5IpKUxUTAAiugYF7tKPoIbw
+Iw4oFRPqU17c1VvKtlSdKMRNM1Oz67TMaOlz/FENwhg82zU3/LYQtggeFP2
Vkm5J64w+I/vmudEu3Q+hmz0Lesfxh8r22Gf/fy1gixf6ZdyeBV9HRXicGhx
ftgOWna9XrefgtbB6VW78u2XbO/WCiGV6CTfUuuQzJfjOzsaezAWHJXR7Ad7
JbdBQD7xIhKLTZYA40XpXYVLIIofho/IhdIYq+bW/fED7Mo+urX20x7ejEYf
95v1pvUmjJO+2gvy8ZyIA0VtRM438j0J+N1/CGP+t4cYT91fgTwVtFo4SgdQ
U0//9VfyElVsfwqPK2c3rW5PUJNVHj1sWpklySLu7+8bo4r5Afsn+/zpw+Td
7Oq211hN1YtBCBCAr3Z/fNt83/bPHi8vDpLr3mLQaDj+QDWD4bf2r9dfgfbf
9qq0CHvth3bpEr6bX/IsAwyj2UWvJDnmgE60mlaj1a01mvB31Gj06e9P6ZKT
AZ6sM+0OjXbpEmIFA9j2Te+nH5OLh9FP69vgI3+Hc1idDTqjR//YnbV5p9uZ
VqxvOeb9gAjqcO9JSBYZiUV+q6ZWa8yjJ1SIaMxlHAnKzCfer2ZQUZsJ9Wa9
U835fMwT8Exa6Ka9MIeDLxwxEi+ekFHp8rmgfmL6HZT5a+ycAZ1wHlM6VKzr
tbLMHNj66g5qbE+AKditAJOx6fTIrJvdXr9XCF7JNNBIJjWTiXjClANbcBlJ
EyODh7I/kyjSnBiHcFIjP1ar0QTTiDbF3VMHA7QSMtuthJ+ay9bbxB4l/hpO
gPa6doWC2GeX94Pl04eFHQ699WrEv3hfHrtPK+t96MjjzUYRpCXtN1vtjgSR
OAHWRfmqoFMfuIEEoMKfF3AwijdyP6DcztL0sixRq5y4kxgqmS83g6TQK5ln
ZXoCmvwiJptjBDnEFjSE9l+IVBXRCTQGIxdk8wvfCnMpjfd1+4LIv9rmoxJz
zOFC3oIUzFUtcCVgReTJQ0DEJ6AW0X4rFxQ8AYwT5Y/VGBCXSLICjNSMLgBU
ntEN1ZcS859W9y0/LW4e/Otx5+nT55OHz/eD9fr2brqr7styU0H5VSpFVRIs
b06HN+O7i8P55fTs4A3w9af159v3vcP1l0n7J3u1iIt8tQlpGuzDu5dA5r0X
PPbZf2xcQxzOec0FXHCSMFr/198j7v8nxQOfK38FmqS8Bg3lVr4s/tukHykt
+k5ZO8UWZTKoMZJH3CSYXGpNyEeqhZ04xm8UPNXKz9x9/bCuaBhG0/TNHK+M
0YzkUb1Ab5r0/iL6/OvxwfpsPejkBsdOhr4XTZ7fvftxEL9J5l/etY4+PhwO
KtSOwK/AIXcz4dDEWJGwN8yDvxBo09APMsf4iTiolm8IegwG0rdQEgIzbAzp
IDBoLtyGdpbm1IaoXhaKOEDvB0AYmEIemiXKcDFCCiYwzmzhDRVOPXL5GKEJ
Lo43UegzdCCbHXE0C+JwGTkUr5AHidSiKSWGOJ7L83C68gLbkPt4zjGIA5aQ
8lrV2XBCxNjaWs6kqAMuB/cUCSDrSvgJgE5yH8Wk0UbSa1H6Je/eJJKuPDj9
YFAE3t85uqL0k7KbNAVoZUS17WsDo2HL+vCom1lOfuY6kOKH6HNa4+ZOvClA
q5txEYGeoxZsEQIYenQ6HuVGE2tx48JakAEWYazJtwthCn3gRmgJ08pV2KHw
XUTASpR3RtuaurYAG/+0KvfTr3H78i78bdTojiL38bJ1OTp1Vruq3CJ87nTs
FPiDPZ9erK/5w/wEjKiDp84VaJancevozezh4f3Hm+l05Z1tOgUeOeNp9+2H
5sWke//+4eELvHqzeLydOO5H2ztafr6//5RV3YLp1NjykJI3y1KhkuabF6eJ
A5KvNKDm0LbOCPclK0sXl200otDBDm5MGFPMTrjsdTRwR/Y3YFzYkM8JJgAh
x9VfsIp1FhTRaqcQLzpWdYJGgPlEjvaYliVYbdAy9d2H/KikhM247SrPK/Dk
AkMEKjL24ltlIRc1lVc7UYl9FCz+HVMXL0hwlU5JnO0c9KSNJh+jPLGYDDoM
tzwkngq3CCWNH1H3mG+HC9xcQFj5slqXOmLkpkELfAXWYAw6lF6RspE+oH0N
ch0X6IWpTobbo1MHAKwzTBrAQOSY8gVcEVQ0IHi9VRXK7I5dmX3M16H03lae
u8sKapsQvkXsjdhmSRLRt6nOfHmU12kGGRMtm7wzQ/mT7fKzpjWiiSTijjvr
b7ULuNGZXUgfFE2yEop3qtotLXlCWF2ZUM4pTGzkzXMRDXGAYDRr8oFjC23j
7UJ+eexQa0FuzawlfbDTWg5eWovNloEHFqNpMAsuB4bdyTaI7CC2NRjipFGu
MpNOH5TPxtuIHMT66VwpjCEViQYm4cRGunMR24/7lvXvwiwXFjlFd4WpLl3r
YtfAVAZRBFYrt4Yp90zacxv0jJH8WpbOZGYtqRWSAW6EduvpPAn70YD30OTD
WRM45UhWV4uTQYMXV5eUB3P+eBCtNF0uG9jZGMgxJv5dy3XszErHYehzW6VZ
yBDhxPbB0HgNQzubUSOdMI4vjEfMg6CAOHQCMlyTeUdmgsFeXcwhh+Mwpb8z
b0Kmv5qxsP2ptZieRxlIMYgYLlTMcowpMhN76SdygcAdUwzswyTFSuVbKpxY
ol5zXvJDIL8TRll7SSR8zRfLJAPOxmgiA0VsmDYyMKy4hN9wIkZyYz03z123
MBe92znfLTaiVJno3A72PciUdMMo67vM4kcd95IbZB8ZYccAUBzv6lUhvdRn
zV6ncXTUbTUa8jFCPCatu73G0WG71zlqNfUCAEj7hhfocQdXcypwpf4m3QrY
tS94Uz8yt7pPCS9AONbt9dtn/ZPz/uCsf9junwz6ndN+s9s/bvRbR/3z837z
uH9Aedz057TdPx70j4/6zaP+YbN/ftjvNvpHx/3T835n0D/t9NtH/YNW/6zV
P4ZfG9iyfdg/a6f+oL/otAKqaeAgpypGVymn4bzMDsE8CaVYTBzXkfhqKeTH
M4qwAvfbjhSLpfRZXZ/djCZLn462jA6/hvLcyOjylJzsS5Hc73vuvhgrd0Yu
ZbaXHKj585wOFJMHxY5lyErCgSetT6lo9MFfvJM6Q4B7K3V2FSba/EFR1p1o
U4Oc/XFJoOqHtLlW9LkNqmrbwUN3BigdvZUZCCN7UndyMqCAXMQFuMSgg12Z
dGPn0NNwvOEG5bKTpEVOjjzPOBvESwfdlALmMN0y3eOqSCMWm4PTF6yQiaCo
01Qhe0FEWLNeFQOZy/QD1lMYHNvs1A/lsVDF/3DCxGBqC+XRTxyQSwwuhHih
1Ba2F8VFfUM/yuMBJq2l/kiZES+zj/UpQRwnPCN92NV5wwNStppgOnIpc+zK
57lVY5gIuhN+7oKeBez8c8h52pbY+ceB81uJpybv3szsO5gwknERoVRE2ZZR
GGV1EZlpB1RpBFnmwMpoIM+BUefL+eaoeF6926U2vU1MRp52ihjobKJN+S5F
nzDssuQh0T3mK9uxBwaetP7GyE5xiNgQpaKaTYae22Bt2qIGhYBQHIMXHpas
UKqg4ZON4OzxJBvbqYfLgNusEZQhttyXldYcGzj4O2Nj1tc05rKDX7DIMaZD
GaEwDZNkTr1qnwRkSTHf2S8oFKGpAEw3c7WQ45oeby1LuuU1EwsXfErbqvxZ
DiV1swdg5SjHAo+ikIJHrke7xG4UE/j+uqpRHdM90pP8FhSmzDqB1fCqJ/12
UhUNT1VQwoXzHxfT5c+eSpTRM0X21mZ0p9FmNXYeRmPPdZGnPxAjdp6fSTS6
8F/1osxEFNzDqBjRjtyMNiCVk1s1fnrCJWCmPFlKeafMtcoYx6Rtj8cyJidS
s3cPJVRLPT40Z8PdI6lsylchki9Om6VFAY6zxCQfkPZcBl1WWRXfNUJmuZgc
WDYic94IvWXcA2YRjBdhFKhmVjDhPmlLIRaFLlR7ghSfeQvY5mTFeVBKHoV/
+fmoxFXjKCeJk8h4VkYs5lzik2m1jEtDUXV2bSOPVZlHr5uvohkutDlOIlPp
g4iqd0+QTCbQ0kRioyVYT9V8H0VwqGIyOjCyxgaZRJb1DsoBM4uWNCfbz8Ey
E20byqITPTkZQY3zFqiQgxtVJ7eBwS3rmDu2jltmNQgAQeg/8c1pw7vXr1Sl
saRDpboqMiioVdKimPgASDiWxUQeenVWZpnFlgJFjVGSnVKXjfSwaeQnz56h
wevlKbbCVDa9GZSPh9YqaEvfm3v4TNckSpuQHJXkNdRGJc8HxsVaMPot9os2
8CRNChK+CRSZ+dJPPFS9OXLFhq4r5suiEaAiA7oHI+2rCoaFM8NJr2YefMhC
RMzxSIRQVGd36gTiGcWo5aaHUDtUipSpcTEqbqqlORA4W+mNYckqLPpTskW6
wlG6KdZiNM5EwAzfJR3BZBdG1VL5m9lqTKHDCt5kqu3BZYxTQonXJ0tKW99U
5pYhYCxlQBZgSpKQb1iVJskAnrYt4InDAzvywpiJxGy7hB20L3oMxqCUgpgX
6EoViVQGjHaDFN6TgZpIAWtUCSdmK1DP5d7mgv2MuSDbagBfBFipQrZ1objZ
RO9ZiNk/RipeWbWlcHoYXaee19UsjFUNMuyFz8nNYFNqQ8ZtHZvwW85hpsr7
jqDnbuvaWHNevkG7Fp9UU4jV6ivjlzbq/eMXNNBGWrAb5QePBRpsqHLPFrin
JpCGX/j4ZIMgoZdceZTTroi5pTsFVR5+IUsk4ZF0bRnGjZyKruHLg7HcQVUQ
kcl8finQr+ykrJlnxBsCQ2nJGBo5sPXBsqYOlhi40Maddpz/oU3PhEXKnPjl
FZTsPOPMEobPD1Q4hFBH5d1GqhR8CBc2gFTfrNckz37XPDX1UgwSAY9ZWtu6
5Fn7EUxvZ5Y58MmfCRNFXruuEs25dVJu/r//+V+pGxUzYfUqFmAmqPTJIabi
JkgEVH2ifb4SOaa+aMfyZbqYfRMFmTrqF4uxBe3IiNxkB4OYeiHhQSLjEbJm
+3XMeeoJrrf3EPH1hSLqlB9vugVE8IQwhkCpCQUBxwYzXhbLkvEMM6cuEGkS
2aIUWJtrX79iISc0fq6pScgEDGkbfVReTFJzQWorGcqpaDmAkSRXG7M2zauj
NWfKpIu0b9xFpFYxW1OflGyGfnH/JbmWNZtFfT0TB4OYm+MiPeZAPzrcwL7F
y8UijJL0DJ8WXb2k3TO6a9NFAMY8Levci9RJvqwUbVMOelpSSeOWGGlmNuw/
ZAVBWe2BUXyQzr1QaMQq794EvedJvV5/WHUGzafprPKtmu9gl5Kl0vKFX3LT
JUAH40evEvmrUONye/1ee4HLa1KU7ikpMkKMINc62uIpYTZQrryqQvy2SzJ8
defm3d7BYaWUHgXXmiqBoCWUUSetxM44wVR1kVkEtDmJuYRIoodNuaPUOJs8
Smgj06zzI6k8iAXeqRJ5dD7HTD5Mk/ucuRtmt6y520WYrTPbmKNbrDQjrxIo
GoRlEfPW8TzUi7E4gyZ0FQBXSg5WlujIiLaS2Q290ISnUbicziQGim56+ukh
wc+UB2D5+JksWB0ezCnnTAYCuo6D9aYTjppERzj9aKh8JuWWFJWcus5eZQGg
SMexTX28lA8idX/G8zbxgUfLHWk/ZA7JqcXpxSbZPXlBxIY0Ma2alZpJDZeC
dtYKf0cDAfi1WWefczn6Wae3kdREJsmK+34NeQ3vCjBiGrmixTQxUYfSYvZa
haKqqblazUaR9upWS09J0GJId+30ZXK6NsFF2p6OxVbTWgOe/02+gS7hG8IY
GYDRNVgy49ZQ34VYi7pgKL35J8fzcb1khs6mGZpj2VFkr838rz87EautSagL
4fvpPu92ctR5CEbOzGI5BilWgav8OoySNmln0nxADHSKZY4kdauT22wR48mz
pMmFBp3SjLLUltARcMHG5Zc0WF09bOZ6AzwJbB/dOGZtuP0CzUtoorzl2Uje
X5aFlkmBkz7O9IqS7K0I4izjTT3KyNXVHlYvJQIdWYorj/DmQ5Jp41Ajoj6v
eX1arxYKfKSDwVYxn4WRGkK0TLNUQdQP9AxU6OhEuKlf2IR8cpZMGgB0Mw9z
ZnKXDsOLmmn7UU1IF0geptQYsHPfnr4wB8qSSymuMvXSg4zO94D+1K9yN47t
GMRoQ7qeaGLeeohCjPO9lob065Ob6z1h5Hik0Ki4K5eIjBkFpTl+IqCI198I
1Zw5DBsKUxaiUVC4Kqy3UtuDshIzbjd1T4WsOaTUU+q4IoqnQPvTkV1uSsmY
E7z/RB4xVC+F2Grucg2ZHVmRcckKWWO3sao1q8mkixPTh0doUbw1xLJKbhJ5
/fbuZk8OKpz96fUgEuFkUkuqeCh4NhEfsriOu5dCbEoC8qkKuz9zrgMuX8a2
MgBN7sje/UNRk1kYJ+oQ4a9Lbj4kWVGuWJFlX3q5ANjhiG+wQFFcKkweqTSV
o6l86WJzvUhF0oB6injo/QqNuwlpedp7jAuwXVc4pumKNVmVIFKFxDVFYlAp
YJgn8PrDu73stQBpwoFi3ey9dExc5KZC36ogXCECnKpgDPZa5cBWJebu9dkg
JZhZsKA2m6u83Mx4JrEyVLIN0hQvgEkXZ0TNM6YW3toguiUKFU6D35lOkb3P
4ORicth8e3cc/3b4aT2cfjzxjj4d/fhiPfKGUuSdr0EYffBD5+wwmkzDQv2y
kO5i9XKzh9XLrcao2ek3jvqNg/rR0YbrEETTl65DkK22lUOnx+o/Xw+98TKE
nU7r8u3vuAbBoHF6G4KsyU4Zd3sdH7Tbnw+S9vPxhR2OV/L1XLKx+Rq+UQOb
Ntyfem+H3fbjvNWuL/g8Xy4vUlnFZZkIbScysVzGvb6+iuUvvzqZX74Jv4MK
kucKgs2r5mYqUc9Ia8nkOvyBSHZVuYB3iDVk0EFGZBBNQNvCD+Icq64ErIr0
SlQF4ownVGgY2VOeZmDSms3EGIqrAGg5CVoN0E4RDSAL81gpcOGgX9YohwLB
DedAIVeSWippebEqYFu0XlBoW81I39EYlwRORcQvoZJImbk65UliZNUCMV0a
ZWzDuhA0pFr2AOinXuLNBXwmMoDozTE2AIgszJy5F4u0BOMSXvO0XbyWFUM3
njyya4KIy3Hp2lt1SZiuzVGXaUqCyKxMg8ZZauZKhsX5+6CFJQyoa4h+4TSy
FzO6flJMoDBNClukFxLL1EpDWelkGGDkWZ29CVf8SV1nF69hts9lRRAqA5Ey
xER4Qib82f4UrYgZZqlOqswVheky5AD8Og6XSdoIk/6m5LjAEP08xESfcIxX
EekmbMUj7W53Re6kjG5jwVidnYsvuZD2yeBK5UygZjOmVbb4NOAUcC5qMF6x
4eBqkEOMPHkzuTp4s1sa/MJRi9cj0r0I6uYiMpGM4xaqUrBQI+BX4MC1GfxS
/pmj+kH9QPOWKGnJ1on/rVb2x3z6N+t35ZJ9b4+5r778DicDZXf8vmM/Zej2
O90dT4TasZ8sWg+cxyBcgXkmrmjH7DmV7ul7j5J8dvCY3h1NAS68MxoBYRqF
y0WsLthekrOQ0pa88VLwhqT/5uu0yQ7Lo5C8J31sO4+b6piNvfxMR+ozFdr6
+qoYaZLMpH5QhrRxw+UOwbGXkqLywbPdg6qYThYCPZUrJB9xo/bFEFtsUI8X
brvPhqpVDDp1hxT9haTCYoMQImnUuBE7c02xuAq6eAN04UZpKbqoJ+RckYv2
ASHfnV2l0dJ65qTq5UA8ve3YWKP2pogYs9C0MGl0ZWgcozTpKCblo7PzvERc
9h2hi0XvGTAe1ob0ZQSw9tsSK0VcLjLB0vmLrYZRbJlHgIoFpoWtTUdP/Hd4
Aw9kbrhE4aD+ZHDUyH/Bs2tNMCIq6kxu2UYmEnllVyFwvtwh4RTSZRvcpftt
c7fC6c0oZo2iWta3fBeD3CDTsOR8qbiRDCtMoN1uOaWMbZvuwjsTYXbjSn5p
hMy8sZeQ3yNf925mtcu4jpHObpqkN2efbs+uTs6otMIc7efWL7LcItME/wwH
3RuxiT/ghsTJD8UfyD3nlvzgek8lT6PFrORpXPo0csr6hadeyWMnCtTTb2lh
WoYEVqba9XW3CaZ1gjbkjD/vZQ+fVrvB2k1mt1hrwpo91uixXpMddPBvr8sO
2vhBPp+wg5bVO2K9A4b/iudt/ABfD3ry60GLHTRY71B8tbCH9Cv+2murdzvp
V+hBtO+JNjy7oBwU5tZweXrhvX++v7j/8brx049XjfPpT0/O3A/su093g9b1
wp3dnzrBcXg+vfriXEzvBu23Dz8d358586tH+/r+9L79dpkdb4AZewBHaHMR
ZJC+QEA0oA0xJytPytuU514y/Rn9v4GSbdl8VAyNVqVdnmJWZ0Xxtscxlxdz
vHQDCfltgI2mYJuZF/estUdzYK6CYpx0NsHF7ybl2eqprEsTwGszcrHXt4FH
AVKj473vxDNxMDPLXiS2FZBLuIbE/5wI79+noZHwThTivf8AQWbXeWgUwFcA
N51M9FlAuQFwyjI2b8xKk4s34qJ6Tbj5XUru2Ih2+eF/bm5EvMKDTYBU2pSx
29H5oWpdCew5uVXAxIvZMZxSKz8YTb+VjWCg2C4j4EXhazgtMm5HIl9swxDf
CtD4T6MCvO+E9Sbg51Zc7/WY3WRtlyHGj+nfozwMw8NmlzUcq9lmLcRdhP+e
i5/b6NjEDx1bPhQKAR52QA9MqHEHG0g9IJGb+oQnDv4PAPB1VB0W/AQvHhyR
Guky8RU6RG3Tkt3KPh1oZsGLqJS6uygl0B7W9ygl6MFKv2a00HepnQt79nE0
OLg8fRQq5XTw+fT40hvPz5PhQzgdPi5m47vPX4Znb5/G808eqJ8HZ95ZnU9X
t8PHn54sxzvujtuf18OLzzMnuJyOW92Y37zz3l7vpsssVGbHb2Dki8fsxF+A
2o88qo2u2I0oyvjzgOt6k4lItoX+YqNwgv5fGKooWtSAxKW2psytw/LIZ/Tu
xcIfKFSRTPGpoPzpTAehaPKQx/F/7yZnFjqU9qN1QcbKlvkFaJR7zhJz8zeZ
wf9C3K2Im8PH7xmjifeZdrvNRqOR6XxDo+a/ML/ZaW/H/MMmO3QQ9gHQUAU0
8d/upBT2LYTo74B9q9Ni3wP7lgDnnWHfgmay244GdjxtYM8ce26IGcKi4N+G
hf921V9aqfgLbQqN4V+rpHGTbVY0Vpmi2XL6scoUDfsrFM3w4jK8u1zdj44n
gPvr+9an1fmn1Wg4787GN8Pe8OTtu/u7pu+sj09AhzwOZ+JMc3l8f3l+8vbC
GreHU3531ASF49//+PbL8OJoOX7zCBrpmpTL5XHn8vRm+Hz5MFhfjW6bl6PB
6vJkqJ9Z+uF3aKdNyun/AVvEVrvGdQAA

-->

</rfc>

