<?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.39 (Ruby 3.2.3) -->


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

<!ENTITY RFC7515 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7515.xml">
<!ENTITY RFC3161 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3161.xml">
<!ENTITY RFC5280 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml">
<!ENTITY RFC6960 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6960.xml">
<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC3339 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3339.xml">
<!ENTITY RFC7518 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7518.xml">
]>


<rfc ipr="trust200902" docName="draft-miyachi-ltv-jws-00" category="info" submissionType="IETF">
  <front>
    <title abbrev="LTV-JWS">Long-Term Validation for JSON Web Signature (LTV-JWS)</title>

    <author initials="N." surname="Miyachi" fullname="Naoto Miyachi">
      <organization>LangEdge, Inc.</organization>
      <address>
        <email>miyachi@langedge.jp</email>
      </address>
    </author>

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

    
    
    

    <abstract>


<?line 14?>

<t>This specification extends JSON Web Signature (JWS, <xref target="RFC7515"/>) and defines LTV-JWS, a lightweight long-term signature format for Long-Term Validation (LTV).</t>

<t>LTV-JWS adds signature extension elements, timestamps <xref target="RFC3161"/>, validation information (certificates <xref target="RFC5280"/>, CRLs <xref target="RFC5280"/>, and OCSP responses <xref target="RFC6960"/>), and archive structures as minimal extensions, thereby enabling the validity of signatures to be verified over extended periods of time. In addition, archive timestamps enable continued validation even after the obsolescence or compromise of cryptographic algorithms.</t>

<t>LTV-JWS preserves the simple structure and concept of JWS while progressively adding timestamps and validation information. It also enables more general-purpose signing use cases through indirect signatures using external references (refs).</t>



    </abstract>



  </front>

  <middle>


<?line 22?>

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

<t>JSON Web Signatures (JWS) <xref target="RFC7515"/>, a JSON-based signature format, are widely used to ensure the authenticity of target data. When data and JWS objects are stored over long periods of time, issues arise such as the expiration of signing certificates and the obsolescence or compromise of cryptographic algorithms.</t>

<t>As an approach to Long-Term Validation (LTV), this specification defines four signature levels: the base signature level (SIG-B), the signature timestamp level (SIG-T), the long-term validation signature level containing validation information (SIG-LTV), and the long-term archive timestamp signature level (SIG-LTA). Furthermore, the continued addition of validation information and archive timestamps enables continued verification of signature validity, even after the obsolescence or compromise of cryptographic algorithms.</t>

<t>Long-Term Validation for JSON Web Signature (LTV-JWS) is a JWS extension specification that defines a long-term signature format based on JWS JSON Serialization and a long-term validation approach similar to XAdES (ISO 14533-2) for XML signatures.</t>

<t>In addition, this specification supports an indirect signing model using external references (refs), allowing multiple arbitrary files, including non-JSON data, to be used as indirect signature targets. This indirect signing mechanism enables JWS to be used as a more general-purpose signature.</t>

<t>LTV-JWS is designed for practical use over the Internet by enabling lightweight implementation and operation through the addition of only minimal structures and attributes to JWS.
In particular, signing inputs and hash inputs follow the JWS signing input model, in which BASE64URL-encoded elements are concatenated using the period "." character, thereby simplifying implementation and improving interoperability.</t>

<t>By using LTV-JWS, various types of JSON data and arbitrary data formats used on the Internet can be verified for authenticity over extended periods of time.</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>

<t><list style="symbols">
  <t><strong>LTV (Long-Term Validation)</strong>: a validation model that preserves the ability to verify the validity of a signature over extended periods of time by using timestamps, validation information, and renewable archive protection.</t>
  <t><strong>SIG-B (Signature Base level)</strong>: The base signature level of LTV-JWS consisting of a JWS containing a protected signing certificate hash.</t>
  <t><strong>SIG-T (Signature Timestamp level)</strong>: A signature level extending SIG-B by adding a signature timestamp used to provide trusted proof that the signature existed at a specific point in time.</t>
  <t><strong>SIG-LTV (Signature Long-Term Validation level)</strong>: A signature level extending SIG-T by adding all validation information required for long-term validation of the signature.</t>
  <t><strong>SIG-LTA (Signature Long-Term Archive timestamp level)</strong>: A signature level extending SIG-LTV by adding an archive timestamp used to preserve the entire validation state of the signature.</t>
  <t><strong>External Reference (refs)</strong>: An indirect signing model for external data using the "refs" array containing external references with hash values. Verification of this indirect signing model requires hash validation in addition to signature verification.</t>
  <t><strong>Chained Signing</strong>: A signing model in which one JWS includes another JWS as an external reference signing target, thereby constructing an ordered signature chain across multiple JWS objects.</t>
  <t><strong>Valid</strong>: A validation result indicating that the signature value, hash values, and applicable PKIX validation have successfully validated the signature.</t>
  <t><strong>Invalid</strong>: A validation result indicating that the signature has failed validation due to signature value mismatch, hash value mismatch, certificate revocation, or other validation failure.</t>
  <t><strong>Indeterminate</strong>: A validation result indicating that the available information required for PKIX validation, such as certificates, revocation information, trust anchors, timestamps, or other validation-related information, is insufficient to determine whether the signature is Valid or Invalid.</t>
</list></t>

</section>
<section anchor="overview"><name>Overview</name>

<section anchor="diagram"><name>Diagram</name>

<section anchor="ltv-diagram"><name>LTV Diagram</name>

<figure title="LTV-JWS Level Flow"><artwork type="ascii-art"><![CDATA[
  +---------------------------------------------+
  | SIG-B (Create Base Signature)               |
  | Signature Base level                        |
  +-------------------+-------------------------+
                      |
                      v
  +---------------------------------------------+
  | SIG-T (Add "signature timestamp")           |
  | Signature Timestamp level                   |
  +-------------------+-------------------------+
                      |
                      |    +------------------------------+
                      |    |                              |
                      v    v                              |
  +---------------------------------------------+         |
  | SIG-LTV (Add "validations")                 |         |
  | Signature Long-Term Validation level        |         |
  +---------------------+-----------------------+         |
                        |                                 | renew archive
                        v                                 |
  +---------------------------------------------+         |
  | SIG-LTA (Add "archive timestamp")           |         |
  | Signature Long-Term Archive Timestamp level |         |
  +---------------------+-----------------------+         |
                        |                                 |
                        +---------------------------------+
]]></artwork></figure>

</section>
<section anchor="external-reference-diagram"><name>External Reference Diagram</name>

<figure title="External Reference Model"><artwork type="ascii-art"><![CDATA[
  +---------------------------------------------------------+
  | signature:                                              |
  +---------------------------+-----------------------------+
                              |           +-----------------+
                              |           | protected:      |
                   (JWS sign) +---------->|   +---------+   |
                              |           |   | "ES256" |   | <= sign alg
                              |           |   +---------+   |
                              v           +-----------------+
  +---------------------------------------------------------+
  | payload:                                                |
  |      refs[0]          refs[1]          refs[2]      ... | <= refs array
  |  +-------------+  +-------------+  +-------------+      |
  |  | "data1.bin" |  | "file.json" |  | "data2.txt" |  ... | <= uri
  |  +-------------+  +-------------+  +-------------+      |
  |  |   "S256"    |  |   "S256"    |  |   "S256"    |  ... | <= hash alg
  |  +-------------+  +-------------+  +-------------+      |
  |  |   "hash1"   |  |   "hash2"   |  |   "hash3"   |  ... | <= hash value
  |  +------+------+  +------+------+  +------+------+      |
  +---------|----------------|----------------|-------------+
            | (hash1)        | (hash2)        | (hash3)
            v                v                v
     +-------------+  +-------------+  +-------------+
     |  data1.bin  |  |  file.json  |  |  data2.txt  |  ...
     +-------------+  +-------------+  +-------------+
]]></artwork></figure>

</section>
<section anchor="chained-signing-diagram"><name>Chained Signing Diagram</name>

<figure title="Chained Signing Model"><artwork type="ascii-art"><![CDATA[
  +---------------------+        +---------------------+        +-------+
  | JWS-A (LTV-JWS)     |    +-->| JWS-B (LTV-JWS)     |    +-->| JWS-C |
  | +-----------------+ |    |   | +-----------------+ |    |   |       |
  | | refs[n]         | |    |   | | refs[n]         | |    |   |       |
  | | +-------------+ | |    |   | | +-------------+ | |    |   +-------+
  | | | uri="JWS-B" +--------+   | | | uri="JWS-C" +--------+
  | | +-------------+ | | (hash) | | +-------------+ | | (hash)
  | | | type="jws"  | | |        | | | type="jws"  | | |
  | | +-------------+ | |        | | +-------------+ | |
  | +-----------------+ |        | +-----------------+ |
  +---------------------+        +---------------------+
]]></artwork></figure>

</section>
</section>
<section anchor="goals"><name>Goals</name>

<t>The goals of LTV-JWS are as follows:</t>

<t><list style="symbols">
  <t>To enable long-term validation of JWS signatures over extended periods of time.</t>
  <t>To preserve the simple structure and processing model of JWS while adding long-term validation capabilities.</t>
  <t>To enable lightweight implementation and interoperability by avoiding JSON canonicalization and by reusing the JWS signing input model.</t>
  <t>To support the continued verification of signatures even after certificate expiration or cryptographic algorithm obsolescence through timestamps, validation information, and archive timestamps.</t>
  <t>To support indirect signing of multiple arbitrary external files, including non-JSON data, through external references (refs).</t>
  <t>To allow validation information and archive timestamps to be incrementally added after signing without modifying the original signature value.</t>
  <t>To maintain compatibility with existing JOSE and JWS processing models as much as possible.</t>
  <t>To simplify future long-term validation by preserving validation-related information used during validation.</t>
</list></t>

</section>
<section anchor="design-principles"><name>Design Principles</name>

<t>LTV-JWS is designed based on the following principles:</t>

<t><list style="symbols">
  <t>Preserve the core structure and processing model of JWS as defined in <xref target="RFC7515"/>.</t>
  <t>Minimize additional structures and processing requirements in order to enable lightweight implementation and interoperability.</t>
  <t>LTV-JWS avoids JSON canonicalization by reusing deterministic BASE64URL-based JWS signing input and hash input construction models.</t>
  <t>Separate integrity-protected information from incrementally added long-term validation information by using protected and unprotected header structures appropriately.</t>
  <t>Enable incremental extension of validation information and archive timestamps after signing without modifying the original signature value.</t>
  <t>Support long-term preservation of signature validity through timestamps, validation information, and renewable archive protection.</t>
  <t>Support indirect signing of multiple arbitrary external files through external references (refs).</t>
  <t>Reuse existing JOSE and JWS algorithms, identifiers, and processing models as much as possible.</t>
  <t>Maintain compatibility with existing JWS JSON Serialization implementations whenever possible.</t>
  <t>Prioritize practical Internet deployment and operational simplicity over introducing complex processing models.</t>
</list></t>

</section>
<section anchor="relationship-to-jws"><name>Relationship to JWS</name>

<t>LTV-JWS is an extension specification for JSON Web Signature (JWS) defined in <xref target="RFC7515"/>.</t>

<t>The relationship between LTV-JWS and JWS is summarized as follows:</t>

<t><list style="symbols">
  <t>LTV-JWS preserves the basic JWS JSON Serialization structure consisting of protected headers, payloads, and signatures.</t>
  <t>LTV-JWS adds long-term validation capabilities through additional LTV-related objects.</t>
  <t>LTV-JWS reuses the existing JWS signing input model and JOSE algorithms without introducing new signature algorithms or new canonicalization mechanisms.</t>
  <t>Long-term validation information, timestamps, and archive structures are added incrementally through unprotected header extensions without modifying the original signature value.</t>
  <t>LTV-JWS extends the JWS payload usage model by supporting indirect signing of external data through external references (refs).</t>
  <t>Verification of indirect signatures requires both JWS signature validation and external reference hash validation.</t>
  <t>LTV-JWS is designed to maintain compatibility with existing JWS processing and implementations whenever possible.</t>
</list></t>

<t>BASE64 encoding is used for DER-encoded ASN.1 objects for compatibility with existing PKIX and <xref target="RFC7515"/> x5c processing models.</t>

<t>LTV-JWS uses both BASE64URL encoding and BASE64 encoding depending on the type of data being represented.</t>

<t>Values participating in JWS signing input construction, hash input construction, external reference hash processing, and hash-based identifiers use BASE64URL encoding consistent with <xref target="RFC7515"/> JWS processing and JOSE thumbprint conventions.</t>

<t>DER-encoded PKIX and CMS related binary objects, including certificates, CRLs, OCSP responses, and <xref target="RFC3161"/> TimeStampTokens, use BASE64 encoding consistent with the "x5c" header parameter defined in <xref target="RFC7515"/>.</t>

</section>
</section>
<section anchor="data-model"><name>Data Model</name>

<section anchor="jws-structure"><name>JWS Structure</name>

<t>LTV-JWS is based on the JWS JSON Serialization defined in <xref target="RFC7515"/> and consists of protected headers, unprotected headers, payloads, and signatures.</t>

<t>LTV-JWS stores long-term validation related information as "ltv" objects distributed across these structures.</t>

<t><list style="symbols">
  <t>The "ltv" object in the protected header contains integrity-protected information included in the JWS signature.</t>
  <t>The "ltv" object in the unprotected header contains timestamps, validation information, and archive information incrementally added after signing.</t>
  <t>The "ltv.refs" array in the payload contains external references used for indirect signing of external data.</t>
</list></t>

<t>This structure enables long-term validation information to be incrementally added without modifying the original signature value.</t>

<t>LTV-JWS supports both Flattened JWS JSON Serialization and General JWS JSON Serialization defined in <xref target="RFC7515"/>.</t>

<t>If the payload contains the "ltv.refs" array, all signatures associated with the same payload MUST be processed as LTV-JWS signatures.</t>

<t>In such cases, all corresponding protected headers MUST contain the "ltv" Header Parameter and MUST include "ltv" in the "crit" Header Parameter.</t>

<t>This requirement prevents inconsistent interpretation of external reference semantics among signatures sharing the same payload.</t>

</section>
<section anchor="protected-header"><name>Protected Header</name>

