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


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

<!ENTITY RFC2119 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC3161 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3161.xml">
<!ENTITY RFC5035 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5035.xml">
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC5280 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml">
<!ENTITY RFC5652 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5652.xml">
<!ENTITY RFC6931 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6931.xml">
<!ENTITY RFC7515 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7515.xml">
<!ENTITY RFC7518 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7518.xml">
<!ENTITY RFC7519 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7519.xml">
<!ENTITY RFC8610 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8610.xml">
]>


<rfc ipr="trust200902" docName="draft-santesson-svt-06" category="info" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title>Signature Validation Token</title>

    <author initials="S." surname="Santesson" fullname="Stefan Santesson">
      <organization abbrev="IDsec Solutions">IDsec Solutions AB</organization>
      <address>
        <postal>
          <street>Forskningsbyn Ideon</street>
          <city>Lund</city>
          <code>223 70</code>
          <country>SE</country>
        </postal>
        <email>sts@aaa-sec.com</email>
      </address>
    </author>
    <author initials="R." surname="Housley" fullname="Russ Housley">
      <organization abbrev="Vigil Security">Vigil Security, LLC</organization>
      <address>
        <postal>
          <street>516 Dranesville Road</street>
          <city>Herndon, VA</city>
          <code>20170</code>
          <country>US</country>
        </postal>
        <email>housley@vigilsec.com</email>
      </address>
    </author>

    <date year="2022" month="May" day="15"/>

    <area>Security</area>
    
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>Electronic signatures have a limited lifespan with respect to the time period that they
can be validated and determined to be authentic. The Signature Validation Token (SVT)
defined in this specification provides evidence that asserts the validity of an
electronic signature. The SVT is provided by a trusted authority, which asserts that
a particular signature was successfully validated according to defined procedures at
a certain time. Any future validation of that electronic signature can be satisfied by
validating the SVT without any need to also validate the original electronic signature or
the associated digital certificates. SVT supports electronic signatures in CMS, XML,
PDF and JSON documents.</t>



    </abstract>



  </front>

  <middle>


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

<t>Electronic signatures have a limited lifespan regarding when they can be validated
and determined to be authentic. Many factors make it more difficult to validate
electronic signatures over time. For example:</t>

<t><list style="symbols">
  <t>Trusted information about the validity of the certificate containing the signer's public key is not available.</t>
  <t>Trusted information about the date and time when the signature was actually created is not available.</t>
  <t>Algorithms used to create the electronic signature may no longer be considered secure at the time of validation and may therefore no longer be available in software libraries.</t>
  <t>Services necessary to validate the signature are no longer available at the time of validation.</t>
  <t>Supporting evidence such as CA certificates, OCSP responses, CRLs, or timestamps.</t>
</list></t>

<t>The challenges to validation of an electronic signature increases
over time, and eventually it may simply be impossible to verify the
signature with a sufficient level of assurance.</t>

<t>Existing standards, such as the ETSI XAdES <xref target="XADES"/> profile for XML
signatures <xref target="XMLDSIG11"/>, ETSI PAdES <xref target="PADES"/> profile for PDF signatures
<xref target="ISOPDF2"/>, and ETSI CAdES <xref target="CADES"/> profile for CMS signatures
<xref target="RFC5652"/> can be used to extend the time within which a signature can be
validated at the cost of significant complexity which involves storing and
validating significant amounts of external evidence data such as revocation data,
signature time stamps and archival time stamps.</t>

<t>The Signature Validation token (SVT) defined in this specification takes any
trusted signature validation process as an input and preserves this validation result
for the associated signature and signed document. The SVT asserts that a particular
electronic signature was successfully validated by a trusted authority according to
defined procedures at a certain date and time. Once the SVT is issued by a trusted
authority, any future validation of that electronic signature can be satisfied by validating
the SVT, without any need to also re-validate the original electronic signature.</t>

<t>As SVT is used to preserve validation result obtained through applying existing
standards for signature validation, it is complementary to and not a replacement for such standards,
including the ETSI standards for long term validation listed above.
SVT do however have the potentially positive effect that it may significantly reduce the need to
apply complex long-term validation and preservation techniques for signature validation
if an SVT is issued and applied to the signed document at an early stage where the signature
can be validated without support of large amounts of external evidence.
The use of SVT may therefore drastically reduce the complexity of re-validation of old
archived electronic signatures.</t>

<t>The SVT can be signed with private keys and algorithms that
provide confidence for a considerable time period. In fact, multiple SVTs can be used
to offer greater assurance. For example, one SVT could be produced with a large RSA
private key, a second one with a strong elliptic curve, and a third one with a quantum
safe digital signature algorithm to protect against advances in computing power and
cryptanalytic capabilities. Further, the trusted authority can add additional SVTs
in the future using fresh private keys and signatures to extend the lifetime of the,
if necessary.</t>

</section>
<section anchor="defs"><name>Definitions</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>This document use the following terms:</t>

<t><list style="symbols">
  <t>Signed Data -- The data covered by a particular electronic signature. This is typically
equivalent to the signed content of a document, and it represents the data that the
signer intended to sign. In some cases, such as in some XML signatures, the signed data
can be the collection of several data fragments each referenced by the signature. In the
case of PDF, this is the data covered by the "ByteRange" parameter in the signature
dictionary. In JWS, this is the unencoded payload data (before base64url encoding).</t>
  <t>Signed Bytes -- These are the actual bytes of data that were hashed and signed by the
digital signature algorithm. In most cases, this is not the actual Signed Data, but a
collection of signature metadata that includes references (hash) of the Signed Data as
well as information about algorithms and other data bound to a signature. In XML, this
is the canonicalized SignedInfo element. In CMS and PDF signatures, this is the
DER-encoded SignedAttributes structure. In JWS, this is the protected header and payload
data formatted according to <xref target="RFC7515"/>.</t>
</list></t>

<t>When these terms are used as defined in this section, they appear with a
capitalized first letter.</t>

</section>
<section anchor="svt"><name>Signature Validation Token</name>

<t>The Signature Validation Token (SVT) is created by a trusted service to capture
evidence of successful electronic signature verification, and then relying
parties can depend on the checking that has already taken place by the
trusted service.</t>

<section anchor="svt-function"><name>Signature Validation Token Function</name>

<t>The function of the SVT is to capture the result of electronic signature
validation using a well-defined and trustworthy signature validation process
to make it possible to verify which signature, signed document and signer
certificate that is bound to this signature validation result, without having to
re-validate the original signature or to re-use any of its associated cryptographic
algorithms. The SVT achieves this by binding the following information to a specific
electronic signature:</t>

<t><list style="symbols">
  <t>A unique identification of the electronic signature.</t>
  <t>The data and metadata signed by the electronic signature.</t>
  <t>The signer's certificate that was validated as part of electronic signature verification.</t>
  <t>The certification path that was used to validate the signer's certificate.</t>
  <t>An assertion providing evidence of that the signature was verified, the date and time the verification was performed, the procedures used to verify the electronic signature, and the outcome of the verification.</t>
  <t>An assertion providing evidence of the date and time at which the signature is known to have existed, the procedures used to validate the date and time of existence, and the outcome of the validation.</t>
</list></t>

<t>Using an SVT is equivalent to validating a signed document in a system once, and then
using that document multiple times without subsequent revalidating the electronic
signature for each usage. Such procedures are common in systems where the document is
residing in a safe and trusted environment where it is protected against modification. The
SVT allows the safe and trusted environment to expand beyond a locally controlled
environment, and the SVT allows a greater period between original electronic signature
verification and subsequent usage.</t>

<t>Using the SVT, the electronic signature verification of a document can be take place
once using a reliable trusted service, and then any relying party that is able to
depend on the verification process already performed by the trusted service. The SVT
is therefore not only a valuable tool to extend the lifetime of a signed document, but
also avoids the need for careful integration between electronic signature verification
and document usage.</t>

</section>
<section anchor="svt-syntax"><name>Signature Validation Token Syntax</name>

<t>The SVT is carried in a JSON Web Token (JWT) as defined in <xref target="RFC7519"/>.</t>

<section anchor="svt-syntax-dt"><name>Data Types</name>

<t>The contents of claims in an SVT are specified using the following data types:</t>

