<?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.43 (Ruby 4.0.6) -->


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

]>


<rfc ipr="trust200902" docName="draft-ietf-acme-authority-token-jwtclaimcon-06" 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="September" day="07"/>

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

    <abstract>


<?line 45?>

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

<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. 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>The normative requirements of this document apply to implementers of ACME clients and ACME servers: the new-order identifier type (<xref target="identifier-encoding"/>), the challenge and Authority Token exchange, the Authority Token structure, and the server-side validation rules in <xref target="validating-token"/>. To an ACME client or server, the JWTClaimConstraints value carried in the identifier and in the token's "tkvalue" is an opaque octet string that is transported, compared octet-by-octet, and never parsed. The internal structure of that value, and the rules governing what a Token Authority may place in it, are a STIR ecosystem concern governed by <xref target="RFC8226"/> and <xref target="RFC9118"/>; that material appears in this document (for example, in <xref target="jcc-scope"/> and <xref target="appendix-examples"/>) as informative background for implementers of Token Authorities, and is not needed to implement the ACME client or ACME server role.</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="identifier-encoding"><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. DER (the canonical subset of BER) and unpadded base64url together uniquely determine the octet sequence for a given JWTClaimConstraints or EnhancedJWTClaimConstraints ASN.1 value. The same canonical encoding is used as the "tkvalue" string in the "atc" claim of the corresponding Authority Token, so that the value carried in the new-order identifier and the value carried in the token are octet-by-octet identical and can be compared as described in <xref target="validating-token"/>, step 5.</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 is expected to have been configured out of band with the location of the Token Authority. The "token-authority" parameter is advisory to the ACME client; the ACME server does not use it when validating the challenge response (<xref target="validating-token"/>), where trust in the token is established through the issuer certificate referenced by the token's "x5u" or "x5c" header parameter.</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"/>. This section defines the structure of the token (its data model); the rules an ACME server applies to validate it are specified in <xref target="validating-token"/>.</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="jcc-scope"><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. These extensions define a limited scope of the claims and claim values the client is authorized to assert in PASSporTs signed with the resulting certificate, using the following components:</t>

<t><list style="symbols">
  <t>mustInclude (context tag [0], <xref target="RFC8226"/>) is a list of claim names that MUST be present.</t>
  <t>permittedValues (context tag [1], <xref target="RFC8226"/>) is a list of claim names, each paired with the set of values that claim is permitted to take.</t>
  <t>mustExclude (context tag [2], <xref target="RFC9118"/>) is a list of claim names that MUST NOT be present. This component is only available in the EnhancedJWTClaimConstraints extension, so the enhanced form is needed only when the optional ("extended") claims must be constrained; otherwise the JWTClaimConstraints extension of <xref target="RFC8226"/> is sufficient.</t>
</list></t>

<t>The Token Authority validates the requested JWTClaimConstraints or EnhancedJWTClaimConstraints value against the resources the requesting party is authorized to represent (see Section 5.3) and places that value in the token. The ACME server then compares the token value to the new-order identifier value octet-by-octet (<xref target="validating-token"/>, step 5) and does not parse or interpret the ASN.1 content.</t>

<t>Informative examples are provided in <xref target="appendix-examples"/>.</t>

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