<t>In LTV-JWS, the protected header MUST contain the following elements:</t>

<t><list style="symbols">
  <t>"alg": the signature algorithm</t>
  <t>"crit": an array containing "ltv"</t>
  <t>"ltv": the LTV extension object</t>
</list></t>

<t>By including "ltv" in the "crit" parameter, implementations that do not understand this specification MUST reject the JWS.</t>

<t>The "ltv" object in the protected header is included in the JWS signature input and its integrity is protected.</t>

</section>
<section anchor="unprotected-header"><name>Unprotected Header</name>

<t>In LTV-JWS, validation information and timestamps added after signing are stored in the unprotected header.</t>

<t>The "ltv" object in the unprotected header is not included in the JWS signature input and therefore MUST NOT be trusted independently.</t>

<t>Such information is indirectly protected through timestamps or archive structures.</t>

</section>
<section anchor="payload"><name>Payload</name>

<t>The payload contains the signed target data.</t>

<t>LTV-JWS supports the following payload models:</t>

<t><list style="numbers" type="1">
  <t>Attached payload model:
The payload contains BASE64URL-encoded signed data.</t>
  <t>Indirect signing model:
The payload contains a JSON object including "ltv.refs" used for indirect signing of external data.</t>
</list></t>

<t>Detached payloads as defined in <xref target="RFC7515"/> are allowed but NOT RECOMMENDED for LTV-JWS, since long-term validation benefits from preserving payload or external reference information together with the signature.</t>

<t>If detached payloads are used, implementations and operational environments SHOULD ensure long-term availability and consistent preservation of the detached payload data associated with the signature.</t>

<t>Loss, modification, or ambiguity of detached payload data may result in failure of signature validation, timestamp validation, archive validation, or long-term validation.</t>

<t>If the payload contains the "ltv.refs" array, the payload itself still participates in JWS signature input construction.</t>

<t>Externally referenced data identified by "ltv.refs" is validated separately through external reference hash validation.</t>

</section>
<section anchor="signature"><name>Signature</name>

<t>The signature contains the JWS signature value generated using the protected header and payload according to <xref target="RFC7515"/>.</t>

<t>LTV-JWS does not define new signature algorithms and reuses existing JOSE signature algorithms.</t>

</section>
</section>
<section anchor="ltv-objects"><name>LTV Objects</name>

<section anchor="ltv-protected-header-object"><name>ltv Protected Header Object</name>

<t>The "ltv" object in the protected header contains integrity-protected information included in the JWS signature input. This object contains information bound to the original signature at signing time.</t>

<section anchor="signingtime-parameter"><name>"signingTime" Parameter</name>

<t>The "signingTime" parameter is OPTIONAL.</t>

<t>The "signingTime" parameter represents the local signing time asserted by the signer. The value of "signingTime" MUST be represented as an <xref target="RFC3339"/> date-time string.</t>

<t>The "signingTime" parameter is informational and does not by itself provide cryptographically protected proof of signing time. Trusted proof of signing time is generally established using timestamp structures described in this specification. However, under a policy that permits the use of trusted system time, the "signingTime" value MAY be used as trusted signing time.</t>

</section>
<section anchor="signingcerthash-object"><name>"signingCertHash" Object</name>

<t>The protected header "ltv" object MUST contain the "signingCertHash" object.</t>

<t>The "signingCertHash" object identifies the signing certificate associated with the JWS signature. This object binds the signature to a specific signing certificate by storing a hash value of the signing certificate.</t>

<t>The "signingCertHash" object MUST contain both "hashAlg" and "hashValue" parameters. The "signingCertHash" object contains the following parameters:</t>

<t><list style="symbols">
  <t>"hashAlg": the hash algorithm identifier</t>
  <t>"hashValue": the hash value of the signing certificate</t>
</list></t>

<t>The "signingCertHash" object is conceptually similar to the "x5t" and "x5t#S256" header parameters defined in <xref target="RFC7515"/>, but provides algorithm agility and mandatory certificate binding semantics for long-term validation.</t>

<t>Unlike standalone certificate thumbprint parameters, the "signingCertHash" object is part of the protected "ltv" object together with other signing-time related information such as "signingTime".</t>

<section anchor="hashalg-parameter"><name>"hashAlg" Parameter</name>

<t>The values "S256", "S384", and "S512" are shorthand identifiers for SHA-256, SHA-384, and SHA-512 respectively.</t>

<t>Additional hash algorithm identifiers MAY be defined by future specifications or IANA registrations.</t>

</section>
<section anchor="hashvalue-parameter"><name>"hashValue" Parameter</name>

<t>The "hashValue" parameter contains the BASE64URL-encoded hash value of the DER-encoded X.509 signing certificate <xref target="RFC5280"/> calculated using the hash algorithm specified by the "hashAlg" parameter.</t>

</section>
</section>
</section>
<section anchor="ltv-unprotected-header-object"><name>ltv Unprotected Header Object</name>

<section anchor="validations-object"><name>"validations" Object</name>

<t>The "validations" object contains all validation information required to validate the target certificate associated with the signature or timestamp.</t>

<t>The purpose of the "validations" object is to preserve validation-related information used during signature validation so that future validation can be performed using this object alone.</t>

<t>Implementations MUST preserve all validation-related information used during validation, even if such information is duplicated.</t>

<t>However, if a certificate does not contain a corresponding "validations" object, or if validation using the corresponding "validations" object is insufficient, implementations MAY use validation information contained in other "validations" objects. Whether insufficient validation information results in validation failure depends on the applicable validation policy.</t>

<t>The "validations" object contains the following parameters.</t>

<section anchor="certs-parameter"><name>"certs" Parameter</name>

<t>The "validations" object MUST contain the "certs" parameter.</t>

<t>The "certs" parameter contains an array of BASE64-encoded DER X.509 certificates <xref target="RFC5280"/> required to validate the target certificate.</t>

<t>The array MUST contain the target certificate (signing certificate or TSA certificate), certificates forming the certification path, and any additional certificates required for validation, such as certificates required for validation of OCSP responses or CRLs.</t>

</section>
<section anchor="crls-parameter"><name>"crls" Parameter</name>

<t>The "crls" parameter is OPTIONAL.</t>

<t>The "crls" parameter contains an array of BASE64-encoded DER CRLs required to validate the target certificate.</t>

<t>If CRLs are used during validation, implementations MUST preserve the corresponding CRLs in the "crls" parameter.</t>

</section>
<section anchor="ocsps-parameter"><name>"ocsps" Parameter</name>

<t>The "ocsps" parameter is OPTIONAL.</t>

<t>The "ocsps" parameter contains an array of BASE64-encoded DER OCSP responses required to validate the target certificate.</t>

<t>If OCSP responses are used during validation, implementations MUST preserve the corresponding OCSP responses in the "ocsps" parameter.</t>

</section>
</section>
<section anchor="signing-parameter"><name>"signing" Parameter</name>

<t>The value of the "signing" parameter is a BASE64URL-encoded JSON object containing validation information required to validate the signing certificate used for the JWS signature.</t>

<t>The "signing" parameter is used to preserve PKIX validation information for the signing certificate.</t>

<t>The decoded JSON object contained in the "signing" parameter contains a "validations" object.</t>

<t>The "validations" object contained in the "signing" parameter uses the same structure as the "validations"
object defined in "validations" Object.</t>

<t>The "signing" parameter is added to the "ltv" object in the unprotected header.</t>

<t>Because the "signing" parameter is stored in the unprotected header, it is not directly protected by the JWS signature.</t>

<t>However, it can later be protected by archive timestamps.</t>

<t>The outer JSON object of the "signing" parameter is BASE64URL-encoded because it participates in archive timestamp hash input construction.</t>

<t>This avoids ambiguity caused by JSON reserialization and enables deterministic reconstruction of archive timestamp hash inputs without requiring JSON canonicalization.</t>

<t>However, DER-encoded PKIX-related binary objects contained within the embedded "validations" object use BASE64 encoding.</t>

</section>
<section anchor="timestamp-parameter"><name>"timestamp" Parameter</name>

<t>The value of the "timestamp" parameter is a BASE64URL-encoded JSON object containing timestamp information used to prove the existence of signatures, validation information, or archive information at a specific point in time.</t>

<t>Timestamps are used to prove that target data existed prior to a specific point in time and to preserve signature validity during long-term validation.</t>

<t>The structure of the decoded JSON object contained in the "timestamp" parameter depends on the value of the "type" parameter.</t>

<section anchor="type-parameter"><name>"type" Parameter</name>

<t>The "type" parameter is OPTIONAL.</t>

<t>The "type" parameter identifies the format of the timestamp information.</t>

<t>The default value of "type" is "rfc3161".</t>

<t>This specification defines the following timestamp type identifier:</t>

<t><list style="symbols">
  <t>"rfc3161": <xref target="RFC3161"/> TimeStampToken</t>
</list></t>

<t>Additional timestamp type identifiers MAY be defined by future specifications or IANA registrations.</t>

</section>
<section anchor="tst-parameter"><name>"tst" Parameter</name>

<t>The "tst" parameter is OPTIONAL.</t>

<t>If "type" is "rfc3161", the decoded JSON object contained in the "timestamp" parameter MUST contain the "tst" parameter.</t>

<t>The "tst" parameter contains a BASE64-encoded <xref target="RFC3161"/> TimeStampToken.</t>

</section>
<section anchor="validations-object-1"><name>"validations" Object</name>

<t>The "validations" object within the decoded JSON object contained in the "timestamp" parameter contains validation information required to validate the TSA certificate associated with the timestamp.</t>

<t>The "validations" object uses the same structure defined in the "validations" object described above.</t>

</section>
</section>
<section anchor="archive-object"><name>"archive" Object</name>

<t>The "archive" object contains archive timestamp information and renewed hash information used for long-term preservation.</t>

<t>The "archive" object is used to protect the entire validation state required for long-term validation and to enable the continuation and extension of signature validity even after cryptographic algorithm obsolescence or compromise.</t>

<section anchor="timestamp-parameter-1"><name>"timestamp" Parameter</name>

<t>The value of the "timestamp" parameter is a BASE64URL-encoded JSON object containing archive timestamp information associated with the "archive" object.</t>

<t>Archive timestamps are used to protect the entire set of signatures, timestamps, and validation information accumulated up to that point.</t>

<t>If a "rehashes" object exists within the same "archive" object, the "rehashes" object is protected by the corresponding archive timestamp.</t>

<t>The "timestamp" parameter uses the same structure as the "timestamp" parameter defined in the "ltv Unprotected Header Object".</t>

<t>The exact archive timestamp hash input construction is described in the "Archive Timestamp Input Construction" section.</t>

</section>
<section anchor="rehashes-parameter-refs-renew-hashes"><name>"rehashes" Parameter (refs renew hashes)</name>

<t>The value of the "rehashes" parameter is a BASE64URL-encoded JSON object containing renewed hash information for external references ("refs").</t>

<t>The purpose of the "rehashes" parameter is to enable continued verification of externally referenced data after cryptographic algorithm updates.</t>

<t>The decoded JSON object contained in the "rehashes" parameter contains an "ltv" object with a "refs" array.</t>

<t>The "ltv.refs" array within the decoded JSON object contained in the "rehashes" parameter MUST preserve the same external references and the same ordering as the payload "ltv.refs" array.</t>

<t>Each element in the "ltv.refs" array MUST modify only the hash-renewal-related "hashAlg" and "hashValue" parameters.</t>

<t>All other parameters MUST match the corresponding element in the payload "ltv.refs" array.</t>

<t>The "ltv.refs" array within the decoded JSON object contained in the "rehashes" parameter MUST NOT add, remove, reorder, or modify elements other than the "hashAlg" and "hashValue" parameters.</t>

</section>
<section anchor="archive-recursive-object"><name>"archive" (recursive Object)</name>

<t>The "archive" object MAY recursively contain the next generation of "archive" objects.</t>

<t>Recursive "archive" objects are used to preserve additional archive timestamps and renewed hash information and to continuously extend signature validity.</t>

</section>
</section>
</section>
<section anchor="ltv-payload-object"><name>ltv Payload Object</name>

<t>The payload "ltv" object is OPTIONAL.</t>

<t>If the "ltv" object exists, it contains external reference information used for indirect signing of external data.</t>

<section anchor="refs-array"><name>"refs" Array</name>

<t>The "refs" array contains external references used for indirect signing of external data.</t>

<t>Each element in the "refs" array represents one external reference object.</t>

<t>The order of elements in the "refs" array MUST be preserved during signature generation and validation.</t>

<section anchor="uri-parameter"><name>"uri" Parameter</name>

<t>The "uri" parameter is REQUIRED.</t>

<t>The "uri" parameter contains the URI identifying the externally referenced data.</t>

<t>The referenced external data MUST be hashed using the algorithm specified by the corresponding "hashAlg" parameter, and the resulting hash value MUST match the corresponding "hashValue" parameter.</t>

<t>The URI format is application-specific.</t>

</section>
<section anchor="hashalg-parameter-1"><name>"hashAlg" Parameter</name>

<t>The "hashAlg" parameter is REQUIRED.</t>

<t>The "hashAlg" parameter contains the hash algorithm identifier used to calculate the hash value of the externally referenced data.</t>

<t>The "hashAlg" parameter uses the same identifier system as the "hashAlg" parameter in the "signingCertHash" object defined in the "ltv Protected Header Object".</t>

</section>
<section anchor="hashvalue-parameter-1"><name>"hashValue" Parameter</name>

<t>The "hashValue" parameter is REQUIRED.</t>

<t>The "hashValue" parameter contains the BASE64URL-encoded hash value calculated for the externally referenced data.</t>

<t>The "hashValue" parameter uses the same format as the "hashValue" parameter in the "signingCertHash" object defined in the "ltv Protected Header Object".</t>

<t>The hash input used to calculate the "hashValue" parameter depends on the value of the corresponding "type" parameter.</t>

</section>
<section anchor="type-parameter-1"><name>"type" Parameter</name>

<t>The "type" parameter is OPTIONAL.</t>

<t>The "type" parameter identifies the type of externally referenced data or the signing method.</t>

<t>The default value is "raw".</t>

<t>This specification defines the following "type" identifiers.</t>