<t><list style="symbols">
  <t>String -- JSON Data Type of string that contains an arbitrary case sensitive string value.</t>
  <t>Base64Binary -- JSON Data Type of string that contains of Base64 encoded byte array of binary data.</t>
  <t>StringOrURI -- JSON Data Type of string that contains an arbitrary string or an URI as defined in <xref target="RFC7519"/>, which REQUIRES a value containing the colon character (":") to be a URI.</t>
  <t>URI -- JSON Data Type of string that contains an URI as defined in <xref target="RFC7519"/>.</t>
  <t>Integer -- JSON Data Type of number that contains a 32-bit signed integer value (from -2^31 to 2^31-1).</t>
  <t>Long -- JSON Data Type of number that contains a 64-bit signed integer value (from -2^63 to 2^63-1).</t>
  <t>NumericDate -- JSON Data Type of number that contains a data as defined in <xref target="RFC7519"/>, which is the number of seconds from 1970-01-01T00:00:00Z UTC until the specified UTC date/time, ignoring leap seconds.</t>
  <t>Boolean -- JSON Data Type of boolean that contains explicit value of true or false.</t>
  <t>Object&lt;Class&gt; -- A JSON object holding a claims object of a class defined in this specification (see <xref target="svt-syntax-claim"/>).</t>
  <t>Map&lt;Type&gt; -- A JSON object with name-value pairs where the value is an object of the specified Type in the notation. For example, Map&lt;String&gt; is a JSON object with name value pairs where all values are of type String.</t>
  <t>Array -- A JSON array of a specific data type as defined in this section. An array is expressed in this specification by square brackets. For example, [String] indicates an array of String values, and [Object&lt;DocHash&gt;] indicates an array of DocHash objects.</t>
  <t>Null -- A JSON null that represents an absent value. A claim with a null value is equivalent with an absent claim.</t>
</list></t>

</section>
<section anchor="svt-syntax-claim"><name>Signature Validation Token JWT Claims</name>

<t>The SVT MUST contain only JWT claims in the following list:</t>

<t><list style="symbols">
  <t>jti -- A String data type that is a "JWT ID" registered claim according to <xref target="RFC7519"/>. It is RECOMMENDED that the identifier holds a hexadecimal string representation of a 128-bit unsigned integer. A SVT MUST contain one "JWT ID" claim.</t>
  <t>iss  -- A StringOrURI data type that is an "Issuer" registered claim according to <xref target="RFC7519"/>, which is an arbitrary unique identifier of the SVT issuer. This value SHOULD have the value of an URI based on a domain owned by the issuer. A SVT MUST contain one "Issuer" claim.</t>
  <t>iat -- A NumericDate data type that is an "Issued At" registered claim according to <xref target="RFC7519"/>, which expresses the date and time when this SVT was issued. A SVT MUST contain one "Issued At" claim.</t>
  <t>aud -- A [StringOrURI] data type or a StringOrURI data type that is an "Audience" registered claim according to <xref target="RFC7519"/>. The audience claim is an array of one or more identifiers, identifying intended recipients of the SVT. Each identifier MAY identify a single entity, a group of entities or a common policy adopted by a group of entities. If only one value is provided it MAY be provided as a single StringOrURI data type value instead of as an array of values. Inclusion of the "Audience" claim in a SVT is OPTIONAL.</t>
  <t>exp -- A NumericDate data type that is an "Expiration Time" registered claim according to <xref target="RFC7519"/>, which expresses the date and time when services and responsibilities related to this SVT is no longer provided by the SVT issuer. The precise meaning of the expiration time claim is defined by local policies. See implementation note below. Inclusion of the "Expiration Time" claim in a SVT is OPTIONAL.</t>
  <t>sig_val_claims -- A Object&lt;SigValidation&gt; data type that contains signature validation claims for this SVT extending the standard registered JTW claims above. A SVT MUST contain one sig_val_claims claim.</t>
</list></t>

<t>Note: An SVT asserts that a particular validation process was undertaken at a stated
date and time. This fact never changes and never expires. However, some other aspects
of the SVT such as liability for false claims or service provision related to a specific
SVT may expire after a certain period of time, such as a service where an old SVT can be
upgraded to a new SVT signed with fresh keys and algorithms.</t>

</section>
<section anchor="sigvalidation-obj-class"><name>SigValidation Object Class</name>

<t>The sig_val_claims JWT claim uses the SigValidation object class. A SigValidation object
holds all custom claims, and a SigValidation object contains the following parameters:</t>

<t><list style="symbols">
  <t>ver -- A String data type representing the version. This parameter MUST be present, and the version in this specification indicated by the value "1.0".</t>
  <t>profile -- A StringOrURI data type representing the name of a profile that defines conventions followed for specific claims and any extension points used by the SVT issuer. This parameter MUST be present.</t>
  <t>hash_algo -- A URI data type that identifies the hash algorithm used to compute the hash values within the SVT. The URI identifier MUST be one defined in <xref target="RFC6931"/> or in the IANA registry defined by this specification. This parameter MUST be present.</t>
  <t>sig -- A [Object&lt;Signature&gt;] data type that gives information about validated electronic signatures as an array of Signature objects. If the SVT contains signature validation evidence for more than one signature, then each signature is represented by a separate Signature object. At least one Signature object MUST be present.</t>
  <t>ext -- A Map&lt;String&gt; data type that provides additional claims related to the SVT. Extension claims are added at the discretion of the SVT issuer; however, extension claims MUST follow any conventions defined in a profile of this specification (see <xref target="profiles"/>). Inclusion of this parameter is OPTIONAL.</t>
</list></t>

</section>
<section anchor="signature-obj-class"><name>Signature Claims Object Class</name>

<t>The sig parameter in the SigValidation object class uses the Signature object
class. The Signature object contains claims related to signature validation
evidence for one signature, and it contains the following parameters:</t>

<t><list style="symbols">
  <t>sig_ref -- A Object&lt;SigReference&gt; data type that contains reference information identifying the target signature. This parameter MUST be present.</t>
  <t>sig_data_ref -- A [Object&lt;SignedDataReference&gt;] data type that contains an array of references to Signed Data that was signed by the target electronic signature. At least one SignedDataReference object MUST be present.</t>
  <t>signer_cert_ref -- A Object&lt;CertReference&gt; data type that references the signer's certificate and optionally reference to a supporting certification path that was used to verify the target electronic signature. This parameter MUST be present.</t>
  <t>sig_val -- A [Object&lt;PolicyValidation&gt;] data type that contains an array of results of signature verification according to defined procedures. At least one PolicyValidation object MUST be present.</t>
  <t>time_val -- A [Object&lt;TimeValidation&gt;] data type that contains an array of time verification results that the target signature has existed at a specific date and time in the past. Inclusion of this parameter is OPTIONAL.</t>
  <t>ext -- A MAP&lt;String&gt; data type that provides additional claims related to the target signature. Extension claims are added at the discretion of the SVT Issuer; however, extension claims MUST follow any conventions defined in a profile of this specification (see <xref target="profiles"/>). Inclusion of this parameter is OPTIONAL.</t>
</list></t>

</section>
<section anchor="sigreference-obj-class"><name>SigReference Claims Object Class</name>

<t>The sig_ref parameter in the Signature object class uses the SigReference object
class. The SigReference object provides information used to match the Signature
claims object to a specific target electronic signature and to verify the integrity
of the target signature value and Signed Bytes, and it contains the following parameters:</t>

<t><list style="symbols">
  <t>id -- A String data type that contains an identifier assigned to the target signature. Inclusion of this parameter is OPTIONAL.</t>
  <t>sig_hash -- A Base64Binary data type that contains a hash value of the target electronic signature value. This parameter MUST be present.</t>
  <t>sb_hash -- A Base64Binary data type that contains a hash value of the Signed Bytes of the target electronic signature. This parameter MUST be present.</t>
</list></t>

</section>
<section anchor="signeddatareference-obj-class"><name>SignedDataReference Claims Object Class</name>

<t>The sig_data_ref parameter in the Signature object class uses the SignedDataReference object
class. The SignedDataReference object provides information used to verify the target electronic
signature references to Signed Data as well as to verify the integrity of all data that
is signed by the target signature, and it contains the following parameters:</t>

<t><list style="symbols">
  <t>ref -- A String data type that contains a reference identifier for the data or data fragment covered by the target electronic signature. This parameter MUST be present.</t>
  <t>hash -- A Base64Binary data type that contains the hash value for the data covered by the target electronic signature. This parameter MUST be present.</t>
</list></t>

</section>
<section anchor="policyval-obj-class"><name>PolicyValidation Claims Object Class</name>

<t>The sig_val parameter in the Signature object class uses the PolicyValidation object
class. The PolicyValidation object provides information about the result of a validation
process according to a spefific policy, and it contains the following parameters:</t>

<t><list style="symbols">
  <t>pol -- A StringOrURI data type that contains the identifier of the policy governing the electronic signature verification process. This parameter MUST be present.</t>
  <t>res -- A String data type that contains the result of the electronic signature verification process. The value MUST be one of "PASSED", "FAILED" or "INDETERMINATE" as defined by <xref target="ETSI319102-1"/>. This parameter MUST be present.</t>
  <t>msg -- A String data type that contains a message describing the result. Inclusion of this parameter is OPTIONAL.</t>
  <t>ext -- A MAP&lt;String&gt; data type that provides additional claims related to the target signature. Extension claims are added at the discretion of the SVT Issuer; however, extension claims MUST follow any conventions defined in a profile of this specification (see <xref target="profiles"/>). Inclusion of this parameter is OPTIONAL.</t>