<t>The ACME new-order request can include multiple identifiers, each of which is authorized separately. With the introduction of this specification, for STIR certificates <xref target="RFC8226"/>, a certificate order can 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 can 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 <xref target="validating-token"/> requires only that the value in the token is octet-by-octet identical to 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). In particular, the ACME server does not parse or cross-check the JWTClaimConstraints and TNAuthList extensions for mutual consistency: if a requested JWTClaimConstraints value constrains a claim such as "orig" to telephone numbers that are inconsistent with the certificate's TNAuthList, no PASSporT can satisfy both constraints during verification (governed by <xref target="RFC8226"/> and <xref target="RFC9118"/>), so such a certificate fails verification for all calls. The ACME account holder that submits the CSR is responsible for recognizing this potential conflict and for requesting TNAuthList and JWTClaimConstraints extensions that are mutually compatible and correctly authorized; this places authority and accountability for the certificate's contents with the requesting party, which is a desirable security property. 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. A new-order request contains at most one JWTClaimConstraints identifier and at most one TNAuthList 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-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 STIR Authority Token validation steps, applicable to any STIR Authority Token profile and mirroring the TNAuthList validation defined in <xref target="RFC9448"/>. 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: The certificate referenced by the token's "x5u" or "x5c" header parameter MUST represent a Token Authority that the ACME server is configured to trust as an issuer of Authority Tokens for the ecosystem. <xref target="RFC9447"/> assumes a preexisting trust relationship between the CA and the Token Authority; the specific trust anchors, and any ecosystem-specific requirements on the Token Authority certificate, are established by the deploying ecosystem (for example, the STIR governance framework) and are out of scope for this document. If an "x5u" parameter is present, verify that it is an HTTPS URL referencing such a certificate. If an "x5c" parameter is present, verify that the certificate array contains such a certificate. If neither "x5u" nor "x5c" is present, or the referenced certificate is not one the ACME server trusts as an Authority Token issuer for the ecosystem, this step MUST fail.</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 value of the "atc" claim "tkvalue" is octet-by-octet identical to the "value" of the JWTClaimConstraints identifier in the original new-order request. Both values are the canonical encoding defined in <xref target="identifier-encoding"/>: the base64url encoding (without padding) of the DER encoding of a JWTClaimConstraints or EnhancedJWTClaimConstraints ASN.1 object. The ACME server MUST perform this verification as a direct octet-by-octet comparison of the two base64url strings, and MUST NOT decode, re-encode, canonicalize, normalize, or otherwise transform either value before comparison. If either value contains characters outside the base64url alphabet defined in Section 5 of <xref target="RFC4648"/>, contains padding characters ("="), or differs from the other in any octet, this step MUST fail. See <xref target="security_considerations"/> for discussion of identifier comparison considerations.</t>
  <t>Verify Claims: Verify that the "exp" claim is present and that the token has not expired relative to the ACME server's current time; the ACME server MAY allow for a small amount of clock skew according to local policy. Verify that the "jti" claim is present. If the "exp" claim is absent, the token has expired, or the "jti" claim is absent, this step MUST fail.</t>
  <t>Verify Account Control: Verify that the "atc" claim "fingerprint" is valid and matches the ACME account key (<xref target="RFC8555"/>) 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 ACME server MUST set the "status" in the challenge object to "invalid" and SHOULD include an "error" field containing a problem document (<xref target="RFC8555"/>, Section 6.7); the "urn:ietf:params:acme:error:unauthorized" error type is generally appropriate. The ACME client then handles the failed authorization as described in <xref target="RFC8555"/>.</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. The CA SHOULD ensure that this URL remains retrievable for as long as relying parties may need the certificate to validate signatures on JWS objects that reference it, typically at least until the certificate expires.</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. This token carries credentials that constrain the resources and claims a certificate holder can assert, so its disclosure to a bad actor could enable impersonation or misuse of the constrained resources. The token MUST be transported using the encrypted transport already required by this document, and implementations SHOULD follow the JWT best current practices in <xref target="RFC8725"/> and the security considerations of <xref target="RFC9447"/> for its creation, handling, and storage.</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 anchor="identifier-comparison-considerations"><name>Identifier Comparison Considerations</name>

<t>The "value" field of the JWTClaimConstraints identifier and the "tkvalue" string in the "atc" claim are opaque identifiers from the ACME server's perspective. <xref target="RFC6943"/> describes a class of vulnerabilities that arises when implementations apply ad hoc normalization, decoding, or "equivalence" judgments to identifier values during comparison: differences between what an implementation considers equivalent and what an attacker can produce can be turned into authorization bypasses. To eliminate this class of vulnerability for this profile, this document requires that both values be produced in a single canonical form (DER under unpadded base64url, as specified in <xref target="identifier-encoding"/>) and that the ACME server's comparison in <xref target="validating-token"/>, step 5, be a direct octet-by-octet comparison with no intervening transformation. Implementations MUST NOT be permissive about variations such as padded base64url, alternate base64url alphabets, BER encodings that are not also valid DER, embedded whitespace, or differences in canonical ordering inside ASN.1 SET constructs (DER fixes the ordering). Any deviation from the canonical form yields a different identifier value, and the validation step MUST fail.</t>