<t><list style="symbols">
  <t>"raw" (default):
The entire binary data of the externally referenced data is used directly as the hash target.</t>
  <t>"jws":
Indicates that the externally referenced data is another JWS object.  <vspace blankLines='1'/>
If "type=jws", only the "protected", "payload", and "signature" of the externally referenced JWS are used as the hash target, and the exact hash input construction method is defined in the "External Reference Hash Input Construction" section.  <vspace blankLines='1'/>
This enables chained signing in which one JWS includes another JWS as a signing target.  <vspace blankLines='1'/>
Chained signing can be used for constructing ordered signature chains of multiple JWS objects, additional signatures, or multi-stage signing processes.</t>
</list></t>

</section>
</section>
</section>
</section>
<section anchor="creation-processing"><name>Creation Processing</name>

<section anchor="signature-input-and-timestamp-hash-inputs"><name>Signature Input and Timestamp Hash Inputs</name>

<t>LTV-JWS constructs signature inputs and timestamp hash inputs by concatenating BASE64URL-encoded values using the "." character.</t>

<t>The following simplified LTV-JWS structure illustrates how signature inputs and timestamp hash inputs are constructed across each signature level.</t>

<t>The values "AAAAAA" and similar values represent BASE64URL-encoded element values.</t>

<figure title="Simplified LTV-JWS Structure"><sourcecode type="json"><![CDATA[
{
  "payload": "AAAAAA",
  "protected": "BBBBBB",
  "signature": "CCCCCC",
  "header":
  {
    "ltv":
    {
      "timestamp": "DDDDDD",
      "signing": "EEEEEE",
      "archive":
      {
        "timestamp": "FFFFFF",
        "archive":
        {
          "rehashes": "GGGGGG",
          "timestamp": "HHHHHH"
        }
      }
    }
  }
}
]]></sourcecode></figure>

<t>Where:</t>

<t><list style="symbols">
  <t>"DDDDDD" is the signature timestamp with validations</t>
  <t>"EEEEEE" contains validations for the signing certificate</t>
  <t>"FFFFFF" is the 1st archive timestamp with validations</t>
  <t>"GGGGGG" contains renewal hashes for refs</t>
  <t>"HHHHHH" is the 2nd archive timestamp (with validations)</t>
</list></t>

<t>The following table shows the corresponding signature and timestamp hash inputs.</t>

<texttable title="Signature Input and Timestamp Hash Input Construction">
      <ttcol align='left'>Signature Level</ttcol>
      <ttcol align='left'>Processing</ttcol>
      <ttcol align='left'>Input Construction</ttcol>
      <c>SIG-B</c>
      <c>Signature (JWS)</c>
      <c>Signature over <spanx style="verb">"BBBBBB.AAAAAA"</spanx></c>
      <c>SIG-T</c>
      <c>Signature Timestamp</c>
      <c>Hash of <spanx style="verb">"BBBBBB.AAAAAA.CCCCCC"</spanx></c>
      <c>SIG-LTA (1st)</c>
      <c>1st Archive Timestamp</c>
      <c>Hash of <spanx style="verb">"BBBBBB.AAAAAA.CCCCCC.DDDDDD.EEEEEE"</spanx></c>
      <c>SIG-LTA (2nd)</c>
      <c>2nd Archive Timestamp</c>
      <c>Hash of <spanx style="verb">"BBBBBB.AAAAAA.CCCCCC.DDDDDD.EEEEEE.FFFFFF.GGGGGG"</spanx></c>
</texttable>

<t>For timestamp generation, the resulting concatenated string is hashed
and used as the <xref target="RFC3161"/> messageImprint value.</t>

<t>The strings above represent the exact concatenated BASE64URL-encoded values used as signature input or timestamp hash inputs.</t>

</section>
<section anchor="sig-b-signature-base-level-creation-processing"><name>SIG-B (Signature Base level) Creation Processing</name>

<t>SIG-B is the initial signature level of LTV-JWS and represents the signature-only extension level of JWS.</t>

<t>SIG-B binds signed target data and the signing certificate using a JWS signature and a signing certificate hash.</t>

<t>SIG-B can be used both as a normal JWS signature and as an indirect signing model using external references ("refs").</t>

<t>External references are OPTIONAL. If no external references exist, SIG-B is processed as a normal JWS signature.</t>

<section anchor="payload-external-references-ltvrefs-creation"><name>Payload External References (ltv.refs) Creation</name>

<t>When external references are used, hash values for each "refs" element MUST be generated.</t>

<t>The generated hash value is stored in the corresponding "hashValue" parameter.</t>

<t>The hash input construction method depends on the value of the corresponding "type" parameter.</t>

<section anchor="typeraw-default"><name>type=raw (default)</name>

<t>If "type=raw", the entire binary data of the externally referenced data is used directly as the hash input.</t>

<t>The hash value MUST be calculated using the algorithm specified by the corresponding "hashAlg" parameter.</t>

</section>
<section anchor="typejws-chained-signing"><name>type=jws (Chained Signing)</name>

<t>If "type=jws", the "protected", "payload", and "signature" of the externally referenced JWS are used as the hash input.</t>

<t>The hash input MUST be constructed by concatenating BASE64URL-encoded elements in the following order using the period "." character.</t>

<figure title="Chained Signing Hash Input Construction"><sourcecode type="text"><![CDATA[
BASE64URL(protected) || "." ||
BASE64URL(payload) || "." ||
BASE64URL(signature)
]]></sourcecode></figure>

<t>This hash input construction method uses the same concept as the JWS Signing Input construction model defined in <xref target="RFC7515"/>.</t>

<t>The hash value MUST be calculated using the algorithm specified by the corresponding "hashAlg" parameter.</t>

</section>
</section>
<section anchor="protected-header-ltv-object-creation"><name>Protected Header ltv Object Creation</name>

<t>The protected header "ltv" object contains integrity-protected signing-related information associated with the JWS signature.</t>

<t>The protected header "ltv" object MUST contain the "signingCertHash" object.</t>

<t>The "signingCertHash" object binds the JWS signature to the corresponding signing certificate by storing a hash value of the signing certificate.</t>

<t>Implementations MAY optionally add the "signingTime" parameter as the signing time asserted by the signer.</t>

<t>The protected header "ltv" object is included in the JWS signature input and therefore its integrity is protected by the JWS signature.</t>

</section>
<section anchor="signature-creation"><name>Signature Creation</name>

<t>The signature input of LTV-JWS MUST be constructed using the same method as the JWS Signing Input defined in <xref target="RFC7515"/>.</t>

<t>The signature input is constructed by concatenating BASE64URL-encoded elements in the following order using the period "." character.</t>

<figure title="JWS Signature (SIG-B) Input Construction"><sourcecode type="text"><![CDATA[
BASE64URL(protected) || "." ||
BASE64URL(payload)
]]></sourcecode></figure>

<t>During signature generation, implementations MUST use the JWS JSON Serialization signature generation process defined in <xref target="RFC7515"/>.</t>

<t>The protected header "ltv" object MUST contain at least the "signingCertHash" object.</t>

<t>If the payload contains the "ltv.refs" array, all external reference hash values MUST be generated before signature generation.</t>

<t>The generated signature value is stored in the "signature" element.</t>

<t>Implementations SHOULD preserve the signing certificate when constructing SIG-B objects in order to simplify future validation processing and support offline validation and long-term preservation.</t>

<t>The signing certificate or certificate chain MAY be preserved within the optional "header.ltv.signing" parameter or by using the existing JWS "x5c" header parameter defined in <xref target="RFC7515"/>.</t>

<t>When used in SIG-B, the optional "header.ltv.signing" parameter MAY contain only the signing certificate or certificate chain without additional revocation information such as CRLs or OCSP responses.</t>

<t>If the "x5c" parameter is used, it MAY be included in either the protected or unprotected header according to <xref target="RFC7515"/>.</t>

<t>The "header.ltv.signing" parameter is stored in the unprotected header and therefore is not directly protected by the JWS signature. However, it can later be protected by archive timestamps.</t>

</section>
</section>
<section anchor="sig-t-signature-timestamp-level-creation-processing"><name>SIG-T (Signature Timestamp level) Creation Processing</name>

<t>SIG-T is the signature level that adds a signature timestamp to SIG-B.</t>

<t>SIG-T provides trusted proof that the signature existed prior to a specific point in time.</t>

<t>SIG-T is used to prove that the signature existed before expiration or revocation of the signing certificate.</t>

<t>The SIG-T signature timestamp is generated over a hash input constructed from the JWS "protected", "payload", and "signature".</t>

<section anchor="signature-timestamp-embedding"><name>Signature Timestamp Embedding</name>

<t>The hash input for the signature timestamp MUST be constructed using the JWS "protected", "payload", and "signature".</t>

<t>The hash input is constructed by concatenating BASE64URL-encoded elements in the following order using the period "." character.</t>

<figure title="Signature Timestamp Input Construction"><sourcecode type="text"><![CDATA[
BASE64URL(protected) || "." ||
BASE64URL(payload) || "." ||
BASE64URL(signature)
]]></sourcecode></figure>

<t>This hash input construction method extends the JWS Signing Input construction model defined in <xref target="RFC7515"/> by additionally including the signature value.</t>

<t>During signature timestamp generation, implementations MUST generate the timestamp request using the hash input defined in the "Signature Timestamp Input Construction" section.</t>

<t>If <xref target="RFC3161"/> timestamps are used, the messageImprint of the timestamp request MUST use the hash value calculated from the signature timestamp hash input.</t>

<t>The generated <xref target="RFC3161"/> TimeStampToken is stored in the "tst" parameter within the decoded JSON object contained in "ltv.timestamp" in the unprotected header.</t>

<t>If the "type" parameter of the timestamp is omitted, the default value is treated as "rfc3161".</t>

</section>
</section>
<section anchor="sig-ltv-signature-long-term-validation-level-creation-processing"><name>SIG-LTV (Signature Long-Term Validation level) Creation Processing</name>

<t>SIG-LTV is the signature level that validates SIG-T or SIG-LTA and adds validation information.</t>

<t>SIG-LTV MAY be constructed after validation of SIG-T or SIG-LTA.</t>

<t>SIG-LTV preserves validation information used for validation of signing certificates and all timestamp TSA certificates in order to enable Long-Term Validation of signatures in the future without depending on external validation services or network access.</t>

<section anchor="from-sig-t-validation-information-embedding"><name>from SIG-T Validation Information Embedding</name>

<t>When constructing SIG-LTV from SIG-T, implementations MUST preserve the validation information actually used during SIG-T validation.</t>

<t>The preserved validation information MUST include:</t>

<t><list style="symbols">
  <t>Certificates, CRLs, and OCSP responses used for PKIX validation of the signing certificate</t>
  <t>Certificates, CRLs, and OCSP responses used for PKIX validation of the signature timestamp TSA certificate</t>
</list></t>

<t>Validation information related to the signing certificate MUST be stored as a BASE64URL-encoded "validations" object in the "ltv.signing" parameter of the unprotected header.</t>

<t>Validation information related to the signature timestamp TSA certificate MUST be stored in the "validations" object within the decoded JSON object contained in the corresponding signature "timestamp" parameter.</t>

</section>
<section anchor="from-sig-lta-validation-information-embedding"><name>from SIG-LTA Validation Information Embedding</name>

<t>When constructing SIG-LTV from SIG-LTA, implementations MUST preserve the validation information actually used during SIG-LTA validation.</t>

<t>The preserved validation information MUST include:</t>

<t><list style="symbols">
  <t>Certificates, CRLs, and OCSP responses used for PKIX validation of the latest archive timestamp TSA certificate</t>
</list></t>

<t>Validation information related to the latest archive timestamp TSA certificate MUST be stored in the "validations" object within the decoded JSON object contained in the corresponding archive "timestamp" parameter.</t>

</section>
</section>
<section anchor="sig-lta-signature-long-term-archive-timestamp-level-creation-processing"><name>SIG-LTA (Signature Long-Term Archive Timestamp level) Creation Processing</name>

<t>SIG-LTA is the signature level that adds an archive timestamp to SIG-LTV.</t>

<t>When SIG-LTA is generated for the first time, the first "archive" object is added as <spanx style="verb">header.ltv.archive</spanx>.</t>

<t>If an "archive" object already exists, long-term validity is continuously preserved by recursively adding the next "archive" object within the existing "archive" object.</t>

<t>A newly added "archive" object MAY contain "rehashes", which stores renewed hash values for external references ("refs").</t>

<t>A newly added "archive" object also contains an archive timestamp "timestamp" parameter used to protect information contained within the existing archive structure.</t>

<section anchor="archive-timestamp-embedding"><name>Archive Timestamp Embedding</name>

<t>The hash input for archive timestamps consists of BASE64URL-encoded elements concatenated using the "." character.</t>

<t>The archive timestamp hash input is generated using the following procedure.</t>

<t><list style="numbers" type="1">
  <t>Initialize the archive timestamp hash input as an empty string.</t>
  <t>Append the value of JWS <spanx style="verb">protected</spanx>.</t>
  <t>Append the value of <spanx style="verb">payload</spanx> prefixed with ".".</t>
  <t>Append the value of JWS <spanx style="verb">signature</spanx> prefixed with ".".</t>
  <t>Append the value of <spanx style="verb">header.ltv.timestamp</spanx> prefixed with ".".</t>
  <t>Append the value of <spanx style="verb">header.ltv.signing</spanx> prefixed with ".".</t>
  <t>If an <spanx style="verb">archive</spanx> object exists, process the contained elements.</t>
  <t>If <spanx style="verb">rehashes</spanx> exists within the <spanx style="verb">archive</spanx> object,
append its value prefixed with ".".</t>
  <t>If <spanx style="verb">timestamp</spanx> exists within the <spanx style="verb">archive</spanx> object, append its value prefixed with ".".</t>
  <t>If the next <spanx style="verb">archive</spanx> object exists within the current <spanx style="verb">archive</spanx> object, process the next <spanx style="verb">archive</spanx> object recursively and repeat from step 8.</t>
  <t>Finally, calculate the hash value of the resulting hash input and use the calculated hash value as the <spanx style="verb">messageImprint</spanx> of the <xref target="RFC3161"/> timestamp request for the target archive timestamp.</t>