</list></t>

</section>
<section anchor="timever-obj-class"><name>TimeValidation Claims Object Class</name>

<t>The time_val parameter in the Signature object class uses the TimeValidation object
class. The TimeValidation claims object provides information about the result of
validating evidence of time asserting that the target signature existed at a particular
date and time in the past. Evidence of time is typically a timestamp according to <xref target="RFC3161"/> but other types of evidence may be used such as a previously issued SVT for this signature. The TimeValidation claims object contains the following parameters:</t>

<t><list style="symbols">
  <t>time -- A NumericDate data type that contains the verified time. This parameter MUST be present.</t>
  <t>type -- A StringOrURI data type that contains an identifier of the type of evidence of time. This parameter MUST be present.</t>
  <t>iss -- A StringOrURI data type that contains an identifier of the entity that issued the evidence of time. This parameter MUST be present.</t>
  <t>id -- A String data type that contains an unique identifier assigned to the evidence of time.  Inclusion of this parameter is OPTIONAL.</t>
  <t>hash -- A Base64Binary data type that contains the hash value of the validated evidence of time. Inclusion of this parameter is OPTIONAL.</t>
  <t>val -- A [Object&lt;PolicyValidation&gt;] data type that contains an array of results of the time evidence validation according to defined validation procedures. Inclusion of this parameter is OPTIONAL.</t>
  <t>ext -- A MAP&lt;String&gt; data type that provides additional claims related to the target signature. Extension claims are added at the discretion of the SVT Issuer; however, extension claims MUST follow any conventions defined in a profile of this specification (see <xref target="profiles"/>). Inclusion of this parameter is OPTIONAL.</t>
</list></t>

</section>
<section anchor="certref-obj-class"><name>CertReference Claims Object Class</name>

<t>The signer_cert_ref parameter in the Signature object class uses the CertReference object
class. The CertReference object references a single X.509 certificate or a X.509
certification path, either by providing the certificate data or by providing hash
references for certificates that can be located in the target electronic signature, and
it contains the following parameters:</t>

<t><list style="symbols">
  <t>type -- A StringOrURI data type that contains an identifier of the type of reference. The type identifier MUST be one of the identifiers defined below, an identifier specified by the selected profile, or a URI identifier. This parameter MUST be present.</t>
  <t>ref -- A [String] data type that contains an array of string parameters according to conventions defined by the type identifier. At least one parameter MUST be present.</t>
</list></t>

<t>The following type identifiers are defined:</t>

<t><list style="symbols">
  <t>chain -- The ref contains an array of Base64 encoded X.509 certificates <xref target="RFC5280"/>. The certificates MUST be provided in the order starting with the end entity certificate. Any following certificate must be able to validate the signature on the previous certificate in the array.</t>
  <t>chain_hash -- The ref contains an array of one or more Base64 encoded hash values where each hash value is a hash over a X.509 certificate <xref target="RFC5280"/> used to validate the signature.  The certificates MUST be provided in the order starting with the end entity certificate.  Any following certificate must be able to validate the signature on the previous certificate in the array. This option MUST NOT be used unless all hashed certificates are present in the target electronic signature.</t>
</list></t>

<t>Note: All certificates referenced using the identifiers above are X.509 certificates.
Profiles of this specification MAY define alternative types of public key containers;
however, a major function of these referenced certificates is not just to reference
the public key, but also to provide the subject name of the signer. It is therefore
important for the full function of an SVT that the referenced public key container also
provides the means to identify of the signer.</t>

</section>
<section anchor="svt-jose-header"><name>SVT JOSE Header</name>

<t>The SVT JWT MUST contain the following JOSE header parameters in accordance with
Section 5 of <xref target="RFC7519"/>:</t>

<t><list style="symbols">
  <t>typ -- This parameter MUST have the string value "JWT" (upper case).</t>
  <t>alg -- This parameter identifies the algorithm used to sign the SVT JWT. The algorithm identifier MUST be specified in <xref target="RFC7518"/> or the IANA JSON Web Signature and Encryption Algorithms Registry [ add a ref ]. The specified signature hash algorithm MUST be identical to the hash algorithm specified in the hash_algo parameter of the SigValidation object within the sig_val_claims claim.</t>
</list></t>

<t>The SVT header MUST contain a public key or a reference to a public key used to verify the signature on the SVT in accordance with <xref target="RFC7515"/>. Each profile, as discussed in <xref target="profiles"/>, MUST define the requirements for how the key or key reference is included in the header.</t>

</section>
</section>
</section>
<section anchor="profiles"><name>Profiles</name>

<t>Each signed document and signature type will have to define the precise content and
use of several claims in the SVT.</t>

<t>Each profile MUST as a minimum define:</t>

<t><list style="symbols">
  <t>The identifier of the profile.</t>
  <t>How to reference the Signed Data content of the signed document.</t>
  <t>How to reference to the target electronic signature and the Signed Bytes of the signature.</t>
  <t>How to reference certificates supporting each electronic siganture.</t>
  <t>How to include public keys or references to public keys in the SVT.</t>
  <t>Whether each electronic signature is supported by a single SVT, or whether one SVT may support multiple electronic signatures of the same document.</t>
</list></t>

<t>A profile MAY also define:</t>

<t><list style="symbols">
  <t>Explicit information on how to perform signature validation based on an SVT.</t>
  <t>How to attach an SVT to an electronic signature or signed document.</t>
</list></t>

<section anchor="defined-profiles"><name>Defined Profiles</name>

<t>The following profiles are defined in Appendixes of this document:</t>

<t><list style="symbols">
  <t><xref target="appendix-xml-profile"/>: XML Profile</t>
  <t><xref target="appendix-pdf-profile"/>: PDF Profile</t>
  <t><xref target="appendix-jws-profile"/>: JWS Profile</t>
</list></t>

<t>Other documents MAY define other profiles that MAY complement, ammend or supersede these profiles.</t>

</section>
</section>
<section anchor="signature-verification-with-a-svt"><name>Signature Verification with a SVT</name>

<t>Signature verification based on an a SVT MUST follow these steps:</t>

<t><list style="numbers">
  <t>Locate all available SVTs available for the signed document that are relevant for the target electronic signature.</t>
  <t>Select the most recent SVT that can be successfully validated and meets the requirement of the relying party.</t>
  <t>Verify the integrity of the signature and the Signed Bytes of the target electronic signature using the sig_ref claim.</t>
  <t>Verify that the Signed Data reference in the original electronic signature matches the reference values in the sig_data_ref claim.</t>
  <t>Verify the integrity of referenced Signed Data using provided hash values in the sig_data_ref claim.</t>
  <t>Obtain the verified certificates supporting the asserted electronic signature verification through the signer_cert_ref claim.</t>
  <t>Verify that signature validation policy results satisfy the requirements of the relying party.</t>
  <t>Verify that verified time results satisfy the context for the use of the signed document.</t>
</list></t>

<t>After successfully performing these steps, signature validity is established as well as
the trusted signer certificate binding the identity of the signer to the electronic
signature.</t>

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

<section anchor="claim-names-reg"><name>Claim Names Registration</name>

<t>This section registers the "sig_val_claims" claim name in the IANA "JSON Web Token Claims" registry established by Section 10.1 in <xref target="RFC7519"/>.</t>

<section anchor="clname-reg-contents"><name>Registry Contents</name>

<t><list style="symbols">
  <t>Claim Name: "sig_val_claims"</t>
  <t>Claim Description: Signature Validation Token</t>
  <t>Change Controller: IESG</t>
  <t>Specification Document(s): <xref target="sigvalidation-obj-class"/> of {this document}</t>
</list></t>

<t>NOTE to RFC editor: Please replace {this document} with its assigned RFC number.</t>

</section>
</section>
<section anchor="iana-header-params"><name>Header Parameter Names Registration</name>

<t>This section registers the "svt" Header Parameter in the IANA "JSON Web Signature and Encryption Header Parameters" registry established by <xref target="RFC7515"/>.</t>

<section anchor="iana-header-params-reg"><name>Registry Contents</name>

<t><list style="symbols">
  <t>Header Parameter Name: "svt"</t>
  <t>Header Parameter Description: Signature Validation Token</t>
  <t>Header Parameter Usage Location(s): JWS</t>
  <t>Change Controller: IESG</t>
  <t>Specification Document(s): <xref target="svt-header"/> of {this document}</t>
</list></t>

<t>NOTE to RFC editor: Please replace {this document} with its assigned RFC number.</t>

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

<section anchor="seccon-lvl-of-reliance"><name>Level of reliance</name>

