<?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.29 (Ruby 3.4.4) -->


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

]>


<rfc ipr="trust200902" docName="draft-wendt-acme-authority-token-jwtclaimcon-03" 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="2025" month="July" day="07"/>

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

    <abstract>


<?line 46?>

<t>This document defines an authority token profile for handling the validation of JWTClaimConstraints and EnhancedJWTClaimConstraints. This profile follows the model established in Authority Token for the validation of TNAuthList but is specifically tailored for the JWTClaimConstraints certificate extensions. The profile enables validation and challenge processes necessary to support certificates containing both TNAuthList and JWTClaimConstraints, particularly in the context of Secure Telephone Identity (STI).</t>



    </abstract>



  </front>

  <middle>


<?line 50?>

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

<t>The validation of JWTClaimConstraints as part of an STI certificate defined in <xref target="RFC8226"/> is critical for ensuring the integrity and scope of claims used in PASSporTs. This document specifies an authority token profile for validating JWTClaimConstraints, modeled after the authority token framework established in <xref target="RFC9447"/> and the TNAuthList validation defined in <xref target="RFC9448"/>. This profile facilitates proper delegation and authorization for entities requesting certificates under ACME <xref target="RFC8555"/> and similar frameworks.</t>

<t>This Authority Token profile specifically addresses the inclusions of the STI certificate extensions JWTClaimConstraints, as defined in <xref target="RFC8226"/>, and EnhancedJWTClaimConstraints, as defined in <xref target="RFC9118"/>. The STI certificate credentials are used to sign PASSporTs <xref target="RFC8225"/>, which can be carried in using protocols such as SIP <xref target="RFC8224"/>. This document 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 based on the issuer of the token. The Certification Authority (CA) issuing the STI Certificate can be informed of the proper use and contents of the JWTClaimConstraints extension based on the STI eco-system policies, best practices, or authoritative information which is out of scope of this document and will be defined by the STI eco-system.</t>

<t>This document also discusses the ability for a telephone 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). The new-order request contains an "identifiers" field that specifies the identifier objects the order corresponds to.  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. 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 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 would look as follows,</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 as shown in the following example request and response.</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" 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 and is only used in cases where the VoIP telephone network requires the CA to identify the Token Authority. If a "token-authority" parameter is present, then the ACME client MAY use the "token-authority" 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, then 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, an example of which follows.</t>

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

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

<t>The "tkauth" field in the challenge object is defined in <xref target="RFC9448"></xref>. It is specific to the tkauth-01 challenge type, and when responding to a challenge for a JWTClaimConstraints identifier, that should 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 detailed in the next subsections.</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 per <xref target="RFC8226"/> 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 "Thumbprint" 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".  This string will be managed as an identifier specific to the Token Authority's relationship with the entity that is creating and signing a PASSporT <xref target="RFC8225"/> and making the Certificate Signing Request via ACME. There is assumed to also 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. 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>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. Note that the fingerprint in the token request is not meant to be verified by the Token Authority, but rather 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 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 specifically involves the JWTClaimConstraints and EnhancedJWTClaimConstraints defined in <xref target="RFC8226"/> and <xref target="RFC9118"/> which involves the required or disallowed different claim types or claim values, the client may also request an Authority Token with some subset of its own authority as the JWTClaimConstraints provided in the "tkvalue" element in the "atc" JSON object. JWTClaimConstraints can be constructed to define a limited scope of claims and claim values the client has authority over.</t>

<t>As recommended in <xref target="RFC9447"/> security considerations, an Authority Token can either have a scope that attests all of the resources which a client is eligible to receive certificates for, or potentially a more limited scope that is intended to capture only those resources for which a client will receive a certificate from a particular certification authority.  Any certification authority that sees an Authority Token can learn information about the resources a client can claim.  In cases where this incurs a privacy risk, Authority Token scopes should be limited to only the resources that will be attested by the requested ACME certificate.</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"/> two identifier types are authorized using Authority Tokens:</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. The issued certificate then bestows on the holder the authority to sign PASSporTs containing an "orig" claim that is within the scope of the certificate's TNAuthList extension.</t>

<t>As described in section 5, 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. These two certificate extensions constrain the claims and claim values that may appear in PASSporTs signed using the certificate's credentials. In particular, claim-constraints extensions can restrict the values of the PASSporT "orig" claim, which is also governed by the TNAuthList Authority Token. Accordingly, there is an inherent interaction between these two types of Authority Tokens.</t>

<section anchor="examples-of-acme-challenges-requiring-two-authority-tokens"><name>Examples of ACME Challenges requiring two Authority Tokens</name>

<t>In the examples that follow, the requesting user is authorized to use a set of telephone numbers (TNs) and may, depending on the specific case, be authorized to assert additional claims and claim values such as Rich Call Data (RCD) items within signed PASSporTs. To support these capabilities, the user obtains both a TNAuthList Authority Token and a JWTClaimConstraints Authority Token from the appropriate Token Authority. These two tokens may be issued by the same Token Authority or by distinct entities.</t>