</list></t>

<t>For example, the hash input for a first-generation archive timestamp is as follows.</t>

<figure title="First-Generation Archive Timestamp Input"><sourcecode type="text"><![CDATA[
BASE64URL(protected) || "." ||
BASE64URL(payload) || "." ||
BASE64URL(signature) || "." ||
BASE64URL(header.ltv.timestamp) || "." ||
BASE64URL(header.ltv.signing)
]]></sourcecode></figure>

<t>For example, the hash input for a second-generation archive timestamp is as follows.</t>

<figure title="Second-Generation Archive Timestamp Input"><sourcecode type="text"><![CDATA[
BASE64URL(protected) || "." ||
BASE64URL(payload) || "." ||
BASE64URL(signature) || "." ||
BASE64URL(header.ltv.timestamp) || "." ||
BASE64URL(header.ltv.signing) || "." ||
BASE64URL(header.ltv.archive.timestamp)
]]></sourcecode></figure>

<t>An archive timestamp is generated by creating an <xref target="RFC3161"/> timestamp over the archive timestamp hash input.</t>

<t>The generated timestamp is stored as the corresponding archive timestamp.</t>

</section>
<section anchor="external-reference-hash-renewal-archiverehashes-embedding"><name>External Reference Hash Renewal (archive.rehashes) Embedding</name>

<t>"rehashes" is OPTIONAL and stores renewed hash values for external references ("refs").</t>

<t>If the hash algorithm used for externally referenced data becomes obsolete or cryptographically weak, newly calculated hash values using a new hash algorithm are added as "rehashes".</t>

<t>If "rehashes" is used, it MUST be added within the same "archive" object before generating the corresponding archive timestamp.</t>

<t>For example, the hash input for a second-generation archive timestamp using "rehashes" is as follows.</t>

<figure title="Second-Generation Archive Timestamp Input (rehashes included)"><sourcecode type="text"><![CDATA[
BASE64URL(protected) || "." ||
BASE64URL(payload) || "." ||
BASE64URL(signature) || "." ||
BASE64URL(header.ltv.timestamp) || "." ||
BASE64URL(header.ltv.signing) || "." ||
BASE64URL(header.ltv.archive.timestamp) || "." ||
BASE64URL(header.ltv.archive.archive.rehashes)
]]></sourcecode></figure>

</section>
<section anchor="next-generation-archive-extension"><name>Next-Generation Archive Extension</name>

<t>To continuously preserve the long-term validity of signatures, the next "archive" object is added within the existing "archive" object.</t>

<t>If necessary, new "rehashes" are added and a new archive timestamp is generated, thereby enabling continuous extension of long-term validity.</t>

</section>
</section>
</section>
<section anchor="validation-processing"><name>Validation Processing</name>

<section anchor="validation-reference-time"><name>Validation Reference Time</name>

<t>LTV-JWS validation uses the validation reference time shown in the following table.</t>

<texttable title="Validation Reference Time">
      <ttcol align='left'>Signature Level</ttcol>
      <ttcol align='left'>Validation Reference Time</ttcol>
      <c>SIG-B</c>
      <c>Signature Timestamp, if present</c>
      <c>SIG-T / SIG-LTV / SIG-LTA</c>
      <c>nearest protecting Archive Timestamp, if present</c>
</texttable>

<t>If no corresponding timestamp exists, the current time is used as the validation reference time.</t>

<t>If SIG-B does not contain a valid Signature Timestamp and the applicable validation policy permits use of signingTime, signingTime MAY be used as the validation reference time.</t>

<t>The determination of validation reference time and validation results depends on the applicable validation policy.</t>

</section>
<section anchor="sig-b-validation-processing"><name>SIG-B Validation Processing</name>

<t>SIG-B is the base validation level that validates the JWS signature and the signing certificate.</t>

<t>SIG-B validation performs JWS signature verification, PKIX validation of the signing certificate, and external reference ("refs") hash validation.</t>

<t>The validation result of SIG-B is determined as Valid, Invalid, or Indeterminate.</t>

<section anchor="signature-verification"><name>Signature Verification</name>

<t>Implementations MUST perform JWS signature verification using the JWS Signature Input construction defined in <xref target="RFC7515"/>.</t>

<t>Implementations MUST verify the signature value using the signature algorithm specified by the JWS "alg" parameter.</t>

<t>If signature verification fails, the validation result MUST be treated as Invalid.</t>

</section>
<section anchor="signing-certificate-validation"><name>Signing Certificate Validation</name>

<t>During signing certificate validation, implementations MUST verify that the signing certificate hash value contained in "ltv.signingCertHash" matches the signing certificate.</t>

<t>Implementations MUST perform PKIX validation of the signing certificate according to the applicable validation policy.</t>

<t>During SIG-B signing certificate validation, implementations MUST validate the certificate validity period, revocation status, and certificate chain using the Validation Reference Time.</t>

<t>If required validation information is unavailable, the validation result MAY be treated as Indeterminate.</t>

</section>
<section anchor="external-reference-verification"><name>External Reference Verification</name>

<t>If the payload contains "ltv.refs", implementations MUST perform hash validation for all external references.</t>

<t>For each external reference, implementations MUST calculate the hash value using the corresponding "hashAlg" and verify that it matches the corresponding "hashValue".</t>

<t>If "type=raw", the entire binary data of the externally referenced data is used as the hash input.</t>

<t>If "type=jws", implementations MUST reconstruct the external reference hash input according to the chained signing hash input construction rules defined in the "Payload External References (ltv.refs) Creation" section.</t>

<t>Implementations MUST verify that the calculated hash value matches the corresponding "hashValue" parameter.</t>

<t>If external reference hash validation fails, the validation result MUST be treated as Invalid.</t>

</section>
</section>
<section anchor="sig-t-validation-processing"><name>SIG-T Validation Processing</name>

<t>During SIG-T validation, implementations MUST also validate SIG-B.</t>

<section anchor="signature-timestamp-verification"><name>Signature Timestamp Verification</name>

<t>During signature timestamp verification, implementations MUST reconstruct the signature timestamp hash input according to the signature timestamp input construction rules defined in the "Signature Timestamp Embedding" section.</t>

<t>Implementations MUST verify that the reconstructed hash input matches the messageImprint contained in the <xref target="RFC3161"/> TimeStampToken.</t>

<t>Implementations MUST verify the signature value of the <xref target="RFC3161"/> TimeStampToken.</t>

<t>If the messageImprint does not match or TimeStampToken signature verification fails, the validation result MUST be treated as Invalid.</t>

</section>
<section anchor="signature-timestamp-tsa-certificate-validation"><name>Signature Timestamp TSA Certificate Validation</name>

<t>Implementations MUST perform PKIX validation of the TSA certificate associated with the signature timestamp.</t>

<t>During TSA certificate validation, implementations MUST validate the certificate validity period, revocation status, and certificate chain using the Validation Reference Time.</t>

<t>If SIG-LTV or SIG-LTA exists, implementations MAY perform offline validation using validation information contained in the "validations" object within the decoded JSON object contained in the corresponding "timestamp" parameter.</t>

<t>If required validation information is unavailable, the validation result MAY be treated as Indeterminate.</t>

</section>
</section>
<section anchor="sig-ltv-validation-processing"><name>SIG-LTV Validation Processing</name>

<t>SIG-LTV validation MUST enable offline validation of SIG-B, SIG-T, and all existing SIG-LTA levels.</t>

<section anchor="signing-and-all-tsa-certificate-validation"><name>Signing and All TSA Certificate Validation</name>

<t>SIG-LTV validation performs PKIX validation of the signing certificate and all TSA certificates associated with signature timestamps and archive timestamps.</t>

<t>Implementations SHOULD use validation information preserved in "ltv.signing" and the "validations" objects within all corresponding decoded JSON objects contained in "timestamp" parameters.</t>

<t>During validation of each certificate, implementations MUST validate the certificate validity period, revocation status, and certificate chain using the applicable Validation Reference Time.</t>

<t>Validation information preserved in SIG-LTV MAY include certificates, CRLs, OCSP responses, and other validation-related information required for offline validation. This may include certificates required for validation of OCSP responses or CRLs.</t>

<t>If the required validation information is insufficient to complete validation, the validation result MAY be treated as Indeterminate.</t>

<t>If any signing certificate or TSA certificate validation fails, the validation result MUST be treated as Invalid.</t>

</section>
</section>
<section anchor="sig-lta-validation-processing"><name>SIG-LTA Validation Processing</name>

<t>During SIG-LTA validation, implementations MUST validate SIG-B, SIG-T, and all existing SIG-LTA levels.</t>

<section anchor="archive-timestamp-verification"><name>Archive Timestamp Verification</name>

<t>During archive timestamp verification, implementations MUST reconstruct the corresponding archive timestamp hash input according to the archive timestamp input construction rules defined in the "Archive Timestamp Embedding" section.</t>

<t>Implementations MUST verify that the reconstructed hash input matches the messageImprint contained in the <xref target="RFC3161"/> TimeStampToken.</t>

<t>This includes reconstruction of recursive "archive" structures and any applicable "rehashes" elements.</t>

<t>Implementations MUST verify the signature value of the <xref target="RFC3161"/> TimeStampToken.</t>

<t>If the messageImprint does not match or TimeStampToken signature verification fails, the validation result MUST be treated as Invalid.</t>

</section>
<section anchor="archive-timestamp-tsa-certificate-validation"><name>Archive Timestamp TSA Certificate Validation</name>

<t>Implementations MUST perform PKIX validation of the TSA certificate associated with the archive timestamp.</t>

<t>During TSA certificate validation, implementations MUST validate the certificate validity period, revocation status, and certificate chain using the Validation Reference Time.</t>

<t>Implementations MAY perform offline validation using validation information preserved in the "validations" object within the decoded JSON object contained in the corresponding "timestamp" parameter.</t>

<t>If required validation information is unavailable, the validation result MAY be treated as Indeterminate.</t>

</section>
<section anchor="external-reference-hash-renewal-verification-rehashes"><name>External Reference Hash Renewal Verification (rehashes)</name>

<t>If "rehashes" exists, implementations MUST revalidate all external reference hash values using the renewed "hashAlg" and "hashValue" parameters.</t>

<t>Verification of "rehashes" does not replace validation of the original external references defined in SIG-B.</t>

<t>Implementations MUST verify that the "ltv.refs" array within "rehashes" preserves the same number of elements and the same ordering as the payload "ltv.refs" array.</t>

<t>Implementations MUST verify that no parameters other than "hashAlg" and "hashValue" have been modified.</t>

<t>If renewed external reference hash validation fails, the validation result MUST be treated as Invalid.</t>

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

<t>LTV-JWS preserves the processing model and security properties of JWS <xref target="RFC7515"/>.</t>

<t>In addition, LTV-JWS adopts the long-term signature approach used in long-term signature formats such as XAdES (ISO 14533-2).</t>

<t>In the long-term signature approach, validation information and timestamps are maintained separately from the JWS signature in the unprotected header, and long-term integrity and authenticity are preserved through independent cryptographic protection and the continuous addition of archive timestamps.</t>

<t>Once an archive timestamp has been added, information existing prior to that archive timestamp and covered by it is protected and SHOULD NOT be modified.</t>

<t>Implementations MUST carefully validate all cryptographic inputs, timestamp and external reference hash inputs, certificate validation information, and timestamp tokens themselves defined in this specification.</t>

<t>Improper validation processing, incorrect handling of unprotected header information, or incorrect interpretation of BASE64URL and BASE64 encoded values may result in incorrect validation results or loss of long-term signature validity.</t>

<section anchor="json-object-processing"><name>JSON Object Processing</name>

<t>Implementations MUST reject JSON objects containing duplicate member names.</t>

<t>This requirement applies to all JSON objects defined in this specification, including:</t>

<t><list style="symbols">
  <t>protected headers</t>
  <t>unprotected headers</t>
  <t>payload "ltv" objects</t>
  <t>"validations" objects</t>
  <t>"archive" objects</t>
  <t>decoded JSON objects contained in "signing", "timestamp", and "rehashes" parameters</t>
</list></t>

<t>Duplicate member names may cause inconsistent interpretation between implementations and may result in incorrect signature validation, timestamp validation, archive validation, or external reference validation.</t>

</section>
<section anchor="trust-model-of-unprotected-header-information"><name>Trust Model of Unprotected Header Information</name>

<t>LTV-JWS stores timestamps, validation information, and archive-related information in the unprotected header.</t>

<t>Information stored in the unprotected header is not directly protected by the JWS signature.</t>

<t>However, most validation information and timestamp-related information stored in the unprotected header are protected by existing PKIX/CMS signatures generated by CAs, OCSP responders, or TSAs.</t>

<t>In addition, unprotected header information is subject to long-term integrity protection through archive timestamps.</t>

<t>Implementations MUST NOT treat unprotected header information as trusted solely because such information is present in the JWS object.</t>

<t>If archive timestamp validation fails, the associated unprotected header information MUST be treated as untrusted.</t>

</section>
<section anchor="detached-payload-considerations"><name>Detached Payload Considerations</name>

<t>Detached payload usage may complicate long-term preservation and validation because the payload data required for JWS signature validation is stored outside the JWS object.</t>

<t>Implementations and operational environments SHOULD ensure long-term preservation, availability, and integrity of detached payload data associated with LTV-JWS objects.</t>

<t>Loss or ambiguity of detached payload data may result in failure of signature validation, timestamp validation, archive validation, or long-term validation.</t>

</section>
<section anchor="validation-requirements-for-external-references"><name>Validation Requirements for External References</name>

<t>LTV-JWS supports indirect signing of externally referenced data through the "refs" array.</t>

<t>Implementations MUST validate all external reference hash values associated with the signature.</t>

<t>Successful JWS signature validation alone does not guarantee the integrity or authenticity of externally referenced data.</t>

<t>If the recalculated hash value of externally referenced data does not match the corresponding "hashValue" parameter, the validation result MUST be treated as Invalid.</t>

<t>LTV-JWS external references are limited to a single-level reference structure using the "refs" array within the payload, and recursive or multi-level external reference structures are not defined.</t>

<t>This restriction simplifies external reference validation processing and prevents reference loops, complex dependency relationships, and ambiguity regarding validation scope.</t>