<t>An SVT allows a signature verifier to still validate the original signature using
the original signature data and to use the information in the SVT selectively to
either just confirm the validity and integrity of the original data, such as confirming the integrity of signed data or the validity of the signer's certificate etc.</t>

<t>Another way to use an SVT is to completely rely on the validation conclusion provided
by the SVT and to omit re-validation of the original signature value and original
certificate status checking data.</t>

<t>This choice is a decision made by the verifier according to its own policy and risk assessment.</t>

<t>However, even when relying on the SVT validation conclusion of an SVT it is vital to still verify that
the present SVT is correctly associated with the document and signature that is being validated by
validating the hashed reference data in the SVT of the signature, signing certificate chain,
signed data and the signed bytes.</t>

</section>
<section anchor="seccon-aging-algos"><name>Aging algorithms</name>

<t>Even if the SVT provides protection against algorithms becoming weakened or broken over time, this protection is only valid for as long as the algorithms used to sign the SVT are still considered secure. It is advisable to re-issue SVT in cases where an algorithm protecting the SVT is getting close to its end of life.</t>

<t>One way to increase the resistance of algorithms becoming insecure, is to issue multiple SVT for the same signature with different algorithms and key lengths where one algorithm could still be secure even if the corresponding algorithm used in the alternative SVT is broken.</t>

</section>
</section>


  </middle>

  <back>


    <references title='Normative References'>

&RFC2119;
&RFC3161;
&RFC5035;
&RFC8174;
&RFC5280;
&RFC5652;
&RFC6931;
&RFC7515;
&RFC7518;
&RFC7519;
<reference anchor="ETSI319102-1" >
  <front>
    <title>ETSI - Electronic Signatures and Infrastructures (ESI); Procedures for Creation and Validation of AdES Digital Signatures; Part 1: Creation and Validation</title>
    <author >
      <organization>ETSI</organization>
    </author>
    <date year="2016" month="May"/>
  </front>
  <seriesInfo name="ETSI" value="EN 319 102-1 v1.1.1"/>
</reference>
<reference anchor="XMLDSIG11" >
  <front>
    <title>XML Signature Syntax and Processing Version 1.1</title>
    <author initials="D." surname="Eastlake" fullname="Donald Eastlake">
      <organization></organization>
    </author>
    <author initials="J." surname="Reagle" fullname="Joseph Reagle">
      <organization></organization>
    </author>
    <author initials="D." surname="Solo" fullname="David Solo">
      <organization></organization>
    </author>
    <author initials="F." surname="Hirsch" fullname="Frederick Hirsch">
      <organization></organization>
    </author>
    <author initials="M." surname="Nystrom" fullname="Magnus Nystrom">
      <organization></organization>
    </author>
    <author initials="T." surname="Roessler" fullname="Thomas Roessler">
      <organization></organization>
    </author>
    <author initials="K." surname="Yiu" fullname="Kelvin Yiu">
      <organization></organization>
    </author>
    <date year="2013" month="April" day="11"/>
  </front>
  <seriesInfo name="W3C" value="Proposed Recommendation"/>
</reference>
<reference anchor="ISOPDF2" >
  <front>
    <title>Document management -- Portable document format -- Part 2: PDF 2.0</title>
    <author >
      <organization>ISO</organization>
    </author>
    <date year="2017" month="July"/>
  </front>
  <seriesInfo name="ISO" value="32000-2"/>
</reference>
<reference anchor="XADES" >
  <front>
    <title>Electronic Signatures and Infrastructures (ESI); XAdES digital signatures; Part 1: Building blocks and XAdES baseline signatures</title>
    <author >
      <organization>ETSI</organization>
    </author>
    <date year="2016" month="April"/>
  </front>
  <seriesInfo name="ETSI" value="EN 319 132-1 v1.1.1"/>
</reference>
<reference anchor="PADES" >
  <front>
    <title>Electronic Signatures and Infrastructures (ESI); PAdES digital signatures; Part 1: Building blocks and PAdES baseline signatures</title>
    <author >
      <organization>ETSI</organization>
    </author>
    <date year="2016" month="April"/>
  </front>
  <seriesInfo name="ETSI" value="EN 319 142-1 v1.1.1"/>
</reference>
<reference anchor="CADES" >
  <front>
    <title>Electronic Signatures and Infrastructures (ESI); CAdES digital signatures; Part 1: Building blocks and CAdES baseline signatures</title>
    <author >
      <organization>ETSI</organization>
    </author>
    <date year="2016" month="April"/>
  </front>
  <seriesInfo name="ETSI" value="EN 319 122-1 v1.1.1"/>
</reference>


    </references>

    <references title='Informative References'>

&RFC8610;


    </references>


<section anchor="appendix-xml-profile"><name>Appendix: XML signature profile</name>

<t>This appendix defines a profile for implementing SVT with a signed XML document, and defines the following aspects of SVT usage:</t>

<t><list style="symbols">
  <t>How to include reference data related to XML signatures and XML documents in an SVT.</t>
  <t>How to add an SVT token to a XML signature.</t>
</list></t>

<t>XML documents can have any number of signature elements, signing an arbitrary number of fragments of XML documents. The actual signature element may be included in the signed XML document (enveloped), include the signed data (enveloping) or may be separate from the signed content (detached).</t>

<t>To provide a generic solution for any type of XML signature an SVT is added to each XML signature element within the XML signature &lt;ds:Object&gt; element.</t>

<section anchor="notation"><name>Notation</name>

<section anchor="ref-to-xml-elements"><name>References to XML Elements from XML Schemas</name>