<t>The following sub-sections describe three use-cases that illustrate how the two types of Authority Tokens can be used to form the ACME challenge response to the issuing CA. In all three cases, the TNAuthList Authority Token specifies the TNs, or a subset thereof, for which the user is authorized. The content of the JWTClaimConstraints Authority Token varies per use case based on the user's authority to assert extended PASSporT claims in addition to the authorization provided by the TNAuthList Authority Token.</t>

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

<t>In the first case, the requesting user is authorized to use a set of TN(s), but no other information conveyed in extended PASSporT claims. Accordingly, the JWTClaimConstraints Authority Token contains an EnhancedJWTClaimConstraints extension that prohibits all claims defined by PASSporT extensions, as shown in the following example:</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>As described in Section 5.5.2, the CA requires two Authority Tokens in the ACME challenge response because the ACME client included both a TNAuthList identifier and a JWTClaimConstraints identifier in the new-order request.</t>

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

</section>
<section anchor="extended-claims-authorized-same-claims-for-all-tns"><name>Extended Claims Authorized (same claims for all TNs)</name>

<t>In the second case, the user is authorized to assert extended PASSporT claim information, and the additional claim information applies to all TN(s) the user is authorized to use. For example, the user could be authorized to use a single set of rich call data elements such as a company name and call reason for all authorized TNs. In this case, the corresponding JWTClaimConstraints Authority Token contains an EnhancedJWTClaimConstraints extension that permits RCD claim values associated with the authorized name and call reason, and applies these constraints uniformly across the user's authorized TNs, as shown in the following example:</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>

</section>
<section anchor="extended-claims-authorized-different-claims-per-subset-of-tns"><name>Extended Claims Authorized (different claims per subset of TNs)</name>

<t>In the third case, the user is permitted to assert different sets of extended PASSporT claims for distinct subsets of the user's authorized TNs. For example, the user may be authorized to use a calling name and call reason for one subset of authorized TN(s), and a different calling name and call reason for a different subset of authorized TN(s). In this example, the JWTClaimConstraints Authority Token includes permitted values for the RCD claims that are associated with a specific set of TN(s). Additionally, to ensure that the correct set of RCD claims is used with the correct set of TNs, the token includes an EnhancedJWTClaimConstraints permitted value(s) entry for the "orig" claim which identifies the relevant TN(s) to which the RCD claim values apply, as shown in the following example:</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>In this case, the CA will verify that the TNAuthList extension of the requested certificate is within the scope of both tokens provided in the ACME challenge response.</t>

</section>
</section>
<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 receiving a new-order request with an "identifier" field containing 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 is as shown in section 3 with the exception that a TNAuthList identifier is added to the new-order "identifiers" field, as follows:</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, as follows:</t>