<t>Implementations SHOULD carefully consider the trust model, retrieval method, and persistence of externally referenced data.</t>

<t>The security and availability of externally referenced data are outside the scope of this specification.</t>

</section>
<section anchor="external-reference-retrieval-security"><name>External Reference Retrieval Security</name>

<t>Implementations SHOULD carefully control retrieval of externally referenced data identified by "uri" parameters.</t>

<t>Retrieval of external references may introduce security and operational risks including:</t>

<t><list style="symbols">
  <t>Server-Side Request Forgery (SSRF)</t>
  <t>unintended access to internal network resources</t>
  <t>loopback or local file access</t>
  <t>retrieval of mutable or replaced content</t>
  <t>excessive resource consumption</t>
  <t>denial-of-service conditions</t>
  <t>retrieval timeouts</t>
  <t>unexpected URI scheme handling</t>
</list></t>

<t>Implementations SHOULD restrict permitted URI schemes, network locations, retrieval methods, object sizes, and timeout behavior according to the applicable security policy.</t>

<t>Implementations SHOULD NOT automatically trust externally retrieved data solely because the corresponding hash value matches.</t>

<t>The security, trustworthiness, persistence, availability, and retrieval policy of externally referenced data are outside the scope of this specification.</t>

</section>
<section anchor="signature-timestamp-and-archive-timestamp-validation"><name>Signature Timestamp and Archive Timestamp Validation</name>

<t>LTV-JWS uses <xref target="RFC3161"/> timestamps to prove that signatures, validation information, and archive information existed prior to a specific point in time.</t>

<t>A signature timestamp proves that the signed state consisting of the JWS protected header, payload, and signature existed prior to a specific point in time.</t>

<t>An archive timestamp protects signatures, timestamps, validation information, and archive information existing prior to it, and enables continued long-term validation.</t>

<t>Implementations MUST reconstruct the hash input of signature timestamps and archive timestamps according to the methods defined in this specification and verify that it matches the messageImprint contained in the TimeStampToken.</t>

<t>Implementations MUST perform signature validation of all TimeStampTokens and PKIX validation of TSA certificates.</t>

<t>If signature timestamp validation fails, the proof of existence (signature time) of the corresponding SIG-B based on that signature timestamp is not established.</t>

<t>If archive timestamp validation fails, the proof of existence of the protected contents covered by the corresponding archive timestamp is not established.</t>

<t>For long-term validation, implementations MUST perform timestamp and certificate validation using an appropriate validation reference time according to the long-term signature approach.</t>

<t>The time of the signature timestamp MUST be used as the validation reference time for SIG-B signature validation.</t>

<t>For validation of each validations object, the time of the nearest protecting archive timestamp for the corresponding validation information MUST be used as the validation reference time. If no corresponding archive timestamp exists, the current time MUST be used as the validation reference time.</t>

<t>Improper timestamp validation or incorrect use of validation reference time may result in incorrect long-term validation results.</t>

</section>
<section anchor="validation-policy-and-trust-anchors"><name>Validation Policy and Trust Anchors</name>

<t>Validation results of LTV-JWS depend on the applicable validation policy and trust anchors.</t>

<t>Even for the same LTV-JWS object, validation results may differ depending on the trust anchors used, revocation information, permitted cryptographic algorithms, timestamp validation conditions, determination of validation reference time, or policies regarding the use of external validation information.</t>

<t>Implementations MUST appropriately manage trust anchors, certificate validation conditions, revocation checking conditions, timestamp validation conditions, and long-term validation requirements according to the applicable validation policy.</t>

<t>During long-term validation, the retention period and availability of certificates, CRLs, OCSP responses, TimeStampTokens, and other validation information may affect validation results.</t>

<t>Changes, removal, or revocation of trust anchors, or changes in validation policy, may cause an LTV-JWS object previously determined as Valid to later be determined as Indeterminate or Invalid.</t>

</section>
<section anchor="encoding-confusion-between-base64url-and-base64"><name>Encoding Confusion Between BASE64URL and BASE64</name>

<t>LTV-JWS uses both BASE64URL encoding and BASE64 encoding depending on the purpose of the represented data.</t>

<t>Values used for JWS signing input construction, timestamp hash input construction, external reference hash input construction, and hash-based identifiers use BASE64URL encoding.</t>

<t>In contrast, DER-encoded ASN.1 binary objects such as certificates, CRLs, OCSP responses, and <xref target="RFC3161"/> TimeStampTokens use BASE64 encoding consistent with the "x5c" parameter defined in <xref target="RFC7515"/>.</t>

<t>BASE64URL encoding and BASE64 encoding are not interchangeable and differ in character sets and padding rules.</t>

<t>Implementations MUST use the correct encoding for each parameter and hash input construction defined in this specification.</t>

<t>Incorrect encoding processing, incorrect decoding processing, or confusion between BASE64URL encoding and BASE64 encoding may result in signature validation failure, timestamp validation failure, external reference hash mismatch, or long-term validation failure.</t>

</section>
<section anchor="recursive-archive-validation"><name>Recursive Archive Validation</name>

<t>LTV-JWS preserves long-term signature validity by continuously adding archive timestamps using a recursive archive structure.</t>

<t>Each archive timestamp protects signatures, timestamps, validation information, and archive information existing prior to it.</t>

<t>Implementations MUST reconstruct the hash input corresponding to each archive timestamp according to the method defined in this specification and verify that it matches the messageImprint contained in the TimeStampToken.</t>

<t>For validation of each archive timestamp, the time of the corresponding nearest protecting archive timestamp MUST be used as the validation reference time. If no nearest protecting archive timestamp exists, the current time MUST be used as the validation reference time.</t>

<t>Archive timestamp validation may be performed from outermost to innermost, or from innermost to outermost, depending on implementation or validation policy. However, implementations SHOULD apply validation processing consistently.</t>

<t>If recursive archive validation fails, the long-term validation state protected by the corresponding archive timestamp MUST be treated as untrusted.</t>

<t>Implementations and operational environments SHOULD avoid excessive nesting of recursive archive structures.</t>

</section>
<section anchor="cryptographic-algorithm-agility"><name>Cryptographic Algorithm Agility</name>

<t>LTV-JWS adopts a long-term signature approach that assumes cryptographic algorithm migration in order to address cryptographic algorithm obsolescence, weakening, or compromise.</t>

<t>Cryptographic algorithms used for signatures, timestamps, certificate validation, and external reference hashes may lose security over time.</t>

<t>Implementations and operational environments MUST migrate to cryptographic algorithms providing sufficient security according to the applicable security policy.</t>

<t>By continuously adding archive timestamps, past signatures, timestamps, validation information, and archive information can continue to be protected using newer cryptographic algorithms.</t>

<t>For external references, before the currently used hash algorithm becomes weak or compromised, overlapping assurance using both old and new hash algorithms can be maintained by adding "rehashes".</t>

<t>In the long-term signature approach, even cryptographic algorithms that are currently considered weak or deprecated may still be considered valid if the corresponding signatures, timestamps, or hash values were generated at a time when those algorithms were considered sufficiently secure.</t>

<t>Therefore, implementations and operational environments MUST appropriately manage the validity period, security evaluation, and applicable usage period of each cryptographic algorithm.</t>

<t>Implementations MUST appropriately identify weak or deprecated cryptographic algorithms and determine validation results according to the applicable validation policy.</t>

<t>Failure of cryptographic algorithm migration, inappropriate algorithm selection, or insufficient archive timestamp renewal may result in loss of long-term signature validity.</t>

</section>
<section anchor="canonicalization-and-deterministic-inputs"><name>Canonicalization and Deterministic Inputs</name>

<t>LTV-JWS achieves deterministic signature inputs and hash inputs without using JSON canonicalization by reusing the JWS signing input model defined in <xref target="RFC7515"/>.</t>

<t>JWS signature inputs, signature timestamp hash inputs, and archive timestamp hash inputs are constructed by concatenating BASE64URL-encoded values using the "." character.</t>

<t>For external references, the external reference hash input uses the externally referenced binary data itself as the hash input by default. If <spanx style="verb">type=jws</spanx> is used, the same BASE64URL concatenation model as the JWS signing input model is used.</t>

<t>This approach avoids differences caused by JSON serialization order, whitespace, indentation, or other variations in JSON textual representation.</t>

<t>Even in recursive archive structures, hash inputs are deterministically reconstructed without requiring JSON canonicalization because the hash inputs are constructed as ordered concatenations of BASE64URL-encoded values.</t>

<t>Implementations MUST reconstruct signature inputs and hash inputs according to the exact input construction methods defined in this specification.</t>

<t>Incorrect JSON re-serialization, misuse of JSON canonicalization, incorrect BASE64URL processing, or incorrect input construction ordering may result in signature validation failure, timestamp validation failure, or long-term validation failure.</t>

<t>In particular, archive timestamp validation requires exact reconstruction of hash inputs including prior archive structures, and incorrect input reconstruction may cause failure of the entire long-term signature validation.</t>

</section>
<section anchor="local-signing-time-considerations"><name>Local Signing Time Considerations</name>

<t>The "signingTime" parameter in LTV-JWS represents the local system time used at the time of signing.</t>

<t>The "signingTime" value is informational and does not by itself provide cryptographically protected proof of signing time.</t>

<t>Trusted signing time is generally established using trusted timestamp mechanisms such as <xref target="RFC3161"/> timestamps.</t>

<t>Implementations MUST NOT treat "signingTime" as trusted signing time. However, this restriction does not apply if the applicable validation policy permits the use of trusted local system time.</t>

<t>The "signingTime" value may contain incorrect values due to system clock manipulation, timezone misconfiguration, incorrect local time configuration, or malicious signers.</t>

<t>If the "signingTime" value significantly differs from the trusted timestamp time, the validation policy should treat the difference as a suspicious time discrepancy warning.</t>

<t>For long-term validation, validation reference times should generally be based on trusted timestamps.</t>

</section>
<section anchor="validation-information-applicability"><name>Validation Information Applicability</name>

<t>For long-term validation in LTV-JWS, appropriate validation information MUST be used for the applicable validation reference time.</t>

<t>Certificates, CRLs, OCSP responses, TimeStampTokens, and other validation information should be valid and applicable at the corresponding validation reference time.</t>

<t>Implementations MUST appropriately validate certificate validity periods, CRL issuance times, nextUpdate values, OCSP response validity, timestamp times, and other validation-related time information.</t>

<t>Use of inappropriate validation information for a given validation reference time may result in incorrect revocation status determination or incorrect validation results.</t>

<t>In the long-term signature approach, validation information itself also needs to be continuously protected by archive timestamps.</t>

<t>Missing, corrupted, or inapplicable validation information for a given validation reference time may cause long-term validation results to become Indeterminate.</t>

<t>Implementations and operational environments should appropriately preserve validation information required for long-term validation and continue adding archive timestamps appropriately.</t>

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

<t>This document requests the registration of the "ltv" JOSE Header Parameter in the JSON Web Signature and Encryption Header Parameters Registry defined by <xref target="RFC7515"/>.</t>

<t>This specification uses the "ltv" object within the JWS Protected Header, JWS Unprotected Header, and the payload.</t>

<t>The "ltv" object used in the Protected Header and Unprotected Header is treated as a JOSE Header Parameter and is subject to IANA registration.</t>

<t>The "ltv" object used within the payload is a payload structure used to contain external references ("refs") and is not subject to the JOSE Header Parameter Registry.</t>

<t>This specification defines additional Long-Term Validation related parameters and extension attributes managed within the "ltv" object.</t>

<t>Additional LTV-related parameters may be defined by this specification or future extension specifications.</t>

<section anchor="registration-of-the-ltv-jose-header-parameter"><name>Registration of the "ltv" JOSE Header Parameter</name>

<t>This specification defines the "ltv" JOSE Header Parameter for use in JWS Protected Headers and Unprotected Headers.</t>

<t>This specification also uses an "ltv" object within the payload for external reference ("refs") structures.</t>

<t>The "ltv" Header Parameter contains long-term validation related information including signature extension information, timestamps, validation information, and archive information.</t>

<t>This specification requests registration of the "ltv" parameter in the "JSON Web Signature and Encryption Header Parameters" registry.</t>

<t>The registration is as follows:</t>

<t><list style="symbols">
  <t>Header Parameter Name: "ltv"</t>
  <t>Header Parameter Description: Long-Term Validation information container for JWS</t>
  <t>Header Parameter Usage Location(s):
JWS Protected Header,
JWS Unprotected Header</t>
  <t>Change Controller: IETF</t>
  <t>Specification Document(s): This specification</t>
</list></t>

<t>The "ltv" Header Parameter MAY be included in the "crit" Header Parameter defined in <xref target="RFC7515"/>.</t>

<t>Implementations that do not understand the "ltv" Header Parameter and encounter "ltv" in "crit" MUST reject the JWS.</t>

</section>
<section anchor="ltv-jws-external-reference-type-identifiers"><name>LTV-JWS External Reference Type Identifiers</name>

<t>This specification defines external reference "type" identifiers used by LTV-JWS.</t>

<t>These identifiers are used to identify external reference hash input construction methods and external reference signing models.</t>

<t>This specification defines the following initial values:</t>

<t><list style="symbols">
  <t>"raw": uses externally referenced binary data directly as the hash input</t>
  <t>"jws": uses the same BASE64URL concatenation model as the JWS signing input model for externally referenced JWS objects</t>
</list></t>

<t>Additional external reference type identifiers may be defined by future specifications.</t>

</section>
<section anchor="ltv-jws-timestamp-type-identifiers"><name>LTV-JWS Timestamp Type Identifiers</name>

<t>This specification defines timestamp "type" identifier used by LTV-JWS.</t>

<t>These identifiers are used to identify the timestamp format contained in timestamp objects.</t>

<t>This specification defines the following initial value:</t>

<t><list style="symbols">
  <t>"rfc3161": <xref target="RFC3161"/> TimeStampToken</t>
</list></t>

<t>Additional timestamp type identifiers may be defined by future specifications.</t>

</section>
<section anchor="hash-algorithm-identifiers"><name>Hash Algorithm Identifiers</name>

<t>This specification defines "S256", "S384", and "S512" as hash algorithm identifiers.</t>