<t>Implementations SHOULD perform the octet-by-octet comparison in constant time. While the values compared in this profile are not themselves secret, constant-time comparison removes a class of timing side channels that have caused issues in other identifier-comparison contexts.</t>

</section>
</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="RFC6943">
  <front>
    <title>Issues in Identifier Comparison for Security Purposes</title>
    <author fullname="D. Thaler" initials="D." role="editor" surname="Thaler"/>
    <date month="May" year="2013"/>
    <abstract>
      <t>Identifiers such as hostnames, URIs, IP addresses, and email addresses are often used in security contexts to identify security principals and resources. In such contexts, an identifier presented via some protocol is often compared using some policy to make security decisions such as whether the security principal may access the resource, what level of authentication or encryption is required, etc. If the parties involved in a security decision use different algorithms to compare identifiers, then failure scenarios ranging from denial of service to elevation of privilege can result. This document provides a discussion of these issues that designers should consider when defining identifiers and protocols, and when constructing architectures that use multiple protocols.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6943"/>
  <seriesInfo name="DOI" value="10.17487/RFC6943"/>
</reference>



    </references>

</references>


<?line 450?>

<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 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 (53 bytes, hex):</t>

<figure><artwork><![CDATA[
30 33 a2 31 30 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[
MDOiMTAvFgZhdHRlc3QWBm9yaWdpZBYDZGl2FgNycGgWA3NwaBYDcmNkFgRyY2Rp
FgNjcm4
]]></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"'
          }
        }
      SEQUENCE {
        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 (108 bytes, hex):</t>

<figure><artwork><![CDATA[
30 6a a1 3f 30 3d 30 1c 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 30 1d 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 27 30 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[
MGqhPzA9MBwWA3JjZDAVDBMibmFtIjogIkphbWVzIEJvbmQiMB0WA2NybjAWDBQi
Rm9yIHlvdXIgZWFycyBvbmx5IqInMCUWBmF0dGVzdBYGb3JpZ2lkFgNkaXYWA3Jw
aBYDc3BoFgRyY2Rp
]]></artwork></figure>

</section>
<section anchor="extended-claims-constrained-to-specific-telephone-numbers"><name>Extended Claims Constrained to Specific Telephone Numbers</name>

<t>In this case, the requestor is authorized to assert a set of claims only for calls that originate from a specific set of telephone numbers. This is expressed by constraining the "orig" claim in permittedValues to those telephone numbers, alongside the other permitted claims. See Section 5.5 for why the CA does not need to cross-check this constraint against the certificate's TNAuthList.</t>

<figure><artwork><![CDATA[
SEQUENCE {
  permittedValues [1] {
    SEQUENCE {
      SEQUENCE {
        IA5String 'rcd'
        SEQUENCE {
          UTF8String '"nam": "James Bond"'
          }
        }
      SEQUENCE {
        IA5String 'crn'
        SEQUENCE {
          UTF8String '"For your ears only"'
          }
        }
      SEQUENCE {
        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 (149 bytes, hex):</t>

<figure><artwork><![CDATA[
30 81 92 a1 67 30 65 30 1c 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 30 1d 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 30 26 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 27 30 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[
MIGSoWcwZTAcFgNyY2QwFQwTIm5hbSI6ICJKYW1lcyBCb25kIjAdFgNjcm4wFgwU
IkZvciB5b3VyIGVhcnMgb25seSIwJhYEb3JpZzAeDA0iMTIwMjU1NTEwMDAiDA0i
MTIwMjU1NTEwMDEioicwJRYGYXR0ZXN0FgZvcmlnaWQWA2RpdhYDcnBoFgNzcGgW
BHJjZGk
]]></artwork></figure>

</section>
</section>


  </back>

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

-->

</rfc>