<figure><artwork><![CDATA[
     "authorizations": [
        "https://sti-ca.com/acme/authz/1234",
        "https://sti-ca.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.</t>

<t><list style="symbols">
  <t>Verify that the value of the "atc" claim is a well-formed JSON object containing the mandatory key values.</t>
  <t>If there is an "x5u" parameter verify the "x5u" parameter is a HTTPS URL with a reference to a certificate representing the trusted issuer of authority tokens for the eco-system.</t>
  <t>If there is an "x5c" parameter verify the certificate array contains a certificate representing the trusted issuer of authority tokens for the eco-system.</t>
  <t>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 that "atc" claim contains a "tktype" identifier with the value "JWTClaimConstraints".</t>
  <t>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 that the remaining claims are valid (e.g., verify that token has not expired)</t>
  <t>Verify that the "atc" claim "fingerprint" is valid and matches the account key of the client making the request</t>
  <t>Verify that the "atc" claim "ca" identifier boolean corresponds to the CA boolean in the Basic Constraints extension in the CSR for either CA certificate or 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, <xref target="RFC7515"/>) objects can include an "x5u" header parameter to refer to a certificate that is used to validate the JWS signature.  For example, the STIR PASSporT framework <xref target="RFC8225"/> uses "x5u" to indicate the STIR certificate used to validate the PASSporT JWS object.  The URLs used in "x5u" are expected to provide the required certificate in response to a GET request, not a POST-as-GET as required for the "certificate" URL in the ACME order object. Thus the current mechanism generally requires the ACME client to download the certificate and host it on a public URL to make it accessible to relying parties.  This section defines an optional mechanism for the Certificate Authority (CA) to host the certificate directly and provide a URL that the ACME client owner can directly reference in the "x5u" of their signed PASSporTs.</t>

<t>As described in Section 7.4 of <xref target="RFC8555"/> when the certificate is ready for making a finalize request, the server will return a 200 (OK) with the updated order object.  In this response, an ACME Server can add a newly defined field called "x5u" that can pass this URL to the ACME client for usage in generated PASSporTs as a publicly available URL for PASSporT validation.</t>

<dl>
  <dt>x5u (optional, string):</dt>
  <dd>
    <t>A URL that can be used to reference the certificate in the "x5u" parameter of a JWS object <xref target="RFC7515"/></t>
  </dd>
</dl>

<t>The publishing of the certificates at the new "x5u" URL should follow the GET request requirement as mentioned above and should be consistent with the timely publication according to the durations of the certificate lifecycle.</t>

<t>The following is an example of the use of "x5u" in the response when the certificate status is "valid".</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://sti-ca.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 PASSporT claims and claim values. 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 telephone numbers.</t>

<t>This document inherits the security properties of <xref target="RFC9447"/>. Implementations should follow the best practices identified in <xref target="RFC8725"/>.</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='References' anchor="sec-combined-references">

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

    <references title='Informative References' anchor="sec-informative-references">



<reference anchor="RFC8224">
  <front>
    <title>Authenticated Identity Management in the Session Initiation Protocol (SIP)</title>
    <author fullname="J. Peterson" initials="J." surname="Peterson"/>
    <author fullname="C. Jennings" initials="C." surname="Jennings"/>
    <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
    <author fullname="C. Wendt" initials="C." surname="Wendt"/>
    <date month="February" year="2018"/>
    <abstract>
      <t>The baseline security mechanisms in the Session Initiation Protocol (SIP) are inadequate for cryptographically assuring the identity of the end users that originate SIP requests, especially in an interdomain context. This document defines a mechanism for securely identifying originators of SIP requests. It does so by defining a SIP header field for conveying a signature used for validating the identity and for conveying a reference to the credentials of the signer.</t>
      <t>This document obsoletes RFC 4474.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8224"/>
  <seriesInfo name="DOI" value="10.17487/RFC8224"/>
</reference>
<reference anchor="RFC8225">
  <front>
    <title>PASSporT: Personal Assertion Token</title>
    <author fullname="C. Wendt" initials="C." surname="Wendt"/>
    <author fullname="J. Peterson" initials="J." surname="Peterson"/>
    <date month="February" year="2018"/>
    <abstract>
      <t>This document defines a method for creating and validating a token that cryptographically verifies an originating identity or, more generally, a URI or telephone number representing the originator of personal communications. The Personal Assertion Token, PASSporT, is cryptographically signed to protect the integrity of the identity of the originator and to verify the assertion of the identity information at the destination. The cryptographic signature is defined with the intention that it can confidently verify the originating persona even when the signature is sent to the destination party over an insecure channel. PASSporT is particularly useful for many personal-communications applications over IP networks and other multi-hop interconnection scenarios where the originating and destination parties may not have a direct trusted relationship.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8225"/>
  <seriesInfo name="DOI" value="10.17487/RFC8225"/>
</reference>



    </references>

</references>



  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA+09aXPaWLbf+RV65EMnM4CNjTfeUoOXJM7iJIYkne7q6hLS
BRQLiZGEHZLO/PZ3lrtKYslMvw+v3kt1VWNxdZdzz77RbrcbRVTEou+9+Di6
iP1ofpEmeZH5UVLk3iJLJ1EsvHTiDS5eX3mDZTFLs6hYeaP0TiQNfzzOxH2f
v6ybAF+QY8M0SPw5LBRm/qRoP4gkLNp+MBdtX83aLnBk+/NDEeBEQZq09w8b
+XI8j/I8SpNitYD3r69GTz3vkefHedr3mlESigVMJpKi2fKaIowKmMyP8Y/r
wTn8L83g0+3oabMR+IWYptmq7+VF2GhEi6zvFdkyLw7298/2Dxp+Jnz4TgSN
O7F6SLOw7+EOW95wdH3baOSFn4S/+3GawDZWIm8sor73a5EGLS9PsyITkxw+
reb44bdGg8/Vb3jthgf/oiTvexcd7yOenJ4wPC5mWZRbT9Ns2veG6TzNvesk
6NAzMfejuO8FOPRv/mIRRyIcR0XeCdI5DQjSZVLgwd4PnfUuO95zPwnS4M5a
8dK/j0Ln+YY1Qxw847GdSBSTv03xi9qVG0mazf0iuhdwau/26UXvuHcqP54c
HHbVx6Pukfl4Jj+eHhwcq49HR2rA6cmB+ni2f7yvPna7at6zXu/EfKSnjSiZ
lDYCk/fMR5ix0W63PX+MmBoUjcZoBncAKLqcAx55oZhEicg9P/E0cnqEnJok
YAEPoBLGUTL1ipnw7v04CmHJNEFyqSMGGO1dJQhKEdZ83/FoE2aBOE4fcpp7
noYi9gTg3ziO8pkI4XLLxEg7qm5kdIPjXkV54Y2XhQcL5AsRRJMo8OMYDgVX
mWYwoXq7buOByAp6oxCe+FKIBImR9iv0dkUCewOQWavjeYMZLCOSKQ0MRJ7D
kETgBz9DkHr5crEA2rHXgAWB1mFpBO04RQ5iDoGT1uyx5S18mCBYxn4GxwLw
4GFwHtgwwmEogmUmvJGIxWIGBOxdI8dA6D0G4n7SYYSYR2EYi0bjEZBBkaXh
MsCTIHrsdME57QK/BsyBaR3IMVLR1X37JvH9+3e8kQBuEe+DLgGgu8wUUsG0
Ykp3jOfOg3RBzJjYY+4tc57u7WA4BCCOFAppPJZXvR2T1dlg2VrgEgLCYsC5
BeNJebZJBqwFWOZdGU3prEikcFY8BL5s3acF1TKAkJy/fy+ThR9EcVQQmsCz
BWwHtzY1KCd39pWfMEjhohEKmfj7EraHx3TwbQniI2MpxlcD/EduN4/mEeCU
OV/ekdyiTH9qhw59+WGYMdbzdQbxkogHbxGflJHEkFf9RQCK1eNRaxt7qX0X
+SiDuLqVANgCQg7krAeCkbENKTaaWiin93CEe3iYRcHMCwDbxjCBn2URLwaH
BpgDhEBYpjBfvoRhsJ/h9Vs9QU/fdYUPI6RgeQW0dZqGfRuSA9CdGiYE24dN
3AubHkhMoJJAmgDs11qJGAhOv2HlsY+ASXk9UFSWgEpyOJEGQ/dCQxax0uz2
8cXgCb2lSB6v4cK+BgYmizRciKeWuI97JT67w0Y1brlbxgVFkLbzFZx+7i3S
OAqAWFqwKtDnAuVjFODfACIXZlrMwkx883B56ZIYoOZVhXOjuNeHKI7xSAoZ
x6uafXTKMhnVPS+M8mCpyckfIytYEY37XqFZu82bNDsQfKGg4SkWfjHwUKMk
mDnsAOezmUoN3YAqAuiKgmIksnmUpHE6XbGcANXRQ90x95qv3w9HqIfi/72b
N/T59urd++vbq0v8PHw+ePVKf1Ajhs/fvH91aT6ZNy/evH59dXPJL8NTr/To
9eBTkxlB883b0fWbm8GrJlOCA8mMCGHM4iVbZAKxnk6Zgyga8znPL9563R4c
99/gvAfd7hkwRP7jtHsCtAo3LhJeLE2A0/GfAGNgeouFAJYJkwDdAQIvAGFi
ZkD5LH1IvJnIBAGPyDMRD22AF2Azy2QQWBlfQg0WNxrXic2kWyjZ6ZpOHHZB
6kaIIr+Y+Yh3khWA5gwgWBIKpR4v6+MWHN43ydI5PN5EtEzWZu9StijdhURu
MzIHanrwvzjk7RjBTExDj/LS8Wc4Dj/meYM0AwmySJMQd9zxJItEI8roqXQA
RGbE5cp0HsoiUas3dbxBLa+w5tAHIslNzJWGe854ixUwbi3SBShjBSPTOpYE
d7xBZClmVrqdjvd0g7Jqdt5SL5duiKRwSGAjkOWiwD3jYJgF+XCzZuImXzjo
K8uNgsiCHJH92FkgFKhxb2TTcpsi7DA/YcCqN+QOCYsyAbSbE9tfN5naQkDP
QJ0l+UaKNciA494yA7sCbLsQHhGBolCxdaDqMJdNKOo7wg3Si2jzofIUAObS
eHn0kn7Er78YvrkB23fsDUGr8AukV2vSAz0pmoxKUanZkmKw6m6B+Fagi4f0
JYh/FGLIVJQCWqtBDG86XUUxCm60gobZ5dWtWTNbgr0DdzRIQLL68wX7SRSj
YZSTs9XxAcvG8bdaXQ/pEl6J0/QO70iahq1G4x/Wv4a7TN/79VsT8bvZr0Xn
FlrvTUJnGPH09DA58Dudjn+fHJxc3hw2v//mzt54QK5N0JNvqdNJlCxho5+N
I1gLrDxUvcCIK10bAJVfRBB6kyVIiiqp7nTut2/grvbQUbNnZng+Gr3d63a6
jedpXvTVDZHX4oJ1pfaI3EnkTWEOv/c5zcVfP+do8X0D8DRRYRVIMwBNvf3H
38jv0fTjKTxuXg0Pjo4Zml7zLsKhzVlRLPL+3p61Ku8PiKLYE/dvJi9nN++P
9x+m6sUkBR6Irx79/KL76jC+unv97KS4PV4M9veDeKCGwfIb59fnb8L4709a
dAh/Fad+7RF+GF/KKAMIo9FFn6Q4F8Cz6DQH+wdH7f0u/Dfa3+/Tf7+YIxcD
NCedcafWOHOEXDEHHPv8+Jefi2efR7+s3idvxUvcw8PVoDe6i8/D2aHoHfWm
zcb3EvK+SQCnAhHdM72R1VnFt5axGXKR3aPwQ33RsZ+lXcm433J4pdZEOt1O
r2VTOKmexgpB5m2sE1ZJ5mB8eDlMnk9Ibw3FnKFf2AqtctNYN2cxVKlJo7zk
cz1Wyl8AV9/aQWZJtQZUY2CeuW3pO+f23t++Uny96QzQ/E3KK5sPsrYI6uYy
S/LKt2o+GyhSdRin4YqYq3ew3wXtiy4lfOKxYpSjLulctyJ+Gi5HbyJ7pPhb
sYj9VfsGCbHvvf40WN6/WfjpdbR6GImv0de7o/uHxquUX+l7a0mQjrTXPTjs
SSaSg7W0RPpqopsasIEIoCm+LCLY/1rsBy63MzVtpyUa5ZD7btRu/dsoK3i3
JUwAlkJCZj07hPFfCVZI7MRBmqDRAnF+FRv5nAHynh5foflHmxwFvMcSYyjr
i4xdrQpaArPIlPKeiQnIRdRg6ykFrYwx8gGXCeQ1pKw4htGZqxJR21ByBMtE
3LxSQvRIorV6ArFEprkDIzPxuqtyE5/uJDtx4DclLjbJ0HVy1Jal6yltnTB1
Bery3WL4Ob4d9+7ffbj4/OHTYLV6/9EZuk2ouliK/1gs8fG0dG0aEenIq2Q5
vLwejj8+O52/nl6dPAfCebf68P7V8enq6+TwF/9hkfO8Zfxdx9L2vTcvt3Gz
V1Fy1/f+Y+2Z8nQu2iEwoKBIs9V//Xsm4v+kUNqX5p/BtgxOw0CpbFD0bgOz
2cBfUBPgiQ39KO5iMI3ZGfz/Dm8MdmYuRD5SI/wisL6joKMWsTYq6IcdBcA0
M6hTRpwxKqsi61SATZveW2Qffj8/WV2tBr3S4jjJdRxlky8vX/48yJ8X868v
D87efj4dKMQA5lhhbx9n7HTGYAprNbbFoJwHxshIHMfAhG3f+vtA18dAOkmQ
9ZV8q5YmI10OFsy9hwiUfd+FOY1BqJcjAsAdQc2KUOVRSpHlpLd57gw4H06I
RwjIr2A7+wUbVFkae+m9DFFoQxrZYLrMAooASCPFaEu1IGA7X1rg5rwVZMGA
jz8XGBVB3+cCKdCPaWv4NzrGVJQGVbDcM1bUh/T6reW0TERB4RPcNVIYjUEX
ZarubWV5YPSVdLzrCUF748bkoUmSJRVx9nrwiRzJBI3KROzxKG8DFUANTCU7
S3vjOyV3L3rd4f2d3fdKcCmlUF8Bnbd+o86JQSPadmo08TeB1rjJ45SjOYBi
k2i6zOhCjcMLBDmN0L5ziTf2apYPr2QNABou0lzDcBfoVObA29DUrbUH1rTh
b9pIvf3iO94L9uJLO9tRGmyVocLPytZ2DSf8U6zuqq7wT1rcRj1493t++Ppj
+vfR/tEoC+9eH7weXQYPPGhX/s4Kgp+Hk739HQxvyRlx6stnq1vxeX4BOuTJ
fe8GZN79+ODs+ezz51dvh9PpQ3S1zgo+C8bToxdvus8mR59eff78FV4dLu7e
T4LwrR+dLT98+vTO1YgZJdXa0kgra6VKaY2ckMevMhj7GxCfk0KgEFFz/5Jo
YIMPIwMK/6U/0LcGcvRmuysX3eYz8gdJqbYzuVhHYaX6S4FJPoh8nS1mgk51
IujtFHhEv7LydUYJ5gwF2mFcl0VVF/c+oeDSrku+VQTjzYQfKsczoOcC4zIo
juukeOWtujiX2sqjnaDkvWWU/4Gt8wuSGUvnLaW8AOb4qJuqZAfUPDHG9bmI
VIyL1Dj6iBLMflsLYvmyOpeyuapXgG75MoosxxJLcoLAI9Brc1ANaE5JTuYB
XXxSWrkCUMx3sjxFvQ4wzY6HZCXjvKQtoKpj8/TVRgFLMecNfu3SWcdilUo3
ePPL0bKJ4iuFvzLvOeOBhBnPbcvHWHo/dHTc0Tfd5IEZEqgcV961yiSQuR87
awXqFhATnFswD1q7QLzX0v59iTShDqLrSNclbGwUzUsRHzaFPNo1BRNwhFZd
dwG/NKDUWRCdnbOYBzud5WTbWXxvmUSgCNvaP5NBVJtjUlU2Mj/Jfc0tcdOk
ydubNg/qdxOtZS2M+2azFBCSUkizLsvJEQuMYef9RuMvbGSwfUFBdzY8ZDiC
rw2UaaBFwLV6LR++0ErsGiFk5cDW5T3ZxoyT0GBF3DtmnyQdpIof0q6JfZVg
1lGHk4GWracr6sNiG6KMWyKvtTlJbohsbUjM2vgPHTfwnZOO0zQWwBT5qDKG
OvFjMAoew9IgVE2sklPptie+4H5Y8xzjlaJ5BpMCUbdlMqCdB/Kkw3sqMXbY
YsuLJmRhaCQnboqDebcR5TDmQHKUW0mbBqwABPGXcSHPC8gyxfQL2CMfXL6l
4rR1uV5uoOEUbsPkB1ixVpT9y8Jh1s3RbDkfy9XAKl7IC9RqCQZsl0AGuBMr
96tT2uiuV1qKi+6ct5Vbkb6+Y4FsD8kBjbE/W7mUyF5wQ3Qo8vqbPTx7iAU7
RtBA/m+ZTS2MQqrfPe7tn50dHezvy6fI7vvNKDzePzs9PO6dHXT13oGn9r8p
zrElKKcors57pgcBfvYJF/UT+2b7mIUEgPKOjvuHV/2Lp/3BVf/0sH8x6Pcu
+92j/vl+/+Cs//Rpv3veP6Fcbvp3edg/H/TPz/rds/5pt//0tH+03z87718+
7fcG/cte//Csf3LQvzron8O3+zjy8LR/ddj8/ueZNiCUBgGipMJolZSazus0
kEbjqZYoNgPXyQytWl4vzQ9Acz+Q+L+Urrfbq+FosozJEPbIVLbE5lqM9jxp
VRd7kvr2+lG4x6tZ3ni2qmuxq7HRJ49GddkE1LF18sv4uYzySeqPpPYp5Yz2
JPA7xsUCKNtUyUhyrMrrA9Xdn0ot1nE6ls3G0q38hO65mGNHs2hhxL/kzVLZ
lTl85NIMKRuVr0ClpNoZqTRk7t8ptLATK4fyzVt5tvvIJ0ZIEdBMMCfKl3PW
VSn9EG++xHAtlyTedCntTCr15OKMLPsjXwbottX5kbaORdlN8obJP0M45YSt
lMVWySThuLbr6XHyeKsiBesyLNTv9jqn0vRUUVfcMOGpwgJpXrIRXqOyoVBg
Objwoyyviij6UloYmI1oPLV+LuUXobQ2NNgiiawc21Al1w5yy4fVMuFimTtZ
v821BElsnVmvCizsxIF3YcAV/vsvsd/LQ8WA/0n22+DIQtVHVPa9OncPio9E
XmR3Kpbvy7CU0t0I1nQNTAZSvwd0RjV7Dsg6X87X5yOUlQK/1jLwCdEo+kBR
FJ3dtS7TqOqwhotWeETTAykKP49ALZQ64xhxCigfTNbMkKtO8SeSmfugs/oJ
6afET9maXkRY50IJmZavGDicuJeDfcMRLa7tqk4OsOW9PGgxtAaNfzBY2Phm
4lA7eCRdjJHueI0f7Ho3227Jr+XepQyNgBcEyvQXWZZSrCqMmAN6Q6uGoqW5
JkZQjLG9gctRFiHzQng1kr43KeGuL1U0IgQLTfB+xZdIpf/orSLqaMW2t3/o
tZE1j6MwRHx5Q5fc+/KF0O4I/q9elFmXfDMeFQ36WehwW2LppWPjp3s8gvI3
Vfwmt7xARGnvkchlDFDLwx3JqVXrlKE9Wx4ZCWUbdyvpCWwP1pZCBcESU5eA
kkp5ga4wqL5rBetK0UCsrSIjyQr6OQa8XdYQZRj+advFSHhPWhLnXA/mKBxj
UTwIGSkqg0fxlvJ+Ot5NasPLYukKSoWMaDkEMheSCdjqwbg2DtWiyj2A5oxD
W/arqP6w2FSVZ2bFPDXbYtjJrGHaSG6NBDWlVZ7DOOhNHoxPGK0tRpkjV/bk
OeeVcCeXXwC6o9HJc/zL2peM3+blQB3TwtDUk9QieaNxLgKfo5gVDu2UZAFn
SON7sT5neksh1bpCPnzNKqpSFTH2atpsxgKTKCdwIheKJpRDVEgXmqxKkZ5Y
qS21pCbEyYIgckgjNck+FaFJMhLzPNiRTRcboefnwa4F9NfDQXNJicfGrSO9
cPoLcv9Z8rlTn9Asy8IsFwflOSI0QRbG0TzCZ+UqR/JmWoCw4aCSAvgsGPnv
eCA+0ZAI0vkcy8IrRYhE+eTrkR4aZgCtOhjilkVEhDfzsWxM7o4116IgOsIi
l1RJQcW7+PZ9ncgIikUcTVGfYJ6FKWeiUnZERVaLtGBJhvWD3jwFNuXCRhlC
WL5DJ4QZA39B2fPs05qlub0ZFKClDZGxprbh1xW/mIJa61uyZk3ugTdIVuu+
lSE7wdmzdZCNhZ8ljoTxx1g+5kJSbxlfIURAp3E5n4LAARfL0bfo3g9A8kT5
XauyMsEwt4x5BVzM1GPoCUcIqRwGVLjoyg2nNkyOGZZVpMJOCXx6YXL+mAGg
8Jgv4yJCBa+0vdxKHahm/yHdqziXnsFK62yB+gq3rCP5rrDMBdrvKJQ73kdl
XEdWoXO9gssKGLZAcPHVcb0+pLalzxwM9TBrefaVlM9Lnvx14UJrSieIaznX
KQAop7DqiuvftOuKGw1W4SrxDto7QnpsoMOvT5ZEY1srf4mhSAYs64cl66fg
haptlNFFXVADTwKR+FmUKrz2NxWYUWk8M55cVKDfQRqhOlsiFBYfFwM3v8jO
UJG1sZilQzPXh0MqphkmYdmAr7HdNqsV0tuwaQqFQ7bOMksxGcNKr13XQcDZ
nQkFPBCPZIYKdxELcoT5lM3jxFVyW/OoxzBb0eMEeumjsNkqJSFhTS12dZC1
t+oQJWdjucbaTeNrwrCpCrcpWYDIJrfhbNjawU95LSQ6JDCdoq7c9YPuhAc7
3ZEraLaWQG0JUukjtIyuojVeJ+izDjpbeE7lXlG9BE63pmI/ULPYTqsa9cWX
CpwukzU3LfV5E5px78+JywB9Gxnd4kXaQR18WPcCgiuyKGDwyM0o957yndq4
1bKECOqaU9SvrILt9RTbIWObqv/Qfi+0PxWl/YxVXao9lv5xy/CSENaF2WVx
IUPQV+weyXVrolohizNV5et1IhFETkEXwta68gBoGw/9PlWTk6ruPalTWymc
y/kY3USPRzf5E+l6XmEUX2ZQK6rXXh+uyhmL0vR+DqsWWIETuWksFVxSfRRu
8Z4uUBG99Avfe3x7cfkElH0x16gvEctuFWKarzDcQYX0lWuBAUGnZ9LNlVDY
xKdJFuzCLbQRCDSQpaCvISVVMlsNwREFGqHMzFWiIdmRZXMdOAfGWyO8RcB4
1QFEl9Sq6A+YRm2V5KN5IEybCTp9m5VMZrJxvJT1WDNpBW/EVCejB0PXoOVa
QrciB5W8Uc0gLgZE4nipvB9Ljm+4BLe0HDCRGzcoI5BoMZ20LJtA37SD5yzH
So74Xe723qfaGNWdgpx2TsMJXOunvNSlgVGeOFZo4anl+lfkoODk+v+0ANjO
nIiDPPJuUuAicrkLXmVgyFCziUmUodKl6+d+jDmMbh7nT9iBk6TSMVxyqd2L
FUvddYevctOd7sFuRLCTFGU0B0DOIuwtxs0b3Pw5AK7enJEure1VSY5/+h+N
4dW791c3F1cUY8HKx6svbNT8evCbjLs4Q/Df9eBoyG78n9gM+6n6BUqvKKz5
Iozua55mi1nN07z2aRbUzQtPo5rHQZaop991CUe5gKOsdenoc+eoc1Cjr9cI
szVtbjRLGWufWLmuUuatVJm6pf6s5+dVHalip1BZN1g/cPkwUwzCPuGuMch4
OJyCflCXdpRtq0nBkL/RkaKcG4eNwWzfZCGxxCUnSu35iL2WqmN9YJIyX3fr
yQNyIMCNT6fCqQDQ/cdk+YaVmOqPsfvQbuTohjvLvgVSgtayr8ckFSX0KMMa
iBnVEs3XQOphGqg5ej0328yYbV7W0j7ysuLiunioe2HOMfWYGeSG9eFpKSKu
xwY6DFbHf5FbCsWGM25LBeuFqB+pLEKtP/mUMYVNI7BDIutZPjnI/Fw2EcM/
rYUAlnX4sy268eexaWw7BI9B03NVQriwNIioQEonUFj7rjsf35y+GFYGraWX
SYT3h5QUZGme10hxCZJ/URLwoWDrH/gsv3bXSoPKg3XMunao570fPT1Vo5sA
FIx9vgDY5N45XF7zJ2vo97oVLA6/ywqIwat0CWjsZ1wXtmaJ7xWx8b9GPEbb
Rd5WtlUKhbAaaeIXDgcD0svqGJjGIot/mXlhJlLX16qaEw7OsOHAS2s7uRbp
1/Enaa3UcSckPgTbWm6D5qQ5trMeKZQsmi1obZvQHrx+YsPSnOPs1nBPdlUy
4JccSYXvNauyMn/K3MpKibA1aFCBtUwhHTjlPplW4JU4b1Co16zFItkpU7PD
0lDiW8ZpZdpDbWbIpXOiGBPYCVef1/HTSVeK0h5UPFAmg0gpmFoWWZWxA39e
/TCD/X8Wu2kJvKEfWaOLNe9HR939/X1n8jWDuv8Hmfw/JH921CJQhCmEVq71
rvXMp05GUcmLvsaZS3aM9BKV49ZrjCPpSaRv36q0zZyrFS+s0RvMr0ZjqHxH
h8R1e7YPSa68MHMjZ1DuHdcVrh0kdpeimn5YxCOdxoK1/cSk9rvZgJHdVqtR
KOneyoW9d+TW8zTkRJXC8R2yj8dUtm+LWfk7NHR29tloPEUvDONSXTO1te1S
uJxAM0x11kMrufhLIBaF1qvX2cI4UShj7e5SNftprcvM46Rvr9p6S7EG3ZTH
7MJuVaJyTF8+T46/TDqdzueH3qB7P501v1dm2NzWZ/fObzIrFEhYS0akhUrb
p/e3r7Q/or5NUxV2uu/WVniVVrNAZgq0QWdrB35t45bWrqOPjk9Om7UAcGKl
yCRUFyAKudeBoxb1errDlt0Iq2IVOuXRtIJLuOu7C9Bgt70AMUQZPSyvpOra
LEc8IhAS3SPvg+kLvqMe2Gi8X5TY2NpeDtV2a5SECCqK9pVbnvpCLHJOGCqo
5a5QcSw4WrGyMnAUd/+L96EkbpxSTrtokYqaHkQct2WXZTvZuNTHzVQm6zz3
HCu6OBFWB7q4ttYUTGjRJypf0eqYEjokrJGKsG4sJQvmLWlRyWNWratN++lS
7YrRwu0Wy3WbDtZs2l7fzzJ/ZVdt/s9s7oNZfRcLRBcRWeHTxXIcgy0hE8XL
57B6d8mwAe0HLDxdGV2CSKeEVTYSWfAw9Z5GgmiJw1hY32O2BmntJazKyjUN
elFdgSEqHdZNg//TCkGdKlSZQnhdKfQxKhjppOQP1H1cak6a4U+OEJ2peGcm
Cdx7LDrTTsvVHznFwFcJ3FhWHT7ZBsByLaOsmKFYbRHMVGdxqxZS16DIzEtd
TCSF17YVqYTUwEaVtbp9nZWWrL6VcDv3c8Deje7hi+EtywhOU4Q5SmX59dWt
lLiPPgLmq06qsvWbDLK/FNU1lPvo2DxbhharnURUHzGqwaaJm9yyKFlxFaoE
b82aE+yULHU+Ncu6hiWlVstNmf6PJWoox97nqp1UW7rTL+xsISLNaiviRqOm
PfHjFx+HLbsp8RPdtDvwtffASABZqmV4KqV/TviDX8oQ4lyeNf0RhobDwbEq
PidK0NPOLPN7HHY5HLX04n1RYMIqwijn99XvQs+P21HJvqSOkPqnel3xEki+
QJdCpfraTaB0KrRj3LmNn3zv2dXI6IgULqJqpLaft/ErPzfzaK+LNSFrYbYZ
aDccRTVqKdOJlxl5xuYCMCuJ8rk3FYnIKAV3U8JcCMod9S+pSEhgKLMUTYgC
rTpfCSLZNxW4iMCvfKqSMVnB8UoVFmCyglc20PSvEulidLNhdX67xNFISPqZ
CViC9lTeLPcBjLnIQV0SNyCpbVULh0axA/vQbxplReWEswAl4o6yavrJ+vDn
Saen237LevcHxXdKngAwMEL2t0m27HuqHajb0leyKpn0jGq3LFl7/OblEyOZ
l4uQXJEulmifqFUIIbt8D2WXYJ/SE9hkj1em3Qxb5tx9X5KdKguVlbcwrdVL
14Yyx0n9KYGU0bGwQchxK8YrvLt7YJfU1gDnw5c1rRreCmCHXXiPFf60pCR/
0m/0vYG58VLqiqWKli/Bvm3D42T4VLEIm12yMUXbzmdWkwonfVMiHTYy5qlx
ZzJjW9ZV4fcWe7ATbBEyc66kwvKTMf/gS2ilfFPqf15wIry8fGzlAnBkgMpY
ZbmHfbiU1QJ12mQcTUSwCmJRyTKK7BpVK5ZAxYt0Pl1nrUr86jCehSDOpiRp
2Vb+wcI/t+fxxbPJaffFx/P876fvVtfTtxfR2buzn7e2El3TRXTnVsmjN3Ea
XJ1mk2laaT3Kx6w2Hu0eY+PRg/1Rt9ffP+vvn3TOzta0TOah21omy1GbOpka
p8N2D8vmXqZruyXv4smQL/9Am2QLwKZbsmynasnKTRPhuL35oDj8cv7MT8cP
8nXqpVH/Gr7RBlMw3ZtGL66PDu/mB4edhZiX2zRzWJB/ng0F1YVTlON9e6TK
dX53y3UkH1G1ZqWunvbP3cxUTblVIeqUDZYDgOUsS5kJJ385qMXF+uj7lGE4
0mTTDDm1ruenbdlloCSFKP0WmRX+QJI6sfszS3Z7Ll3E5PIcyTiAH2erBalW
akPWL2xVfvWH9a+CuvsVnIA5FUVhNXnAnzOkRcag0PhI0lIzBqkpphHwR+b4
hZwumi+AKkCMoG5YToKt/H4TJf5GsuxQH55/xop+nE3JfNUY6hpxCV+Vp6+y
/xLk3AaYrD+coNpb2QtlBZlESVl4rzQou4QTkGfW8Z6nD+Je/aBMvoItfVGX
YQ9Wxem0Tw60yZQ/P56iHjbDaOSkBWKE9L0A+S6Vz1PZkx6E9eBT+mmrlioA
y9Ix/j6AHuI9iMxSoslxLatTUI6hfcB/lWpSSGnjijsUrta+6k5vuiUkQnBX
n0fe9eBmUCLTMnydElOdt0lKAa5a/YEi6iOsfk+AlCDLm4DCC0y/DHAwx/iq
Vc+jdMazzknnpKQ1uu1L/9qu+2c//WvjD+UjfuWPRaz++MO71erPHzvOU+dJ
+YN+fZQAteM8LoscBHdJ+gCa5JSTlxqNj/qHYaI7CT4/uZPdnICHkEmHNiAS
+TRLl4tc/drjkjRFKrmNxkvGDTevtuaXHZV15zY341/OHPvBXeO/AXplRuBP
eAAA

-->

</rfc>