<t>These are shorthand identifiers representing SHA-256, SHA-384, and SHA-512 respectively.</t>

<t>Additional hash algorithm identifiers may be defined by future specifications.</t>

</section>
<section anchor="no-new-cryptographic-algorithms"><name>No New Cryptographic Algorithms</name>

<t>This specification does not define new signature algorithms, hash algorithms, timestamp algorithms, or cryptographic primitives.</t>

<t>LTV-JWS reuses existing algorithms and processing models defined in <xref target="RFC7515"/>, <xref target="RFC7518"/>, <xref target="RFC3161"/>, and existing PKIX/CMS related specifications.</t>

</section>
</section>


  </middle>

  <back>



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

&RFC7515;
&RFC3161;
&RFC5280;
&RFC6960;
&RFC2119;
&RFC8174;
&RFC3339;
&RFC7518;


    </references>




<?line 1245?>

<section anchor="ltv-jws-examples"><name>LTV-JWS Examples</name>

<t>The examples in this appendix are abbreviated for readability. Long BASE64URL values, certificates, CRLs, OCSP responses, timestamp tokens, and signature values are shortened.</t>

<t>Complete example files are available in the GitHub repository:</t>

<t>https://github.com/miyachi/draft-miyachi-ltv-jws/tree/main/examples</t>

<section anchor="example-sig-b-examplessig-bjson"><name>Example SIG-B (examples/sig-b.json)</name>

<t>This example shows a SIG-B LTV-JWS object.</t>

<t>The example demonstrates:</t>

<t><list style="symbols">
  <t>JWS JSON Serialization</t>
  <t><spanx style="verb">crit</spanx> usage for <spanx style="verb">"ltv"</spanx></t>
  <t><spanx style="verb">signingTime</spanx></t>
  <t><spanx style="verb">signingCertHash</spanx></t>
  <t>indirect signing using <spanx style="verb">ltv.refs</spanx></t>
  <t>external references (<spanx style="verb">test1.txt</spanx> and <spanx style="verb">test2.json</spanx>)</t>
  <t>optional signer validation information using <spanx style="verb">header.ltv.signing</spanx></t>
</list></t>

<t>For minimal SIG-B objects, the <spanx style="verb">header.ltv.signing</spanx> parameter MAY be omitted if signer validation information is not embedded.</t>

<t>Some long BASE64URL and BASE64 values are shortened for readability.</t>

<figure title="Example of SIG-B"><sourcecode type="json"><![CDATA[
{
  "payload": "eyJsdHYiOnsicmVmcyI6W3sidXJpIjoidGVzdDEudHh0IiwiaGFzaEFsZyI6IlMyNTYiLCJoYXNoVmFsdWUiOiJxVFZ2S3pVLTFHeFRpcmN4dkdTbTQ1bGUyb2Ixdks3cHVBemJYdVhWYm9vIn0seyJ1cmkiOiJ0ZXN0Mi5qc29uIiwiaGFzaEFsZyI6IlMyNTYiLCJoYXNoVmFsdWUiOiIzWURVZ2xGNDF4dmdmSUF2OFRxYS03OTVxaG8zaUlKaXB2LXYzS1JtMldBIn1dfX0",
  "protected": "eyJhbGciOiJSUzI1NiIsImNyaXQiOlsibHR2Il0sImx0diI6eyJzaWduaW5nVGltZSI6IjIwMjYtMDUtMThUMDE6NDg6MDVaIiwic2lnbmluZ0NlcnRIYXNoIjp7Imhhc2hBbGciOiJTMjU2IiwiaGFzaFZhbHVlIjoibnhsWDFtOXRycEFkN1dTMjN5OEV2TG5PTlppVEZoLWtKQlpTRkdyNXZ4NCJ9fX0",
  "signature": "SD1LmkNPQFotnNvmkdymyrMTWVb_NTYjnY_VZ8Od5GGroA0RH3acuHhqjH9Yw46BnDPfr5Fjb996QBU8NhMzvrrBT38BBCFzyTMlChq_EkaRXeZyb3Ag1AClAe0Wz1g41tpQxnzWGRR8v6ozymb6g-T17Z_3I0SZlMKbmPdHVY0uFwYsgRpntqxM9_mG1kSZjyvYfrk-ZufyPuwgj8_l08-mN1Us6Gp6csqJJ8-QTd5-JPdKAFnj14QfYuEeyQcx5ZZaizDlEQnXghstkEJJ-dUIhlx5Pl0waAQvSp5H65bx0PDmVASfHQUIoy_Y3z5zqrGHRpJqPgAxOh770CzaQtF_yjujHWeVNqpgdX36zPl4f18jKbGRgEggl5iszoNWu-IVAFMVBQdR7vwXfdbuetjttfYuqo5Yk3Gw2bv7T3YeV2_7_1yGwByc8SXcP3PkStpDqIz_SRJ6sQ9K0cvwR6araBXpbkRqCECfG8DFfwlZqyPwgXG10B8N-2ABbPro",
  "header": {
    "ltv": {
      "signing": "eyJ2YWxpZGF0aW9ucyI6eyJjZXJ0cyI6WyJNSUlGaXpDQ0Ez..."
    }
  }
}
]]></sourcecode></figure>

<t>This example shows a SIG-B LTV-JWS object including optional signer validation information.</t>

<t>Decoded payload:</t>

<figure title="Example of SIG-B Decoded payload"><sourcecode type="json"><![CDATA[
{
  "ltv": {
    "refs": [
      {
        "uri": "test1.txt",
        "hashAlg": "S256",
        "hashValue": "qTVvKzU-1GxTircxvGSm45le2ob1vK7puAzbXuXVboo"
      },
      {
        "uri": "test2.json",
        "hashAlg": "S256",
        "hashValue": "3YDUglF41xvgfIAv8Tqa-795qho3iIJipv-v3KRm2WA"
      }
    ]
  }
}
]]></sourcecode></figure>

<t>Decoded protected header:</t>

<figure title="Example of SIG-B Decoded protected header"><sourcecode type="json"><![CDATA[
{
  "alg": "RS256",
  "crit": ["ltv"],
  "ltv": {
    "signingTime": "2026-05-18T01:48:05Z",
    "signingCertHash": {
      "hashAlg": "S256",
      "hashValue": "nxlX1m9trpAd7WS23y8EvLnONZiTFh-kJBZSFGr5vx4"
    }
  }
}
]]></sourcecode></figure>

<t>Decoded BASE64URL value of <spanx style="verb">header.ltv.signing</spanx>:</t>

<figure title="Example of SIG-B value of `header.ltv.signing`"><sourcecode type="json"><![CDATA[
{
  "validations": {
    "certs": [
      "MIIFizCCA3OgAwIBAgIDEAAXMA0GCSqGSIb3DQEBCwUAME4x..."
    ]
  }
}
]]></sourcecode></figure>

<t>The <spanx style="verb">header.ltv.signing</spanx> value itself is a BASE64URL-encoded JSON object.</t>

<t>The embedded certificate values use BASE64 encoding because they are DER-encoded ASN.1 objects.</t>

<t>The JWS Signing Input for this example is constructed as:</t>

<figure title="JWS Signature (SIG-B) Input Construction"><sourcecode type="text"><![CDATA[
BASE64URL(protected) || "." ||
BASE64URL(payload)
]]></sourcecode></figure>

<t>This example uses indirect signing through the <spanx style="verb">ltv.refs</spanx> array.</t>

<t>The externally referenced files identified by <spanx style="verb">ltv.refs</spanx> are:</t>

<t><list style="symbols">
  <t><spanx style="verb">test1.txt</spanx></t>
  <t><spanx style="verb">test2.json</spanx></t>
</list></t>

<t>The <spanx style="verb">hashValue</spanx> of each reference is calculated over the externally referenced binary data itself because the default external reference type is <spanx style="verb">raw</spanx>.</t>

<section anchor="example-sig-b-with-x5c"><name>Example SIG-B with x5c</name>

<t>This example shows a SIG-B LTV-JWS object using the existing JWS "x5c" header parameter instead of the optional <spanx style="verb">header.ltv.signing</spanx> parameter.</t>

<t>The example demonstrates:</t>

<t><list style="symbols">
  <t>use of the existing JWS <spanx style="verb">x5c</spanx> header parameter</t>
  <t>preservation of the signing certificate using <spanx style="verb">x5c</spanx></t>
  <t>compatibility with existing JWS processing models</t>
  <t>indirect signing using <spanx style="verb">ltv.refs</spanx></t>
</list></t>

<t>The <spanx style="verb">x5c</spanx> parameter is stored directly in the JWS header according to <xref target="RFC7515"/>.</t>

<t>Some long BASE64URL and BASE64 values are shortened for readability.</t>

<figure title="Example of SIG-B using 'x5c'"><sourcecode type="json"><![CDATA[
{
  "payload": "(same as SIG-B example)",
  "protected": "(same as SIG-B example)",
  "signature": "(same as SIG-B example)",
  "header": {
    "x5c":["MIIFizCCA3OgAwIBAgIDEAAXMA0GCSqGSIb3DQEBCwUAME4x..."]
  }
}
]]></sourcecode></figure>

</section>
</section>
<section anchor="example-sig-t-examplessig-tjson"><name>Example SIG-T (examples/sig-t.json)</name>

<t>This example shows a SIG-T LTV-JWS object generated by adding a signature timestamp to the previous SIG-B example.</t>

<t>The example demonstrates:</t>

<t><list style="symbols">
  <t><xref target="RFC3161"/> signature timestamp</t>
  <t><spanx style="verb">header.ltv.timestamp</spanx></t>
  <t>signature timestamp hash input construction</t>
</list></t>

<t>The <spanx style="verb">header.ltv.timestamp</spanx> value itself is a BASE64URL-encoded JSON object.</t>

<t>Some long BASE64URL and BASE64 values are shortened for readability.</t>

<figure title="Example of SIG-T"><sourcecode type="json"><![CDATA[
{
  "payload": "(same as SIG-B example)",
  "protected": "(same as SIG-B example)",
  "signature": "(same as SIG-B example)",
  "header": {
    "ltv": {
      "signing": "(same as SIG-B example)",
      "timestamp": "eyJ0c3QiOiJNSUlQRVFZSktvWklodmNOQVFjQ29JSVBBakND..."
    }
  }
}
]]></sourcecode></figure>

<t>Decoded BASE64URL value of <spanx style="verb">header.ltv.timestamp</spanx>:</t>

<figure title="Example of SIG-T Decoded value of `header.ltv.timestamp`"><sourcecode type="json"><![CDATA[
{
  "tst": "MIIPEQYJKoZIhvcNAQcCoIIPAjCCDv4CAQMxCzAJBgUrDgMCGgUAMIHU..."
}
]]></sourcecode></figure>

<t>The <spanx style="verb">tst</spanx> value contains a BASE64-encoded <xref target="RFC3161"/> TimeStampToken in DER format.</t>

<t>The Signature Timestamp Input for this example is constructed as:</t>

<figure title="Signature Timestamp Input Construction"><sourcecode type="text"><![CDATA[
BASE64URL(protected) || "." ||
BASE64URL(payload) || "." ||
BASE64URL(signature)
]]></sourcecode></figure>

<t>The <xref target="RFC3161"/> <spanx style="verb">messageImprint</spanx> value is calculated from the hash value of the Signature Timestamp Input.</t>

<t>If the <spanx style="verb">type</spanx> parameter is omitted, the timestamp type defaults to <spanx style="verb">"rfc3161"</spanx>.</t>

<t>The decoded BASE64URL value of <spanx style="verb">header.ltv.timestamp</spanx> MAY additionally contain a <spanx style="verb">validations</spanx> object preserving validation information for the TSA certificate.</t>

</section>
<section anchor="example-sig-ltv-examplessig-ltvjson"><name>Example SIG-LTV (examples/sig-ltv.json)</name>

<t>This example shows a SIG-LTV LTV-JWS object generated by adding validation information to the previous SIG-T example.</t>

<t>The example demonstrates:</t>

<t><list style="symbols">
  <t>validation information embedding</t>
  <t><spanx style="verb">header.ltv.signing</spanx></t>
  <t>validations within the decoded BASE64URL value of <spanx style="verb">header.ltv.timestamp</spanx></t>
  <t>preservation of certificates and CRLs for long-term validation</t>
</list></t>

<t>The <spanx style="verb">header.ltv.signing</spanx> and <spanx style="verb">header.ltv.timestamp</spanx> values are BASE64URL-encoded JSON objects.</t>

<t>Some long BASE64URL and BASE64 values are shortened for readability.</t>

<figure title="Example of SIG-LTV"><sourcecode type="json"><![CDATA[
{
  "payload": "(same as SIG-T example)",
  "protected": "(same as SIG-T example)",
  "signature": "(same as SIG-T example)",
  "header": {
    "ltv": {
      "signing": "eyJ2YWxpZGF0aW9ucyI6eyJjZXJ0cyI6WyJNSUlGMlRDQ0E4...",
      "timestamp": "eyJ0c3QiOiJNSUlQRVFZSktvWklodmNOQVFjQ29JSVBBakND..."
    }
  }
}
]]></sourcecode></figure>

<t>Decoded BASE64URL value of <spanx style="verb">header.ltv.signing</spanx>:</t>

<figure title="Example of SIG-LTV Decoded value of `header.ltv.signing`"><sourcecode type="json"><![CDATA[
{
  "validations": {
    "certs": [
      "MIIF2TCCA8GgAwIBAgIHA41+pMaABTANBgkqhkiG9w0BAQsF...",
      "MIIFizCCA3OgAwIBAgIDEAAXMA0GCSqGSIb3DQEBCwUAME4x..."
    ],
    "crls": [
      "MIICrDCBlTANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJK..."
    ]
  }
}
]]></sourcecode></figure>

<t>Decoded BASE64URL value of <spanx style="verb">header.ltv.timestamp</spanx>:</t>

<figure title="Example of SIG-LTV Decoded value of `header.ltv.timestamp`"><sourcecode type="json"><![CDATA[
{
  "tst": "MIIPEQYJKoZIhvcNAQcCoIIPAjCCDv4CAQMxCzAJBgUrDgMC...",
  "validations": {
    "certs": [
      "MIIF2TCCA8GgAwIBAgIHA41+pMaABjANBgkqhkiG9w0BAQsF...",
      "MIIFozCCA4ugAwIBAgIDIAAwMA0GCSqGSIb3DQEBCwUAME4x..."
    ],
    "crls": [
      "MIICrDCBlTANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJK..."
    ]
  }
}
]]></sourcecode></figure>