<t>When referring to elements from the W3C XML Signature namespace
(http://www.w3.org/2000/09/xmldsig#) the following syntax is used:</t>

<t><list style="symbols">
  <t>&lt;ds:Signature&gt;</t>
</list></t>

<t>When referring to elements from the ETSI XAdES XML Signature namespace
(http://uri.etsi.org/01903/v1.3.2#) the following syntax is used:</t>

<t><list style="symbols">
  <t>&lt;xades:CertDigest&gt;</t>
</list></t>

<t>When referring to elements defined in this specification
(http://id.swedenconnect.se/svt/1.0/sig-prop/ns) the following syntax is used:</t>

<t><list style="symbols">
  <t>&lt;svt:Element&gt;</t>
</list></t>

</section>
</section>
<section anchor="svt-in-xml"><name>SVT in XML Documents</name>

<t>When SVT is provided for XML signatures then one SVT MUST be provided for each XML signature.</t>

<t>An SVT embedded within the XML signature element MUST be placed in a  &lt;svt:SignatureValidationToken&gt; element as defined in <xref target="signaturevalidationtoken-signature-property"/>.</t>

<section anchor="signaturevalidationtoken-signature-property"><name>SignatureValidationToken Signature Property</name>

<t>The &lt;svt:SignatureValidationToken&gt; element MUST be placed in a &lt;ds:SignatureProperty&gt; element in accordance with <xref target="XMLDSIG11"/>. The &lt;ds:SignatureProperty&gt; element MUST be placed inside a &lt;ds:SignatureProperties&gt; element inside a &lt;ds:Object&gt; element inside a &lt;ds:Signature&gt; element.</t>

<t>Note: <xref target="XMLDSIG11"/> requires the Target attribute to be present in &lt;ds:SignatureProperty&gt;, referencing the signature targeted by this signature property. If an SVT is added to a signature that do not have an Id attribute, implementations SHOULD add an Id attribute to the &lt;ds:Signature&gt; element and reference that Id in the Target attribute. This Id attribute and Target attribute value matching is required by the <xref target="XMLDSIG11"/> standard, but it is redundant in the context of SVT validation as the SVT already contains information that uniquely identifies the target signature. Validation applications SHOULD not reject an SVT token because of Id and Target attribute mismatch, and MUST rely on matching against signature using signed information in the SVT itself.</t>

<t>The &lt;svt:SignatureValidationToken&gt; element is defined by the following XML Schema:</t>

<figure><artwork><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified"
    targetNamespace="http://id.swedenconnect.se/svt/1.0/sig-prop/ns"
    xmlns:svt="http://id.swedenconnect.se/svt/1.0/sig-prop/ns">

  <xs:element name="SignatureValidationToken"
      type="svt:SignatureValidationTokenType" />

  <xs:complexType name="SignatureValidationTokenType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

</xs:schema>
]]></artwork></figure>

<t>The SVT token MUST be included as a string representation of the SVT JWT. Note that this is the string representation of the JWT without further encoding. The SVT MUST NOT be represented by the Base64 encoded bytes of the JWT string.</t>

<t>Example:</t>

<figure><artwork><![CDATA[
<ds:Signature Id="MySignatureId">
  ...
  <ds:Object>
    <ds:SignatureProperties>
      <ds:SignatureProperty Target="#MySignatureId">
        <svt:SignatureValidationToken>
              eyJ0eXAiOiJKV1QiLCJhb...2aNZ
        </svt:SignatureValidationToken>
      </ds:SignatureProperty>
    </ds:SignatureProperties>
  </ds:Object>
</ds:Signature>
]]></artwork></figure>

</section>
<section anchor="xml-multiple-svt-tokens"><name>Multiple SVT in an XML signature</name>

<t>If a new SVT is stored in a signature which already contains a previously issued SVT, implementations can choose to either replace the existing SVT or to store the new SVT in addition to the existing SVT.</t>

<t>If the new SVT is stored in addition to the old SVT, it SHOULD be stored in a new &lt;ds:SignatureProperty&gt; element inside the existing &lt;ds:SignatureProperties&gt; element where the old SVT is located.</t>

<t>For interoperability robustness, signature validation applications MUST be able to handle signatures where the new SVT is located in a new &lt;ds:Object&gt; element.</t>

</section>
</section>
<section anchor="xml-svt-claims"><name>XML signature SVT Claims</name>

<section anchor="xml-profile-identifier"><name>XML Profile Identifier</name>

<t>When this profile is used the SigValidation object MUST contain a "profile" claim with the value "XML".</t>

</section>
<section anchor="xml-signature-reference-data"><name>XML Signature Reference Data</name>

<t>The SVT Signature object MUST contain a "sig_ref" claim (SigReference object) with the following elements:</t>

<t><list style="symbols">
  <t>"id" -- The Id-attribute of the XML signature, if present.</t>
  <t>"sig_hash" -- The hash over the signature value bytes.</t>
  <t>"sb_hash" -- The hash over the canonicalized &lt;ds:SignedInfo&gt; element (the bytes the XML signature algorithm has signed to generated the signature value).</t>
</list></t>

</section>
<section anchor="xml-signed-data-reference"><name>XML Signed Data Reference Data</name>

<t>The SVT Signature object MUST contain one instance of the "sig_data" claim (SignedData object) for each &lt;ds:Reference&gt; element in the &lt;ds:SignedInfo&gt; element. The "sig_data" claim MUST contain the following elements:</t>

<t><list style="symbols">
  <t>"ref" -- The value of the URI attribute of the corresponding &lt;ds:Reference&gt; element.</t>
  <t>"hash" -- The hash of all bytes identified corresponding &lt;ds:Reference&gt; element after applying all identified canonicalization and transformation algorithms. These are the same bytes that is hashed by the hash value in the &lt;ds:DigestValue&gt; element inside the &lt;ds:Reference&gt; element.</t>
</list></t>

</section>
<section anchor="xml-signer-certificate-references"><name>XML Signer Certificate References</name>

<t>The SVT Signature object MUST contain a "signer_cert_ref" claim (CertReference object). The "type" parameter of the "signer_cert_ref" claim MUST be either "chain" or "chain_hash".</t>

<t><list style="symbols">
  <t>The "chain" type MUST be used when signature validation was performed using one or more certificates where some or all of the certificates in the chain are not present in the target signature.</t>
  <t>The "chain_hash" type MUST be used when signature validation was performed using one or more certificates where all of the certificates are present in the target signature.</t>
</list></t>

</section>
</section>
<section anchor="xml-jose-header"><name>JOSE Header</name>

<section anchor="xml-svt-signing-key-reference"><name>SVT Signing Key Reference</name>

<t>The SVT JOSE header for XML signatures must contain one of the following header parameters in accordance with <xref target="RFC7515"/>, for storing a reference to the public key used to verify the signature on the SVT:</t>

<t><list style="symbols">
  <t>"x5c" -- Holds an X.509 certificate <xref target="RFC5280"/> or a chain of certificates. The certificate holding the public key that verifies the signature on the SVT MUST be the first certificate in the chain.</t>
  <t>"kid" -- A key identifier holding the Base64 encoded hash value of the certificate that can verify the signature on the SVT. The hash algorithm MUST be the same hash algorithm used when signing the SVT as specified by the <spanx style="verb">alg</spanx> header parameter.</t>
</list></t>

</section>
</section>
</section>
<section anchor="appendix-pdf-profile"><name>Appendix: PDF signature profile</name>

<t>This appendix defines a profile for implementing SVT with a signed PDF document, and defines the following aspects of SVT usage:</t>

<t><list style="symbols">
  <t>How to include reference data related to PDF signatures and PDF documents in an SVT.</t>
  <t>How to add an SVT token to a PDF document.</t>
</list></t>

<t>PDF document signatures are added as incremental updates to the signed PDF document and signs all data of the PDF document up until the current signature. When more than one signature is added to a PDF document the previous signature is signed by the next signature and can not be updated with additional data after this event.</t>

<t>To minimize the impact on PDF documents with multiple signatures and to stay backwards compatible with PDF software that do not understand SVT, PDF documents add one SVT token for all signatures of the PDF as an extension to a document timestamp added to the signed PDF as an incremental update. This SVT covers all signatures of the signed PDF.</t>

<section anchor="svt-in-pdf"><name>SVT in PDF Documents</name>

<t>The SVT for a signed PDF document MAY provide signature validation information about any of the present signatures in the PDF. The SVT MUST contain a separate "sig" claim (Signature object) for each signature on the PDF that is covered by the SVT.</t>

<t>An SVT added to a signed PDF document MUST be added to a document timestamp accordance with ISO 32000-2:2017 <xref target="ISOPDF2"/>.</t>

<t>The document timestamp contains an <xref target="RFC3161"/> timestamp token (TSTInfo) in EncapsulatedContentInfo of the CMS signature. The SVT MUST be added to the timestamp token (TSTInfo) as an Extension object as defined in  <xref target="svt-extension-to-timestamps"/>.</t>

<section anchor="svt-extension-to-timestamps"><name>SVT Extension to Timestamp Tokens</name>

<t>The SVT extension is an Extension suitable to be included in TSTInfo as defined by <xref target="RFC3161"/>.</t>

<t>The SVT extension is identified by the Object Identifier (OID) 1.2.752.201.5.2</t>

<t>Editors note: This is the current used OID. Consider assigning an IETF extension OID.</t>

<t>This extension data (OCTET STRING) holds the bytes of SVT JWT, represented as a UTF-8 encoded string.</t>

<t>This extension MUST NOT be marked critical.</t>

<t>Note: Extensions in timestamp tokens according to <xref target="RFC3161"/> are imported from the definition of the X.509 certificate extensions defined in <xref target="RFC5280"/>.</t>

</section>
</section>
<section anchor="pdf-svt-claims"><name>PDF signature SVT Claims</name>

<section anchor="pdf-profile-identifier"><name>PDF Profile Identifier</name>

<t>When this profile is used the SigValidation object MUST contain a "profile" claim with the value "PDF".</t>

</section>
<section anchor="pdf-signature-reference-data"><name>PDF Signature Reference Data</name>

<t>The SVT Signature object MUST contain a "sig_ref" claim (SigReference object) with the following elements:</t>

<t><list style="symbols">
  <t>"id" -- Absent or a Null value.</t>
  <t>"sig_hash" -- The hash over the signature value bytes.</t>
  <t>"sb_hash" -- The hash over the DER encoded SignedAttributes in SignerInfo.</t>
</list></t>

</section>
<section anchor="pdf-signed-data-reference"><name>PDF Signed Data Reference Data</name>

<t>The SVT Signature object MUST contain one instance of the "sig_data" claim (SignedData object) with the following elements:</t>

<t><list style="symbols">
  <t>"ref" -- The string representation of the ByteRange value of the PDF signature dictionary of the target signature. This is a sequence of integers separated by space where each integer pair specifies the start index and length of a byte range.</t>
  <t>"hash" -- The hash of all bytes identified by the ByteRange value. This is the concatenation of all byte ranges identified by the ByteRange value.</t>
</list></t>

</section>
<section anchor="pdf-signer-certificate-references"><name>PDF Signer Certificate References</name>

<t>The SVT Signature object MUST contain a "signer_cert_ref" claim (CertReference object). The "type" parameter of the "signer_cert_ref" claim MUST be either "chain" or "chain_hash".</t>

<t><list style="symbols">
  <t>The "chain" type MUST be used when signature validation was performed using one or more certificates where some or all of the certificates in the chain are not present in the target signature.</t>
  <t>The "chain_hash" type MUST be used when signature validation was performed using one or more certificates where all of the certificates are present in the target signature.</t>
</list></t>

<t>Note: The referenced signer certificate MUST match any certificates referenced using ESSCertID or ESSCertIDv2 from <xref target="RFC5035"/>.</t>

</section>
</section>
<section anchor="pdf-jose-header"><name>JOSE Header</name>

<section anchor="pdf-svt-signing-key-reference"><name>SVT Signing Key Reference</name>

<t>The SVT JOSE header must contain one of the following header parameters in accordance with <xref target="RFC7515"/>, for storing a reference to the public key used to verify the signature on the SVT:</t>

<t><list style="symbols">
  <t>"x5c" -- Holds an X.509 certificate <xref target="RFC5280"/> or a chain of certificates. The certificate holding the public key that verifies the signature on the SVT MUST be the first certificate in the chain.</t>
  <t>"kid" -- A key identifier holding the Base64 encoded hash value of the certificate that can verify the signature on the SVT. The hash algorithm MUST be the same hash algorithm used when signing the SVT as specified by the <spanx style="verb">alg</spanx> header parameter. The referenced certificate SHOULD be the same certificate that was used to sign the document timestamp that contains the SVT.</t>
</list></t>

</section>
</section>
</section>
<section anchor="appendix-jws-profile"><name>Appendix: JWS Profile</name>

<t>This appendix defines a profile for implementing SVT with a JWS signed payload according to <xref target="RFC7515"/>, and defines the following aspects of SVT usage:</t>

<t><list style="symbols">
  <t>How to include reference data related to JWS signatures in an SVT.</t>
  <t>How to add an SVT token to JWS signatures.</t>
</list></t>

<t>A JWS may have one or more signatures depending on its serialization format, signing the same payload data. A JWS either contains the data to be signed (enveloping) or may sign any externally associated payload data (detached).</t>

<t>To provide a generic solution for JWS, an SVT is added to each present signature as a JWS Unprotected Header. If a JWS includes multiple signatures, then each signature includes its own SVT.</t>

<section anchor="svt-in-jws"><name>SVT in JWS</name>

<t>An SVT token MAY be added to any signature of a JWS to support validation of that signature. If more than one signature is present then each present SVT MUST provide information exclusively related to one associated signature and MUST NOT include information about any other signature in the JWS.</t>

<t>Each SVT is stored in its associated signature's "svt" header as defined in <xref target="svt-header"/>.</t>

<section anchor="svt-header"><name>"svt" Header Parameter</name>

<t>The "svt" (Signature Validation Token) Header Parameter is used to contain an array of SVT tokens to support validation of the associated signature. Each SVT token in the array has the format of a JWT as defined in <xref target="RFC7519"/> and is stored using its natural string representation without further wrapping or encoding.</t>

<t>The "svt" Header Parameter, when used, MUST be included as a JWS Unprotected Header.</t>

<t>Note: JWS Unprotected Header is not supported with JWS Compact Serialization. A consequence of adding an SVT token to a JWS is therefore that JWS JSON Serialization MUST be used, either in the form of general JWS JSON Serialization (for one or more signatures) or in the form of flattened JWS JSON Serialization (optionally used when only one signature is present in the JWS).</t>

</section>
<section anchor="jws-multiple-svt-tokens"><name>Multiple SVT in a JWS signature</name>

<t>If a new SVT is stored in a signature which already contains a previously issued SVT, implementations can choose to either replace the existing SVT or to store the new SVT in addition to the existing SVT.</t>

<t>If a JWS signature already contains an array of SVTs and a new SVT is to be added, then the new SVT MUST be added to the array of SVT tokens in the existing "svt" Header Parameter.</t>

</section>
</section>
<section anchor="jws-svt-claims"><name>JWS signature SVT Claims</name>

<section anchor="jws-profile-identifier"><name>JWS Profile Identifier</name>

<t>When this profile is used the SigValidation object MUST contain a "profile" claim with the value "JWS".</t>

</section>
<section anchor="jws-signature-reference-data"><name>JWS Signature Reference Data</name>

<t>The SVT Signature object MUST contain a "sig_ref" claim (SigReference object) with the following elements:</t>

<t><list style="symbols">
  <t>"sig_hash" -- The hash over the associated signature value (the bytes of the base64url-decoded signature parameter).</t>
  <t>"sb_hash" -- The hash over all bytes signed by the associated signature (the JWS Signing Input according to <xref target="RFC7515"/>).</t>
</list></t>

</section>
<section anchor="jws-signed-data-reference"><name>JWS Signed Data Reference Data</name>

<t>The SVT Signature object MUST contain one instance of the "sig_data" claim (SignedData object) with the following elements:</t>

<t><list style="symbols">
  <t>"ref" -- This parameter MUST hold one of the following thee possible values.  <list style="numbers">
      <t>The explicit string value "payload" if the signed JWS Payload is embedded in a "payload" member of the JWS.</t>
      <t>The explicit string value "detached" if the JWS signs detached payload data without explicit reference.</t>
      <t>A URI that can be used to identify or fetch the detached signed data. The means to determine the URI for the detached signed data is outside the scope of this specification.</t>
    </list></t>
  <t>"hash" -- The hash over the JWS Payload data bytes (not its base64url-encoded string representation).</t>
</list></t>

</section>
<section anchor="jws-signer-certificate-references"><name>JWS Signer Certificate References</name>

<t>The SVT Signature object MUST contain a "signer_cert_ref" claim (CertReference object). The "type" parameter of the "signer_cert_ref" claim MUST be either "chain" or "chain_hash".</t>

<t><list style="symbols">
  <t>The "chain" type MUST be used when signature validation was performed using one or more certificates where some or all of the certificates in the chain are not present in the target signature.</t>
  <t>The "chain_hash" type MUST be used when signature validation was performed using one or more certificates where all of the certificates are present in the target signature JOSE header using the "x5c" Header Parameter.</t>
</list></t>

</section>
</section>
<section anchor="jws-svt-jose-header"><name>SVT JOSE Header</name>

<section anchor="jws-svt-signing-key-reference"><name>SVT Signing Key Reference</name>

<t>The SVT JOSE header must contain one of the following header parameters in accordance with <xref target="RFC7515"/>, for storing a reference to the public key used to verify the signature on the SVT:</t>

<t><list style="symbols">
  <t>"x5c" -- Holds an X.509 certificate <xref target="RFC5280"/> or a chain of certificates. The certificate holding the public key that verifies the signature on the SVT MUST be the first certificate in the chain.</t>
  <t>"kid" -- A key identifier holding the Base64 encoded hash value of the certificate that can verify the signature on the SVT. The hash algorithm MUST be the same hash algorithm used when signing the SVT as specified by the <spanx style="verb">alg</spanx> header parameter.</t>
</list></t>

</section>
</section>
</section>
<section anchor="schema-appendix"><name>Appendix: Schemas</name>

<section anchor="concise-data-definition-language-cddl"><name>Concise Data Definition Language (CDDL)</name>

<t>The following informative CDDL <xref target="RFC8610"/> express the structure of an SVT token:</t>

<figure><artwork><![CDATA[
svt = {
  jti: text
  iss: text
  iat: uint
  ? aud: text / [* text]
  ? exp: uint
  sig_val_claims: SigValClaims
}

SigValClaims = {
  ver: text
  profile: text
  hash_algo: text
  sig: [+ Signature]
  ? ext: Extension
}

Signature = {
  sig_ref: SigReference
  sig_data_ref: [+ SignedDataReference]
  signer_cert_ref: CertReference
  sig_val: [+ PolicyValidation]
  ? time_val: [* TimeValidation]
  ? ext: Extension
}

SigReference = {
  ? id: text / null
  sig_hash: binary-value
  sb_hash: binary-value
}

SignedDataReference = {
  ref: text
  hash: binary-value
}


CertReference = {
  type: "chain" / "chain_hash"
  ref: [+ text]
}

PolicyValidation = {
  pol: text
  res: "PASSED" / "FAILED" / "INDETERMINATE"
  ? msg: text / null
  ? ext: Extension
}

TimeValidation = {
  "time": uint
  type: text
  iss: text
  ? id: text / null
  ? hash: binary-value / null
  ? val: [* PolicyValidation]
  ? ext: Extension
}


Extension = {
  + text => text
} / null

binary-value = text             ; base64 classic with padding
]]></artwork></figure>

</section>
<section anchor="json-schema"><name>JSON Schema</name>

<t>The following informative JSON schema describes the syntax of the SVT token payload.</t>

<figure><artwork><![CDATA[
{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "title": "Signature Validation Token JSON Schema",
    "description": "Schema defining the payload format for SVT",
    "type": "object",
    "required": [
        "jti",
        "iss",
        "iat",
        "sig_val_claims"
    ],
    "properties": {
        "jti": {
            "description": "JWT ID",
            "type": "string"
        },
        "iss": {
            "description": "Issuer",
            "type": "string"
        },
        "iat": {
            "description": "Issued At",
            "type": "integer"
        },
        "aud": {
            "description": "Audience",
            "type": [
                "string",
                "array"
            ],
            "items": {"type": "string"}
        },
        "exp": {
            "description": "Expiration time (seconds since epoch)",
            "type": "integer"
        },
        "sig_val_claims": {
            "description": "Signature validation claims",
            "type": "object",
            "required": [
                "ver",
                "profile",
                "hash_algo",
                "sig"
            ],
            "properties": {
                "ver": {
                    "description": "Version",
                    "type": "string"
                },
                "profile": {
                    "description": "Implementation profile",
                    "type": "string"
                },
                "hash_algo": {
                    "description": "Hash algorithm URI",
                    "type": "string"
                },
                "sig": {
                    "description": "Validated signatures",
                    "type": "array",
                    "items": {
                        "$ref": "#/$def/Signature"
                    },
                    "minItems": 1
                },
                "ext": {
                    "description": "Extension map",
                    "$ref": "#/$def/Extension"
                }
            },
            "additionalProperties": false
        }
    },
"additionalProperties": false,
"$def": {
         "Signature":{
             "type": "object",
             "required": [
                 "sig_ref",
                 "sig_data_ref",
                 "signer_cert_ref",
                 "sig_val"
             ],
             "properties": {
                 "sig_ref": {
                     "description": "Signature Reference",
                     "$ref": "#/$def/SigReference"
                 },
                 "sig_data_ref": {
                     "description": "Signed data array",
                     "type": "array",
                     "items": {
                         "$ref" : "#/$def/SignedDataReference"
                     },
                     "minItems": 1
                 },
                 "signer_cert_ref": {
                     "description": "Signer certificate reference",
                     "$ref": "#/$def/CertReference"
                 },
                 "sig_val": {
                     "description": "Signature validation results",
                     "type": "array",
                     "items": {
                         "$ref": "#/$def/PolicyValidation"
                     },
                     "minItems": 1
                 },
                 "time_val": {
                     "description": "Time validations",
                     "type": "array",
                     "items": {
                         "$ref": "#/$def/TimeValidation"
                     }
                 },
                "ext": {
                    "description": "Extension map",
                    "$ref": "#/$def/Extension"
                }
             },
             "additionalProperties": false
         },
         "SigReference":{
             "type": "object",
             "required": [
                 "sig_hash",
                 "sb_hash"
             ],
             "properties": {
                 "sig_hash": {
                     "description": "Hash of the signature value",
                     "type": "string",
                     "format": "base64"
                 },
                 "sb_hash": {
                     "description": "Hash of the Signed Bytes",
                     "type": "string",
                     "format": "base64"
                 },
                 "id": {
                     "description": "Signature ID reference",
                     "type": ["string","null"]
                 }
             },
            "additionalProperties": false
         },
         "SignedDataReference": {
             "type": "object",
             "required": [
                 "ref",
                 "hash"
             ],
             "properties": {
                 "ref": {
                     "description": "Reference to the signed data",
                     "type": "string"
                 },
                 "hash": {
                     "description": "Signed data hash",
                     "type": "string",
                     "format": "base64"
                 }
             },
            "additionalProperties": false
         },
         "CertReference":{
             "type": "object",
             "required": [
                 "type",
                 "ref"
             ],
             "properties": {
                 "type": {
                     "description": "Type of certificate reference",
                     "type": "string",
                     "enum": ["chain","chain_hash"]
                 },
                 "ref": {
                     "description": "Certificate reference data",
                     "type": "array",
                     "items": {
                         "type": "string",
                         "format": "base64"
                     },
                     "minItems": 1
                 }
             },
            "additionalProperties": false
         },
         "PolicyValidation":{
             "type": "object",
             "required": [
                 "pol",
                 "res"
             ],
             "properties": {
                 "pol": {
                     "description": "Policy identifier",
                     "type": "string"
                 },
                 "res": {
                     "description": "Signature validation result",
                     "type": "string",
                     "enum": ["PASSED","FAILED","INDETERMINATE"]
                 },
                 "msg": {
                     "description": "Message",
                     "type": ["string","null"]
                 },
                 "ext": {
                    "description": "Extension map",
                    "$ref": "#/$def/Extension"
                }
             },
            "additionalProperties": false
         },
         "TimeValidation":{
             "type": "object",
             "required": [
                 "time",
                 "type",
                 "iss"
             ],
             "properties": {
                 "time": {
                     "description": "Verified time",
                     "type": "integer"
                 },
                 "type": {
                     "description": "Type of time validation proof",
                     "type": "string"
                 },
                 "iss": {
                     "description": "Issuer of the time proof",
                     "type": "string"
                 },
                 "id": {
                     "description": "Time evidence identifier",
                     "type": ["string","null"]

                 },
                 "hash": {
                     "description": "Hash of time evidence",
                     "type": ["string","null"],
                     "format": "base64"
                 },
                 "val": {
                     "description": "Validation result",
                     "type": "array",
                     "items": {
                         "$ref": "#/$def/PolicyValidation"
                     }
                 },
                 "ext": {
                    "description": "Extension map",
                    "$ref": "#/$def/Extension"
                }
             },
            "additionalProperties": false
         },
         "Extension": {
           "description": "Extension map",
           "type": ["object","null"],
           "required": [],
           "additionalProperties": {
               "type": "string"
           }
         }
     }
}
]]></artwork></figure>

</section>
</section>
<section anchor="appendix-examples"><name>Appendix: Examples</name>

<t>The following example illustrates a basic SVT according to this specification
issued for a signed PDF document.</t>

<t>Note: Line breaks in the decoded example are inserted for readablilty. Line
breaks are not allowed in valid JSON data.</t>

<t>Signature validation token JWT:</t>

<figure><artwork><![CDATA[
eyJraWQiOiJPZW5JKzQzNEpoYnZmRG50ZlZcLzhyT3hHN0ZrdnlqYUtWSmFWcUlG
QlhvaFZoQWU1Zks4YW5vdjFTNjg4cjdLYmFsK2Z2cGFIMWo4aWJnNTJRQnkxUFE9
PSIsInR5cCI6IkpXVCIsImFsZyI6IlJTNTEyIn0.eyJhdWQiOiJodHRwOlwvXC9l
eGFtcGxlLmNvbVwvYXVkaWVuY2UxIiwiaXNzIjoiaHR0cHM6XC9cL3N3ZWRlbmNv
bm5lY3Quc2VcL3ZhbGlkYXRvciIsImlhdCI6MTYwMzQ1ODQyMSwianRpIjoiNGQx
Mzk2ZjFmZjcyOGY0MGQ1MjQwM2I2MWM1NzQ0ODYiLCJzaWdfdmFsX2NsYWltcyI6
eyJzaWciOlt7ImV4dCI6bnVsbCwic2lnX3ZhbCI6W3sibXNnIjoiT0siLCJleHQi
Om51bGwsInJlcyI6IlBBU1NFRCIsInBvbCI6Imh0dHA6XC9cL2lkLnN3ZWRlbmNv
bm5lY3Quc2VcL3N2dFwvc2lndmFsLXBvbGljeVwvdHMtcGtpeFwvMDEifV0sInNp
Z19yZWYiOnsic2lnX2hhc2giOiJ5Y2VQVkxJemRjcEs5N0lZT2hGSWYxbnk3OUht
SUNiU1Z6SWVaTmJpem83ckdJd0hOTjB6WElTeUtHakN2bm9uT2FRR2ZMXC9QM3ZE
dEI4OHlLU1dlWGc9PSIsImlkIjoiaWQtNzM5ODljNmZjMDYzNjM2YWI1ZTc1M2Yx
MGY3NTc0NjciLCJzYl9oYXNoIjoiQm9QVjRXQ0E5c0FJYWhqSzFIYWpmRnhpK0F6
QzRKR1R1ZjM5VzNaV2pjekRDVVJ4ZGM5WWV0ZUh0Y3hHVmVnZ3B4SEo3NVwvY1E3
SE4xZERkbGl5SXdnPT0ifSwic2lnbmVyX2NlcnRfcmVmIjp7InJlZiI6WyIxK2Fh
SmV0ZzdyZWxFUmxVRFlFaVU0WklaaFQ0UlV2aUlRWnVLN28xR0ZLYVRQUTZ5K2t4
XC9QTnREcnB1cVE2WGZya0g5d1lESzRleTB5NFdyTkVybnc9PSIsImg0UER4YjVa
S214MWVUU3F2VnZZRzhnMzNzMDVKendCK05nRUhGVTRnYzl0cUcwa2dIa2Y2VzNv
THprVHd3dXJJaDZZOUFhZlpZcWMyelAycEUycDRRPT0iLCJEZDJDNXNCMElPUWVN
Vm5FQmtNNVE5Vzk2bUJITnd3YTJ0elhNcytMd3VZY09VdlBrcnlHUjBhUEc4Tzlu
SVAzbGJ3NktqUTFoRG1SazZ6Qzh4MmpkZz09Il0sInR5cGUiOiJjaGFpbl9oYXNo
In0sInNpZ19kYXRhX3JlZiI6W3sicmVmIjoiIiwiaGFzaCI6IkZjR3BPT2Y4aWxj
UHQyMUdEZDJjR25MR0R4UlM1ajdzdk00YXBwMkg0MWRERUxtMkN6Y2VUWTAybmRl
SmZXamludG1RMzc2SWxYVE9BcjMxeXpZenNnPT0ifSx7InJlZiI6IiN4YWRlcy0x
MWExNTVkOTJiZjU1Nzc0NjEzYmI3YjY2MTQ3N2NmZCIsImhhc2giOiJLUmtnYlo2
UFwvbmhVNjNJTWswR2lVZlVcL0RUd3ZlWWl0ZVFrd0dlSnFDNUJ6VE5WOGJRYnBl
ZFRUdVdKUHhxdkowUlk4NGh3bTdlWVwvZzBIckFPZWdLdz09In1dLCJ0aW1lX3Zh
bCI6W119XSwiZXh0IjpudWxsLCJ2ZXIiOiIxLjAiLCJwcm9maWxlIjoiWE1MIiwi
aGFzaF9hbGdvIjoiaHR0cDpcL1wvd3d3LnczLm9yZ1wvMjAwMVwvMDRcL3htbGVu
YyNzaGE1MTIifX0.TdHCoIUSZj2zMINKg7E44-8VE_mJq6TG1OoPwnYSs_hyUbuX
mrLJpuk8GR5YrndeOucPUYAwPxHt_f68JIQyFTi0agO9VJjn1R7Pj3Jt6WG9pYVN
n5LH-D1maxD11ZxxbcYeHbsstd2Sy2uMa3BdpsstGdPymSmc6GxY5uJoL0-5vwo_
3l-4Bb3LCTiuxYPcmztKIbDy2hEgJ3Hx1K4HF0SHgn3InpqBev3hm2SLw3hH5BCM
rywBAhHYE6OGE0aOJ6ktA5UP0jIIHfaw9i1wIiJtHTaGuvtyWSLk5cshmun9Hkdk
kRTA75bzuq0Iyd0qh070rA8Gje-s4Tw4xzttgKx1KSkvy8n5FqvzWdsZvclCG2mY
Y9rMxh_7607NXcxajAP4yDOoKNs5nm937ULe0vCN8a7WTrFuiaGjry7HhzRM4C5A
qxbDOBXPLyoMr4qn4LRJCHxOeLZ6o3ugvDOOWsyjk3eliyBwDu8qJH7UmyicLxDc
Cr0hUK_kvREqjD2Z
]]></artwork></figure>

<t>Decoded JWT Header:</t>

<figure><artwork><![CDATA[
{
  "kid":"OenI+434JhbvfDntfV\/8rOxG7FkvyjaKVJaVqIFBXohVhAe5fK8anov
         1S688r7Kbal+fvpaH1j8ibg52QBy1PQ==",
  "typ":"JWT",
  "alg":"RS512"
}
]]></artwork></figure>

<t>Decoded JWT Claims:</t>

<figure><artwork><![CDATA[
{
  "aud" : "http://example.com/audience1",
  "iss" : "https://swedenconnect.se/validator",
  "iat" : 1603458421,
  "jti" : "4d1396f1ff728f40d52403b61c574486",
  "sig_val_claims" : {
    "sig" : [ {
      "ext" : null,
      "sig_val" : [ {
        "msg" : "OK",
        "ext" : null,
        "res" : "PASSED",
        "pol" : "http://id.swedenconnect.se/svt/sigval-policy/
                 ts-pkix/01"
      } ],
      "sig_ref" : {
        "sig_hash" : "ycePVLIzdcpK97IYOhFIf1ny79HmICbSVzIeZNbizo7rGIw
                      HNN0zXISyKGjCvnonOaQGfL/P3vDtB88yKSWeXg==",
        "id" : "id-73989c6fc063636ab5e753f10f757467",
        "sb_hash" : "BoPV4WCA9sAIahjK1HajfFxi+AzC4JGTuf39W3ZWjczDCURx
                     dc9YeteHtcxGVeggpxHJ75/cQ7HN1dDdliyIwg=="
      },
      "signer_cert_ref" : {
        "ref" : [ "1+aaJetg7relERlUDYEiU4ZIZhT4RUviIQZuK7o1GFKaTPQ6y+
                   kx/PNtDrpuqQ6XfrkH9wYDK4ey0y4WrNErnw==",
                  "h4PDxb5ZKmx1eTSqvVvYG8g33s05JzwB+NgEHFU4gc9tqG0kgH
                   kf6W3oLzkTwwurIh6Y9AafZYqc2zP2pE2p4Q==",
                  "Dd2C5sB0IOQeMVnEBkM5Q9W96mBHNwwa2tzXMs+LwuYcOUvPkr
                   yGR0aPG8O9nIP3lbw6KjQ1hDmRk6zC8x2jdg==" ],
        "type" : "chain_hash"
      },
      "sig_data_ref" : [ {
        "ref" : "",
        "hash" : "FcGpOOf8ilcPt21GDd2cGnLGDxRS5j7svM4app2H41dDELm2Czc
                  eTY02ndeJfWjintmQ376IlXTOAr31yzYzsg=="
      }, {
        "ref" : "#xades-11a155d92bf55774613bb7b661477cfd",
        "hash" : "KRkgbZ6P/nhU63IMk0GiUfU/DTwveYiteQkwGeJqC5BzTNV8bQb
                  pedTTuWJPxqvJ0RY84hwm7eY/g0HrAOegKw=="
      } ],
      "time_val" : [ ]
    } ],
    "ext" : null,
    "ver" : "1.0",
    "profile" : "XML",
    "hash_algo" : "http://www.w3.org/2001/04/xmlenc#sha512"
  }
}
]]></artwork></figure>

</section>


  </back>

<!-- ##markdown-source:
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
uzi6LZ0fXZXPH66eziuNyvn1ebn5clW6qN1ief0X69oZODC9m0ozvr32Exum
iasAL2zvwk+2GqPeOo7YD3px/+DJsyt+cINQwbPrauz1b5oBjtwpxdih7x5f
ecbFaKPcP3oCRJ74NiFuf79bbh62EJnB/hQbN0bDknO8x+Zf8R/PgoU4aFac
w6cpjoygnt1AB0f+gwvIdY7PAdnJ2IX357W6N+iVYIDm2Lgr78zurm+9C5AW
BHJlOLQr97hcG7eV3lXv8fnEHbUe7Hq80Sz5d53K8Kh9ffvcDx6rF91hYrS7
TQ9IaLN93bM6o5OxO9qu2o/OiVMaXnQe9jev637H7SbH1mOz0h/tTDqVw1ar
cncO07k6r97VDafeWL849s+6Zce/PrJ3iLBG/iOt/fVV0nw537io+Q9NWKfz
2u1L8+G8cnvdKN917DL8Bct4dFttduxS88Gmpbr1d8Lbm2aIHVyNdq56D62b
q1J9wy4dntxeD7+2Xw4bt9fjUSsYjk9Lh5vG1UvrtFVulaH/jd5L0+pVxg/u
Y6vW652s3x2db1xf90p33WHpFpipN+oFd9X99XY9rDaRasv1qtGurz/f1VuP
gO2N9o0TXHZK3qDNaKA/6s2AaHw7aA3sUW/UeBhv4XLfeUAXs8bzaeVwaLRH
MMKLAyvxfNgdPfdah/6h1euWrh99yzq8KnX9XsXq+q3roHfWrGw/t0p3Z7e9
1lW3c7dxWknWDcRmJ2jV7WC/bPfqleuju5lVut9wyn69/dLy3c7+RvPQmXUe
e7N+IJB8X+rWW+u3Dz3LaFfK6+fXvW63eliBGd61XobB+QvgvtY7BVl8cFra
CFrd4VGv0wpuX/yS3bWfrIrTsCpAJS9AiZ3jcdQ7dqrOzcmJVbu7u+geDu/8
8Z19fT5z/b2ZXe/O7FqrhbiBVarf1U5qzZvmwXndv+xe95pGb7RxeDVKms1e
HVbhsdLvnjQ6gVO97ZyUXH/YtGfJuVPt3d2WdnqOvx/ZgX/cfdgfduv2eufF
nxjt3t5L/+ik2nxMvnY7h2HrqNy2Xu42r16G6+ej8ePdS2mn4ZeY1DrqIok/
WEeH4z6nFwPEFTEF8AQKkuFNlS8TsC9butAjyXR0+GKR2Lt7aFX3LzuVW5CP
zw9G9xikTNfBuT20KhvnrVJrveufl60H58V5LJVub/afzh/vS+fXrXqr+5yc
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
T/HQIvWXRpT+HwKWfVYz+AAA

-->

</rfc>