<t>The <spanx style="verb">validations.certs</spanx> array within the decoded BASE64URL value of <spanx style="verb">header.ltv.signing</spanx> contains the signing certificate and certificates required for PKIX validation of the signing certificate.</t>

<t>The <spanx style="verb">validations.certs</spanx> array within the decoded BASE64URL value of <spanx style="verb">header.ltv.timestamp</spanx> contains the TSA certificate and certificates required for PKIX validation of the TSA certificate associated with the <xref target="RFC3161"/> timestamp.</t>

<t>The embedded certificate values use BASE64 encoding because they are DER-encoded ASN.1 certificate objects.</t>

<t>The embedded CRL values use BASE64 encoding because they are DER-encoded ASN.1 CRL objects.</t>

<t>The <spanx style="verb">tst</spanx> value contains a BASE64-encoded <xref target="RFC3161"/> TimeStampToken in DER format.</t>

<t>Validation information preserved in SIG-LTV MAY include certificates, CRLs, OCSP responses and other validation-related information required for Long-Term Validation.</t>

<t>SIG-LTV validation can be performed using only the preserved validation information without requiring external validation services or network access.</t>

</section>
<section anchor="example-sig-lta-examplessig-ltajson"><name>Example SIG-LTA (examples/sig-lta.json)</name>

<t>This example shows a SIG-LTA LTV-JWS object generated by adding an archive timestamp to the previous SIG-LTV example.</t>

<t>The example demonstrates:</t>

<t><list style="symbols">
  <t>archive timestamp protection</t>
  <t><spanx style="verb">header.ltv.archive.timestamp</spanx></t>
  <t>long-term preservation of validation information</t>
  <t>renewable archive protection</t>
</list></t>

<t>The <spanx style="verb">header.ltv.archive.timestamp</spanx> value is a BASE64URL-encoded JSON object.</t>

<t>Some long BASE64URL and BASE64 values are shortened for readability.</t>

<figure title="Example of SIG-LTA"><sourcecode type="json"><![CDATA[
{
  "payload": "(same as SIG-LTV example)",
  "protected": "(same as SIG-LTV example)",
  "signature": "(same as SIG-LTV example)",
  "header": {
    "ltv": {
      "signing": "(same as SIG-LTV example)",
      "timestamp": "(same as SIG-LTV example)",
      "archive": {
        "timestamp": "eyJ0c3QiOiJNSUlQRUFZSktvWklodmNOQVFjQ29JSVBBVEND..."
      }
    }
  }
}
]]></sourcecode></figure>

<t>Decoded BASE64URL value of <spanx style="verb">header.ltv.archive.timestamp</spanx>:</t>

<figure title="Example of SIG-LTA Decoded value of `header.ltv.archive.timestamp`"><sourcecode type="json"><![CDATA[
{
  "tst": "MIIPEAYJKoZIhvcNAQcCoIIPATCCDv0CAQMxCzAJBgUrDgMC..."
}
]]></sourcecode></figure>

<t>The <spanx style="verb">tst</spanx> value contains a BASE64-encoded <xref target="RFC3161"/> TimeStampToken in DER format.</t>

<t>The Archive Timestamp Input for this example is constructed as:</t>

<figure title="Archive Timestamp Input"><sourcecode type="text"><![CDATA[
BASE64URL(protected) || "." ||
BASE64URL(payload) || "." ||
BASE64URL(signature) || "." ||
BASE64URL(header.ltv.timestamp) || "." ||
BASE64URL(header.ltv.signing)
]]></sourcecode></figure>

<t>The <xref target="RFC3161"/> <spanx style="verb">messageImprint</spanx> value of the archive timestamp is calculated from the hash value of the Archive Timestamp Input.</t>

<t>The archive timestamp protects the accumulated long-term validation state existing at the time of archive timestamp generation.</t>

<t><list style="symbols">
  <t>the JWS signature</t>
  <t>the external reference hashes</t>
  <t>the signature timestamp</t>
  <t>the preserved validation information</t>
</list></t>

<t>Additional archive timestamps MAY be added recursively for long-term renewal protection.</t>

</section>
<section anchor="example-sig-ltv-2nd-examplessig-ltv-2ndjson"><name>Example SIG-LTV 2nd (examples/sig-ltv-2nd.json)</name>

<t>This example shows a second-generation SIG-LTV object generated by adding validation information for the archive timestamp TSA certificate to the previous SIG-LTA example.</t>

<t>The example demonstrates:</t>

<t><list style="symbols">
  <t>preservation of archive timestamp TSA validation information</t>
  <t>recursive long-term validation state accumulation</t>
  <t>second-generation long-term validation information</t>
</list></t>

<t>The <spanx style="verb">header.ltv.archive.timestamp</spanx> value is a BASE64URL-encoded JSON object.</t>

<t>Some long BASE64URL and BASE64 values are shortened for readability.</t>

<figure title="Example of SIG-LTV 2nd"><sourcecode type="json"><![CDATA[
{
  "payload": "(same as SIG-LTA example)",
  "protected": "(same as SIG-LTA example)",
  "signature": "(same as SIG-LTA example)",
  "header": {
    "ltv": {
      "signing": "(same as SIG-LTV example)",
      "timestamp": "(same as SIG-LTV example)",
      "archive": {
        "timestamp": "eyJ0c3QiOiJNSUlQRUFZSktvWklodmNOQVFjQ29JSVBBVEND..."
      }
    }
  }
}
]]></sourcecode></figure>

<t>Decoded BASE64URL value of <spanx style="verb">header.ltv.archive.timestamp</spanx>:</t>

<figure title="Example of SIG-LTV 2nd Decoded value of `header.ltv.archive.timestamp`"><sourcecode type="json"><![CDATA[
{
  "tst": "MIIPEAYJKoZIhvcNAQcCoIIPATCCDv0CAQMxCzAJBgUrDgMC...",
  "validations": {
    "certs": [
      "MIIF2TCCA8GgAwIBAgIHA41+pMaABjANBgkqhkiG9w0BAQsF...",
      "MIIE..."
    ],
    "crls": [
      "MIICrDCBlTANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJK..."
    ]
  }
}
]]></sourcecode></figure>

<t>The <spanx style="verb">header.ltv.archive.timestamp.validations.certs</spanx> array contains the archive TSA certificate and certificates required for PKIX validation of the archive TSA certificate associated with the <xref target="RFC3161"/> archive timestamp.</t>

<t>The embedded certificate values use BASE64 encoding because they are DER-encoded ASN.1 certificate objects.</t>

<t>The embedded CRL values use BASE64 encoding because they are DER-encoded ASN.1 CRL objects.</t>

<t>The <spanx style="verb">tst</spanx> value contains a BASE64-encoded <xref target="RFC3161"/> TimeStampToken in DER format.</t>

<t>The archive timestamp validation information becomes part of the accumulated long-term validation state protected by subsequent archive timestamps.</t>

<t>Additional archive timestamps MAY be added recursively for long-term renewal protection.</t>

</section>
<section anchor="example-sig-lta-2nd-examplessig-lta-2ndjson"><name>Example SIG-LTA 2nd (examples/sig-lta-2nd.json)</name>

<t>This example shows a second-generation SIG-LTA object generated by adding a new archive timestamp to the previous SIG-LTV 2nd example.</t>

<t>The example demonstrates:</t>

<t><list style="symbols">
  <t>recursive archive timestamp protection</t>
  <t>second-generation archive timestamps</t>
  <t>preservation of accumulated long-term validation state</t>
  <t>renewable archive timestamp protection</t>
</list></t>

<t>The <spanx style="verb">header.ltv.archive.archive.timestamp</spanx> value is a BASE64URL-encoded JSON object.</t>

<t>Some long BASE64URL and BASE64 values are shortened for readability.</t>

<figure title="Example of SIG-LTA 2nd"><sourcecode type="json"><![CDATA[
{
  "payload": "(same as SIG-LTV 2nd example)",
  "protected": "(same as SIG-LTV 2nd example)",
  "signature": "(same as SIG-LTV 2nd example)",
  "header": {
    "ltv": {
      "signing": "(same as SIG-LTV example)",
      "timestamp": "(same as SIG-LTV example)",
      "archive": {
        "timestamp": "(same as SIG-LTV 2nd example)",
        "archive": {
          "timestamp": "eyJ0c3QiOiJNSUlQRUFZSktvWklodmNOQVFjQ29JSVBBVEND..."
        }
      }
    }
  }
}
]]></sourcecode></figure>

<t>Decoded BASE64URL value of <spanx style="verb">header.ltv.archive.archive.timestamp</spanx>:</t>

<figure title="Example of SIG-LTA 2nd Decoded value of `header.ltv.archive.archive.timestamp`"><sourcecode type="json"><![CDATA[
{
  "tst": "MIIPEAYJKoZIhvcNAQcCoIIPATCCDv0CAQMxCzAJBgUrDgMC..."
}
]]></sourcecode></figure>

<t>The <spanx style="verb">tst</spanx> value contains a BASE64-encoded <xref target="RFC3161"/> TimeStampToken in DER format.</t>

<t>The second-generation archive timestamp protects the accumulated long-term validation state existing at the time of archive timestamp generation, including:</t>

<t><list style="symbols">
  <t>the previous archive timestamp</t>
  <t>the JWS signature</t>
  <t>the external reference hashes</t>
  <t>the signature timestamp</t>
  <t>the embedded validation information</t>
</list></t>

<t>The Archive Timestamp Input for this example is constructed as:</t>

<figure title="2nd Archive Timestamp Input"><sourcecode type="text"><![CDATA[
BASE64URL(protected) || "." ||
BASE64URL(payload) || "." ||
BASE64URL(signature) || "." ||
BASE64URL(header.ltv.timestamp) || "." ||
BASE64URL(header.ltv.signing) || "." ||
BASE64URL(header.ltv.archive.timestamp)
]]></sourcecode></figure>

<t>Additional archive timestamps MAY be added recursively for long-term renewal protection.</t>

</section>
<section anchor="example-sig-lta-refs-renew-hashes-examplessig-rehashjson"><name>Example SIG-LTA refs renew hashes (examples/sig-rehash.json)</name>

<t>This example shows a SIG-LTA archive object containing renewed hash information for external references (<spanx style="verb">refs</spanx>).</t>

<t>The example demonstrates:</t>

<t><list style="symbols">
  <t>renewal of external reference hash algorithms</t>
  <t>preservation of original external reference ordering</t>
  <t>archive protection of renewed hash values</t>
  <t>continued verification after cryptographic algorithm updates</t>
</list></t>

<t>The <spanx style="verb">header.ltv.archive.archive.rehashes</spanx> value is a BASE64URL-encoded JSON object.</t>

<t>The decoded JSON object preserves the same external references and ordering as the payload <spanx style="verb">ltv.refs</spanx> array while updating only the <spanx style="verb">hashAlg</spanx> and <spanx style="verb">hashValue</spanx> parameters.</t>

<t>Some long BASE64URL and BASE64 values are shortened for readability.</t>

<figure title="Example of SIG-LTA refs renew hashes"><sourcecode type="json"><![CDATA[
{
  "payload": "(same as SIG-LTV example)",
  "protected": "(same as SIG-LTV example)",
  "signature": "(same as SIG-LTV example)",
  "header": {
    "ltv": {
      "signing": "(same as SIG-LTV example)",
      "timestamp": "(same as SIG-LTV example)",
      "archive": {
        "timestamp": "(same as SIG-LTV example)",
        "archive": {
          "rehashes": "eyJsdHYiOnsicmVmcyI6W3sidXJpIjoidGVzdDEudHh0...",
          "timestamp": "eyJ0c3QiOiJNSUlQRVFZSktvWklodmNOQVFjQ29JSVBB..."
        }
      }
    }
  }
}
]]></sourcecode></figure>

<t>Decoded BASE64URL value of <spanx style="verb">header.ltv.archive.archive.rehashes</spanx>:</t>

<figure title="Example of SIG-LTA refs renew hashes Decoded value of `header.ltv.archive.archive.rehashes`"><sourcecode type="json"><![CDATA[
{
  "ltv": {
    "refs": [
      {
        "uri": "test1.txt",
        "hashAlg": "S512",
        "hashValue": "eNAei4m6TiNr3Uuf57rMw82b4JQs3GvFGCRGsiFJi6ViuWV0lQWCbIi9oY_WT-SqK7B3SnLcaw7bQY1XJKJBLQ"
      },
      {
        "uri": "test2.json",
        "hashAlg": "S512",
        "hashValue": "lJjoF-6wuQ-OcrC6MGWBQvY1WfAFnX60El-HDejKCYQWt0Pa0qs8zWHJ5XdyuraN0c96IgE3wDIIfAdIIBGcWw"
      }
    ]
  }
}
]]></sourcecode></figure>

<t>The renewed <spanx style="verb">ltv.refs</spanx> array preserves the same external references and the same ordering as the payload <spanx style="verb">ltv.refs</spanx> array.</t>

<t>Only the <spanx style="verb">hashAlg</spanx> and <spanx style="verb">hashValue</spanx> parameters are updated.</t>

<t>The Archive Timestamp Input for this example is constructed as:</t>

<figure title="2nd Archive Timestamp Input with rehashed"><sourcecode type="text"><![CDATA[
BASE64URL(protected) || "." ||
BASE64URL(payload) || "." ||
BASE64URL(signature) || "." ||
BASE64URL(header.ltv.timestamp) || "." ||
BASE64URL(header.ltv.signing) || "." ||
BASE64URL(header.ltv.archive.timestamp) || "." ||
BASE64URL(header.ltv.archive.archive.rehashes)
]]></sourcecode></figure>

<t>The resulting archive timestamp is stored in <spanx style="verb">header.ltv.archive.archive.timestamp</spanx>.</t>

<t>The generated archive timestamp protects:</t>

<t><list style="symbols">
  <t>the original JWS signature</t>
  <t>the signature timestamp</t>
  <t>the signing validation information</t>
  <t>the previous archive timestamp</t>
  <t>the renewed external reference hashes</t>
</list></t>

<t>Additional archive timestamps and renewed hash information MAY be added recursively for continued long-term preservation.</t>

</section>
<section anchor="example-chained-signing-examplessig-chainedjson"><name>Example Chained Signing (examples/sig-chained.json)</name>

<t>This example shows a chained signing model using external references.</t>

<t>The example demonstrates:</t>

<t><list style="symbols">
  <t>signing of external data using <spanx style="verb">refs</spanx></t>
  <t>indirect signing of another JWS object</t>
  <t>chained verification using referenced JWS signatures</t>
  <t>use of mixed external reference types</t>
</list></t>

<t>The payload contains two external references:</t>

<t><list style="symbols">
  <t><spanx style="verb">test1.txt</spanx>
  <list style="symbols">
      <t>referenced as raw external data</t>
    </list></t>
  <t><spanx style="verb">sig-b.json</spanx>
  <list style="symbols">
      <t>referenced as a JWS object using <spanx style="verb">"type": "jws"</spanx></t>
    </list></t>
</list></t>

<t>Some long BASE64URL and BASE64 values are shortened for readability.</t>

<figure title="Example of Chained Signing"><sourcecode type="json"><![CDATA[
{
  "payload": "eyJsdHYiOnsicmVmcyI6W3sidXJpIjoidGVzdDEudHh0IiwiaGFzaEFsZyI6IlMyNTYiLCJoYXNoVmFsdWUiOiJxVFZ2S3pVLTFHeFRpcmN4dkdTbTQ1bGUyb2Ixdks3cHVBemJYdVhWYm9vIn0seyJ1cmkiOiJzaWctYi5qc29uIiwiaGFzaEFsZyI6IlMyNTYiLCJoYXNoVmFsdWUiOiJuVlFTblF1M2YwMlI2cURmdURkaV9LWkY1YjRLeDVHUWtNTjRWdXdiSjNVIiwidHlwZSI6Imp3cyJ9XX19",
  "protected": "eyJhbGciOiJSUzI1NiIsImNyaXQiOlsibHR2Il0sImx0diI6eyJzaWduaW5nVGltZSI6IjIwMjYtMDUtMThUMDE6NDg6MDVaIiwic2lnbmluZ0NlcnRIYXNoIjp7Imhhc2hBbGciOiJTMjU2IiwiaGFzaFZhbHVlIjoibnhsWDFtOXRycEFkN1dTMjN5OEV2TG5PTlppVEZoLWtKQlpTRkdyNXZ4NCJ9fX0",
  "signature": "Fot99xm-cHhZlAE5uR9sTfeOmsTPx-ozWVpAI0PEUHILsbNcKNr4lVfUQtB3vWkQy2iOkgr5Xi_tCXPYgMa2noWXN7BPBfA2ObTGy05tEZvFLc1TkkGgpeaQg0rOZbdkxAYgD8V6HPx7V1FZNz3sL-GQGLEXQ8CTjSmyapjt4Pq03OQhiFHxc3cnuD7euBBXfUwwPIF1RALAaAjqxQfWUQ9yuyLnUZsBoIVv_UqTGQBHS3DoKGD7klwDswGIU-4xVU0i4GUaRyLM4hs4IZkHizowMasS-i4765UIy6jXiEpCJQz0-UBKzCkwyQAS8qagM8hzXPrPC9wt3VJoFDVWCjONItdR1b9l6nudRDjiQ4w6hr3niuDnIGNk46YN5n9IHOyQb-V6ZQ9BP0STyjoAQ-VX379E9J7iOTY_HDr6Sm7rNjPVADA-QVNRHCctk9-Elw3Lk3qEAtHfAs8FSHl3cfMhYjpa9Q2VsNRD1dOTg19sue6YGFnNlDK9b95Gf0MK",
  "header": {
    "ltv": {
      "signing": "eyJ2YWxpZGF0aW9ucyI6eyJjZXJ0cyI6WyJNSUl..."
    }
  }
}
]]></sourcecode></figure>

<t>Decoded BASE64URL value of <spanx style="verb">payload</spanx>:</t>

<figure title="Example of Chained Signing Decoded value of `payload`"><sourcecode type="json"><![CDATA[
{
  "ltv": {
    "refs": [
      {
        "uri": "test1.txt",
        "hashAlg": "S256",
        "hashValue": "qTVvKzU-1GxTircxvGSm45le2ob1vK7puAzbXuXVboo"
      },
      {
        "uri": "sig-b.json",
        "hashAlg": "S256",
        "hashValue": "nVQSnQu3f02R6qDfuDdi_KZF5b4Kx5GQkMN4VuwbJ3U",
        "type": "jws"
      }
    ]
  }
}
]]></sourcecode></figure>

<t>The <spanx style="verb">test1.txt</spanx> reference is verified as raw external data.</t>

<t>The <spanx style="verb">sig-b.json</spanx> reference is verified as a JWS object.</t>

<t>For <spanx style="verb">"type": "jws"</spanx>, the referenced hash input is constructed as:</t>

<figure title="Chained Signing Hash Input Construction"><sourcecode type="text"><![CDATA[
BASE64URL(protected) || "." ||
BASE64URL(payload) || "." ||
BASE64URL(signature)
]]></sourcecode></figure>

<t>The verifier computes the hash value of the referenced JWS signing input and compares it with the <spanx style="verb">hashValue</spanx> parameter.</t>

<t>This model allows chained signing and indirect protection of previously signed JWS objects while preserving the original JWS signatures.</t>

<t>The <spanx style="verb">signing</spanx> parameter is optional for SIG-B.</t>

</section>
</section>


  </back>

<!-- ##markdown-source:
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
1ZfUa0G0FhWnnQlClY/PzrHloxiJMNbdK4WStanM8Fxm6DLvkVkPwBU+lIxo
jWY9qGbGvC8tumYaEmW3xU11RCa5ntyI8IdIdz4sQZVCdu3hAY4jRT+JoD88
rNEVi6ff1oIwK10AmQqZiqOQ8thkjVKcFpkKAw1nRh1lK0FbXbSKPUbkVs5T
Wlw3d1bJw2Yrzg/asa1M6AC0DhQ0EdGDvP4wacQ8EfBTu6ST93D7aSr5WtBK
8nhzgD81Z+dKqhI+JmrPWbKdOOwsmQR0SoeAkC9j+PFxA654gZ8qvwiAFqh/
8LUyOuIAi2WzwJUrSSUeIcaj5IQZiB8cao+pIbjD01DUsuiaWBYldMZZZGK2
sFzQnnmFLNeHBf/ZAvgduTQFba1kSIOhKcwL1dna5oojIGxCxy0LOqaGQmLD
vlRSBR2EKFBqOvXPpwyKxlJEJBxhRBqM1XhSZj7VMIDHO+mxTnSJtKiTBI81
/VQr+Z2/JKwvKTTHtk3vvaenVI27ZyeSDq0nGtYNhbM0KP97SQr69ceutCM3
r/lx4dGIy3OIj3p03CQ8fg8ly1vsrRJm3pD9DvlygnenUNa0FWCfUtIsiP75
M8qZeNlEXbZ8Z5zEUqtXadss+sVJAqQ4KZSYlH95eTZ/7v8IadbmxPznk2U/
UFrVeNu/srQ6OfhAJbXSR7pgutmdOgMlsgIrpsjXlsfNAxemLE5+bVTrV5Yn
bncSDCO/ZcrXMFmchF0I2bKGRSj0mls/pqLFrmrvahF3kUAjIhEGI0L89QLX
7y2iP3GVg1gtdK9UhXcDvecTWtEMggEtKh9ikSNEW3pcf6xhy6sDcwFCAmly
YZs55ZXqmDpElVR4mj+IkTF8DPLtEAhOkPJgT9OZMxBZhSVZ96sdD1m9L+n1
Vpw3QzIsCPg899z2EL3OqUj+vq229+rep1r9zFtaXVtZKS8v0OknzeLqiqYX
+aMpgn1CkBhRSgM49wziGLVcXLWsBn5o6yuoVw2Q9USQs4/IW9DzHT9I1FSJ
rJfEoy7II9SnCvKy3jKD+8X58nuBGm/AT8LafQ9IwBkgmzWOm2AgxVmMfyhp
gBLip0i4plH/uUGQP0GUGPXGhUY7GdqSHZVT6MVAUFi9IHZPAbkjI7DCaxRS
hwmtaVcy1lFoVk9LLq1Aa5unl4HMQM5BrO6nQfRsiqlmuWa6J7w/9tITAGTk
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
/trbzdXl9f3y68Hp7v5qu9/u16/2l8/2L1/v6osrZ43rV/9g482/ir74t9vL
x7d3b/Wlo+wkam/XBkvtzu3ifAnhxFUFBqle86AFq6pfvdWWTsNaWuufjv3b
i/AsSsPm4eVyLVokn70utsPaOnn+zb9pj/ybtcH1QZTd18mKH2svJ4932cnu
VXbS6F2d7O6tn+521092r33YXWs5GjT70eh+8TRqDS5rsKva4/Bzrd/rtZZ7
22z+xsnj1bKAxv59r3l4HcFpNQe99GZ3Pzu7vRy39vafTpfa5NnTtbO96+XG
wdp5IxoOr/fu4+Ob7MtFNGxcPrXHp7f3q6c7R5ti14L4wa7ru0vH/afT84v9
OBucPvfJC/1xctK4uW5+JbB/HNx9vb7fOGuvHRwkcXXx8nDFb40Oe98eDzfv
XlbXtwe7551kbf+xubm5frF9tXHaO3l7TpLtxsrG9vbO/tu4cRLt9L593Xvy
L2+D+3Fzpdpdqu5E1WDx5m2pu7qUDS9eB283B5eXG8/r8du431wneuPS5/uv
K7XF+n108qXZP28fXt8tjvZf7tLu5XCQfXs92fzaP1h6qt8/jp/vOslT+X7U
GZ+PXrqPG1+jxY1y/3TpKl0/GK630m9HRxvli0Z7rXx03v5S3R88Lq1edO5G
e8H4ovW6dn/vh2+70d7F4LbbS7OnvaOjcvuq1ote186jxRe/evFcH64drq81
XxfPd/vX1Xrn8OKqFo+/3q28rb19Sw4OL4dH38671dez3ufPiztv/kW2/3X8
OHo8vAmuT78Nu+3blfW382i1s7Tx+KV5cNnd63ajtTB9i09vRuXadXX/5Hr7
on35+fnlttNujoLsMcvICr/Fa3dPKwcvy83nz42Vu+B6+evnr0vjg5ftcWuj
fts6Xzl/qmfD3W+1t6/1y6P19GLzy2Lr+eVyndCn7dth8+ny287eTudgY3e/
8xLdfxufv3RvD5YWtzdOy8vV7SZRoilKUCIHUin0SKcqI//Dk3Xv6C1Zvrt5
Hd4f7C/6N5sjoCfks8f726NFpC3jo9P6VXTg3w53Lxb33iqVyjwO8/sc/P93
o+Ep52+8awS0hpyanSlGm+kYAeS7sSp/jERumaRT3Tm1Om15/8PgwOHh0dol
BBqCPSEY2Xe8Eu0WF571r2iJIPLlt8b185e3q/LSwWsjTFqvzwf1/upaFCzH
zaXnL5+Ho+pb83Z0e92M43k2xO+lwqVQzvietazc7V51o/3VpdfnbqdWfd5o
fPPLnzfXvvXilbB2FA6fy88rXy77yzdVsRb893+nOlbPADscs/jIKM6QOxKf
rv9SbIAaMsi54Gn9byl3bqonmby5vLi8Xl5cKy9tNBaXtlY3thbX7hkk5g1p
RcV6F+x0yA1eo9ul/maWDKvtzzf15ZXxxt7z8eDs9D5s7PfKT0fb9/X9g2Tt
+XV1lovgucCjgs4QieFlm7ySg6iSNC6BBtK0iu3zJ7Xafvi2s1NdOetWX2rb
1W5td69avT2pLh7s1L8d1GvNld2Lve2dl6vqyd7qq7jqU+JE4ZopIXDIXyz6
hDoH0SORD9pSynhysZcJXaZvlyU45pLClGgyWhk4n0yoGgVkE054uSb6Z2cq
OQtTIxBt60c6YxsQ1puAfkIoL7CV7Ch2sRyRRX0yJ6SrVeKkqC4qxTWc8ZJU
V9KrPWkDBKhtKMI9/4uJ9vzo+T17EHHN0hoFkJRl3GiGwywRnGqsIAvcdBu9
Uu8h8V8eKrwIvaqUYVbn61prFsYlo1iFio19UjEvlFWXVE3+aUY+E6XfOa8r
1k0mKXsjmfirLeKBLOIhtwjyglZvsqCvEtO2YBjyFuQvkFdYrjgCS5suZ66Y
Sl+kCIIrVeAkqlYK86rir+VlVdUITMP0/gfrYp/QkOunDCfYySxYdJHCJzX5
vfBJU6wD9Nr6n3cR9ilpOj2o/yIT/RdtR69dloZhwcgmWjAa5s3R6tzyIAVr
SDpzKfOsfR1Aky6HZp21jA4ES7l94nPA+AlNH1UPRZ7HyZHeweX+1fHXrZYU
DYPPynrdVIlZbK1cgKoNysrF5fX+ff0pe755iuJ2//Ts4nr/8WJ586h+vb3t
P53uzqbENGYQ0eRx54S0LAUZFy7r+d7F3dGX+L7We26dVi9aOzH5rPq4s7P7
vLpTvTh53XmrHm13r5Ld7snOQZdc2trhFa550kqFlDlhcUIaI4viiCl87Bwv
BVIWuDaAIBMxivla2C20Fa77KfKT9UuBnqZ45V5mXrgyujo96Gng4m5rMowI
a9Vr0mZFEJLhs5hwYnBDZpYsGY4ulGmYzINBaQ/CL/XAjqQ9K/qiJVSG4EQy
ztj3HhR940GppoJVLN1FpngMqlF5rZJjK9DKT2cssLZJrAXemoK5OBZn4y6N
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

-->

</rfc>

