<?xml version="1.0" encoding="UTF-8"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="info" docName="draft-litzki-sovp-02" ipr="trust200902" submissionType="independent" xml:lang="en">

  <front>
    <title abbrev="SOVP">Sovereign Validation Protocol (SOVP)</title>

    <author fullname="Thorsten Litzki" initials="T." surname="Litzki">
      <organization>Litzki Systems LLC</organization>
      <address>
        <postal>
          <street>7901 4th St N, #32272</street>
          <city>St. Petersburg</city>
          <region>FL</region>
          <code>33702</code>
          <country>USA</country>
        </postal>
        <email>ietf@litzki-systems.com</email>
      </address>
    </author>

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

    <keyword>Infrastructure Verification</keyword>
    <keyword>Origin Binding</keyword>
    <keyword>Federated Trust</keyword>
    <keyword>Ingestion Boundary</keyword>
    <keyword>Cryptographic Attestation</keyword>
    <keyword>Machine-Readable Evidence</keyword>
    <keyword>DNS-Anchored Keys</keyword>
    <keyword>Digital Sovereignty</keyword>

    <abstract>
      <t>This document specifies the Sovereign Validation Protocol (SOVP), a protocol for cryptographic verification of publisher-provided identity metadata bound to DNS-anchored Ed25519 public keys. SOVP enables consuming agents, gateways, and federated infrastructure components to verify the origin and integrity of machine-readable declarations published by a domain prior to ingestion, allowing deployments to reject unauthenticated data before application-level processing occurs.</t>
      <t>SOVP is designed to operate as a verification layer beneath existing trust frameworks, federation architectures, and governance systems. It does not replace these systems. It provides the cryptographic infrastructure evidence upon which higher-layer trust decisions may be grounded.</t>
      <t>SOVP defines a deterministic verification procedure based on RFC 8785 JSON Canonicalization Scheme (JCS), Ed25519 signatures, DNS-based key publication, and optional HTTP transport mechanisms. The protocol defines data structures, cryptographic procedures, operational modes, and associated DNS and HTTP mechanisms.</t>
      <t>The reference implementation provides signing and verification primitives only. Full protocol execution including DNS resolution, HTTP retrieval, and gateway enforcement behavior is implementation-defined.</t>
    </abstract>

    <note title="Implementation Status">
      <t>A reference implementation of the signing and verification primitives described in this document is available as open-source software under the Apache License 2.0 at https://github.com/litzki-systems/sovp-python.</t>
    </note>
  </front>

  <middle>

    <section anchor="introduction">
      <name>Introduction</name>
      <t>Federated digital ecosystems, trust frameworks, and automated infrastructure components increasingly rely on machine-readable declarations to establish and propagate trust across organizational boundaries. These systems define governance rules, credential formats, and policy frameworks for trusted interaction. However, a common mechanism for independently verifying that a machine-readable declaration retrieved from a domain is cryptographically bound to the domain owner at the moment of ingestion does not currently exist.</t>
      <t>Existing transport-layer mechanisms such as TLS provide channel security but do not verify that the content delivered over that channel remains bound to the domain owner's intended identity after delivery. Verifiable Credential frameworks operate at the application layer and typically assume that the infrastructure serving the credential is already trusted. Federation Architecture Patterns define how systems interact but do not specify how the technical state of participating infrastructure is verified prior to interaction.</t>
      <t>SOVP addresses this by enabling a publisher to bind machine-readable identity metadata to an Ed25519 signature, with the corresponding public key anchored in DNS. A consuming agent, gateway, or federated infrastructure component (referred to as a Validating Agent or SOVP Gateway) can verify this binding without prior relationship or shared secret, and reject non-conformant data at the ingestion boundary before application-level processing occurs.</t>
      <t>The term "sovereign" in the protocol name reflects the design principle that verification does not depend on a third-party certificate authority or centralized trust registry. The public key is anchored in DNS under the publisher's own domain, and verification requires only access to that domain's DNS records and the associated SOVP identity document.</t>
      <t>Layer 0, as used in this document, refers to the ingestion boundary: the point at which a consuming system decides whether to accept or reject externally supplied machine-readable data prior to application-level processing.</t>
      <t>SOVP is intended as a cryptographic infrastructure verification mechanism. It does not evaluate the semantic accuracy, truthfulness, regulatory compliance, or trustworthiness of published content. Such assessments remain the responsibility of higher-layer systems.</t>
      <t>The protocol is designed to operate independently of specific AI frameworks, agent protocols, cloud providers, trust frameworks, or compliance regimes. It is intended to be composable with such systems as a lower-layer verification primitive.</t>
      <t>The reference implementation provides signing and verification primitives only. Full protocol execution, including DNS resolution, HTTP retrieval, and Mode B gateway enforcement behavior, is implementation-defined and outside the scope of the reference implementation.</t>
      <t>This document specifies the protocol data structures, cryptographic procedures, and operational modes constituting SOVP. It is published as an Informational document describing the current protocol specification.</t>
      <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"/> and <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>
    </section>

    <section anchor="non-goals">
      <name>Non-Goals</name>
      <t>SOVP enables verification of origin and integrity for publisher-provided identity metadata. Specifically, a successful verification (Psi_core = 1) indicates that the sovp-identity.json retrieved from a domain was signed by the holder of the private key corresponding to the DNS-published public key, and that the signed content has not been modified since signing.</t>
      <t>SOVP does not validate the semantic accuracy, truthfulness, completeness, regulatory compliance, or trustworthiness of the published content. It does not replace downstream fact-checking, policy evaluation, risk assessment, or content analysis.</t>
      <t>SOVP does not establish legal identity and does not provide legal non-repudiation.</t>
      <t>SOVP does not provide a governance framework, credential schema, or compliance assessment. These remain the responsibility of higher-layer systems.</t>
      <t>SOVP provides cryptographic origin binding and integrity verification at the infrastructure layer. It does not provide content truth.</t>
    </section>

    <section anchor="relationship-existing">
      <name>Relationship to Existing Mechanisms</name>
      <t>SOVP is designed to be composable with existing trust and identity mechanisms. It is not intended to replace them.</t>

      <section anchor="rel-tls">
        <name>TLS and Transport Security</name>
        <t>TLS provides channel confidentiality and server authentication at the transport layer. SOVP operates above the transport layer and addresses a complementary concern: whether the content delivered over a TLS-secured channel is cryptographically bound to the domain owner's intended identity at the time of publication. TLS and SOVP MAY be used together.</t>
      </section>

      <section anchor="rel-vc">
        <name>Verifiable Credentials</name>
        <t>Verifiable Credentials (W3C VC) provide a framework for issuing, holding, and verifying application-layer claims about subjects. SOVP provides a lower-layer mechanism for verifying that the infrastructure serving such credentials or identity declarations is controlled by the claimed domain owner. SOVP verification MAY serve as a precondition for accepting Verifiable Credentials from a given domain.</t>
      </section>

      <section anchor="rel-dane">
        <name>DANE</name>
        <t>DNS-Based Authentication of Named Entities (DANE, RFC 6698) binds TLS certificates to DNS. SOVP similarly uses DNS as a trust anchor but binds application-layer identity metadata rather than TLS certificates. The two mechanisms address different layers and MAY coexist.</t>
      </section>

      <section anchor="rel-dkim">
        <name>DKIM</name>
        <t>DomainKeys Identified Mail (DKIM, RFC 6376) uses DNS-published public keys to verify email message signatures. SOVP applies a structurally similar DNS-anchored signature model to machine-readable identity documents published at well-known HTTP paths. SOVP is not specific to email or any single transport.</t>
      </section>

      <section anchor="rel-trust-frameworks">
        <name>Trust Frameworks and Federation Architectures</name>
        <t>Trust frameworks such as Gaia-X and federation architectures define governance rules, participant onboarding criteria, and credential issuance procedures for federated digital ecosystems. These frameworks define who may issue attestations and under what conditions. They typically assume that the technical infrastructure of participating entities meets certain properties but do not specify a mechanism for independently verifying those properties at the infrastructure level.</t>
        <t>SOVP is designed to operate beneath such frameworks as a verification primitive. A federation participant's SOVP identity document MAY be verified prior to accepting credentials from or initiating interactions with that participant. SOVP verification does not replace framework-level compliance assessments; it provides a cryptographic infrastructure evidence layer that such assessments may reference.</t>
      </section>
    </section>

    <section anchor="resonance">
      <name>Validation Function: Psi_core</name>
      <t>The core of the protocol is the validation function Psi_core. It produces a binary result indicating whether the identity metadata retrieved from a domain was signed by the holder of the corresponding DNS-published public key. The identity metadata (M) MUST be canonicalized using the JSON Canonicalization Scheme (JCS) as defined in <xref target="RFC8785"/> before signature verification, to ensure consistent byte representation across implementations.</t>
      <t>Implementations MUST use an RFC 8785-compliant JSON Canonicalization Scheme (JCS) library. Floating-point values MUST be serialized according to Section 3.2.2 of <xref target="RFC8785"/>. Non-compliant canonicalization libraries MUST NOT be used.</t>
      <t>Ed25519 in pure mode, as specified in <xref target="RFC8032"/> Section 5.1, applies SHA-512 internally as part of the signature algorithm. Implementations MUST NOT apply any external hash function to JCS(M) before passing the canonicalized message to the Ed25519 sign or verify operation.</t>
      <artwork><![CDATA[Psi_core = Verify(K_pub, sigma, JCS(M))]]></artwork>
      <t>Where:</t>
      <ul>
        <li>K_pub is the Ed25519 public key retrieved via a DNS TXT record or the SOVP-Identity header. When represented in DNS or HTTP, the key MUST be encoded using standard Base64 as specified in <xref target="RFC4648"/> Section 4. The encoded value MUST represent exactly 32 bytes of raw Ed25519 public key material.</li>
        <li>sigma is the digital signature provided within the integrity_proof.</li>
        <li>JCS(M) is the canonicalized identity metadata per <xref target="RFC8785"/>, passed directly to the Ed25519 verify function.</li>
        <li>Verify is the Ed25519 verification function, returning 1 if the signature is valid for the given key and message, or 0 otherwise.</li>
      </ul>
    </section>

    <section anchor="tech-spec">
      <name>Technical Specification: The sovp-identity.json Structure</name>
      <t>The implementation relies on a signed JSON object located at the well-known path of the host (/.well-known/sovp-identity.json, per <xref target="RFC8615"/>). This object serves as the primary data carrier for the publisher identity declaration.</t>
      <t>The signature covers the fields outside the integrity_proof object. The integrity_proof object itself, including the signature field, is excluded from the signed scope. Implementations MUST canonicalize only the non-proof fields of M when computing or verifying JCS(M).</t>
      <t>The @context value "https://litzki-systems.com/protocol/v1.4" is the canonical context identifier for this version of the specification. Implementations claiming conformance to this specification MUST use the v1.4 context identifier.</t>
      <t>Proposed Schema for sovp-identity.json:</t>

      <sourcecode type="json"><![CDATA[
{
  "@context": "https://litzki-systems.com/protocol/v1.4",
  "@type": "SovereignIdentity",
  "entity": {
    "uid": "urn:sovp:litzki-systems-llc",
    "canonical_url": "https://litzki.systems",
    "verification_method": "Ed25519"
  },
  "integrity_proof": {
    "signature": "z58D...v9A",
    "created": "2026-03-14T17:00:00Z",
    "public_key_ref": "dns:txt:_sovp.litzki.systems",
    "nonce": "optional-unique-string-123"
  },
  "parameters": {
    "entropy_threshold": 0.12,
    "determinism_score": 0.98
  }
}
      ]]></sourcecode>

      <t>The parameters object and its attributes are optional and application-specific. They are included within the signed scope and therefore protected against modification. However, this specification does not define semantics for any parameter values. Validating Agents MUST NOT derive trust decisions solely from parameter values unless explicitly defined by a separate profile or extension specification.</t>
      <t>Implementations MAY include additional vendor-specific extension objects within the sovp-identity.json document. Such objects MUST NOT be included in the signed scope and MUST NOT be used as a basis for trust decisions by Validating Agents.</t>
    </section>

    <section anchor="atomic-drift">
      <name>Signature Mismatch and Verification Failure</name>
      <t>A verification failure (Psi_core = 0) occurs when a Validating Agent is unable to successfully verify the Ed25519 signature associated with a retrieved sovp-identity.json document.</t>
      <t>Verification failure MAY result from, but is not limited to:</t>
      <ul>
        <li>Modification of signed content after signature creation.</li>
        <li>Use of an incorrect public key.</li>
        <li>Malformed or invalid signature encoding.</li>
        <li>Failure to produce a valid RFC 8785 canonical representation of the signed content.</li>
        <li>Violation of origin binding requirements specified in <xref target="origin-binding"/>.</li>
      </ul>
      <t>When Psi_core = 0, a Validating Agent or SOVP Gateway MUST treat the identity declaration as invalid and MUST NOT rely on the associated SOVP assertion for trust establishment.</t>
      <t>Deployments operating in enforcement mode MAY reject the associated resource or transaction prior to further processing.</t>
    </section>

    <section anchor="execution-sequence">
      <name>Protocol Execution Sequence</name>
      <t>The protocol execution follows a non-interactive sequence to compute Psi_core. SOVP defines two primary operational modes:</t>

      <table>
        <thead>
          <tr>
            <th>Mode</th>
            <th>Actor</th>
            <th>Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>Mode A</td>
            <td>Validating Agent (Client)</td>
            <td>The agent performs verification locally before committing data to memory.</td>
          </tr>
          <tr>
            <td>Mode B</td>
            <td>SOVP Gateway (Server)</td>
            <td>An infrastructure-level gateway validates requests on behalf of a protected cluster.</td>
          </tr>
        </tbody>
      </table>

      <t>Implementations MAY offer a managed-signing mode in which key generation and signing operations are performed by a trusted service provider on behalf of the publisher. In such deployments, the publisher receives the public key for DNS publication and the signed sovp-identity.json artifact for deployment. The cryptographic verification procedure for Validating Agents remains identical. Operators SHOULD document whether their deployment uses self-managed or provider-managed key custody.</t>

      <t>Execution Sequence:</t>
      <ol>
        <li>Public Key Exposure: The entity publishes its Ed25519 public key in a DNS TXT record located at _sovp. The TXT record MUST use the format: v=SOVP1; k=&lt;base64-encoded-ed25519-public-key&gt; where k contains the RFC 4648 base64 encoding of the raw 32-byte Ed25519 public key.</li>
        <li>Artifact Retrieval: The Validating Agent or Gateway retrieves the sovp-identity.json from the host's well-known path (/.well-known/sovp-identity.json).</li>
        <li>Origin Binding Verification: The Validating Agent MUST verify that the domain serving the sovp-identity.json artifact matches the domain from which the corresponding public key was retrieved. Mismatched domains MUST result in Psi_core = 0.</li>
        <li>Integrity Verification: The actor canonicalizes the payload according to <xref target="RFC8785"/> and executes the Verify function using Ed25519 pure mode per <xref target="RFC8032"/>.</li>
        <li>Verification Result: Psi_core = 1 only if all protocol checks succeed, including origin binding, canonicalization, signature verification, and any locally configured freshness validation requirements. If Psi_core = 0, the Validating Agent or SOVP Gateway MUST reject the data and MUST NOT commit it to the processing pipeline.</li>
      </ol>

      <section anchor="fallback-logic">
        <name>Mode B Rejection Policy</name>
        <t>If a source does not provide a valid sovp-identity.json, or if Psi_core = 0, the SOVP Gateway MUST reject the request. The RECOMMENDED HTTP status code is 422 (Unprocessable Content). Implementations MAY use alternative status codes consistent with local policy. Rejection SHOULD occur before body parsing to avoid unnecessary resource consumption.</t>
        <ul>
          <li>Exception: Local allow-lists MAY be defined for legacy systems, though these bypass the Layer 0 integrity guarantee.</li>
        </ul>
        <t>The reference implementation provides signing and verification primitives only. DNS resolution, HTTP retrieval, gateway behavior, and distributed deployment models are implementation-defined and outside the scope of the reference implementation.</t>
      </section>
    </section>

    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This section addresses security considerations per <xref target="RFC3552"/>.</t>

      <section anchor="key-revocation">
        <name>Key Revocation and DNS TTL</name>
        <t>To minimize the window of vulnerability during a key compromise, SOVP records in DNS SHOULD use a low Time-To-Live (TTL), with a recommended value of 300 seconds. Revocation is achieved by updating or removing the _sovp TXT record.</t>
      </section>

      <section anchor="replay-protection">
        <name>Replay Protection</name>
        <t>All integrity_proof objects MUST contain a created timestamp.</t>
        <t>Validating Agents SHOULD reject signatures whose created timestamp falls outside a locally configured validity window. A default window of 600 seconds is RECOMMENDED.</t>
        <t>Timestamp validation is implemented in the reference implementation via the check_timestamp parameter of verify_identity().</t>
        <t>For high-frequency environments, implementations SHOULD additionally perform nonce-based deduplication within the validity window to mitigate replay attacks. Nonce-based deduplication is not currently implemented in the reference implementation and remains a future work item.</t>
      </section>

      <section anchor="origin-binding">
        <name>Origin Binding</name>
        <t>SOVP binds signed identity metadata to the Ed25519 key pair whose public component is published in DNS.</t>
        <t>A Validating Agent performing full protocol execution MUST verify that the domain serving the sovp-identity.json artifact matches the domain from which the corresponding public key was retrieved.</t>
        <t>Mismatched domains MUST result in Psi_core = 0.</t>
        <t>Successful verification demonstrates control over the corresponding private key and the associated DNS namespace. It does not establish legal identity and does not provide legal non-repudiation.</t>
      </section>

      <section anchor="dnssec">
        <name>DNS Security (DNSSEC)</name>
        <t>Since the trust anchor relies on DNS TXT records, protection against DNS spoofing is critical. The use of DNSSEC is RECOMMENDED for the zone hosting the _sovp record to ensure the authenticity of the public key.</t>
        <t>DNSSEC is RECOMMENDED because compromise of the DNS resolution path may permit substitution of the published SOVP public key and thereby invalidate the trust model.</t>
      </section>

      <section anchor="canonicalization-security">
        <name>Canonicalization Security</name>
        <t>SOVP relies on RFC 8785 JSON Canonicalization Scheme (JCS) for deterministic message representation.</t>
        <t>Implementations MUST use an RFC 8785-compliant canonicalization library. Non-compliant canonicalization algorithms MUST NOT be used.</t>
        <t>In particular, floating-point values MUST be serialized according to RFC 8785 Section 3.2.2.</t>
      </section>
    </section>

    <section anchor="infra-layering-2">
      <name>Deployment Architecture: Ingestion Boundary Positioning</name>
      <t>SOVP is designed to operate at the ingestion boundary, defined as the point at which a consuming system decides whether externally obtained data is admitted into a processing pipeline.</t>
      <t>In Mode A, verification is performed by the Validating Agent before data is committed to memory, storage, or further processing.</t>
      <t>In Mode B, verification is performed by a SOVP Gateway positioned in front of protected services. The gateway evaluates the SOVP identity artifact and associated cryptographic proof before forwarding requests to downstream systems.</t>
      <t>DNS serves as the trust anchor for distribution of the SOVP public key. Operators SHOULD deploy DNSSEC to provide origin authentication and integrity protection for SOVP public key records.</t>
      <t>The reference implementation provides signing and verification primitives only. DNS resolution, HTTP retrieval, gateway deployment, caching behavior, and distributed validation architectures are implementation-defined.</t>
    </section>

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

      <section anchor="dns-node-names">
        <name>Underscored and Globally Scoped DNS Node Names</name>
        <t>Per <xref target="RFC8552"/>, the following entry is to be added to the IANA Underscored and Globally Scoped DNS Node Names registry:</t>
        <ul>
          <li>RR Type: TXT</li>
          <li>Node Name: _sovp</li>
          <li>Reference: This document</li>
        </ul>
        <t>A DNS TXT record associated with the _sovp label MUST use the following syntax:</t>
        <sourcecode>v=SOVP1; k=&lt;base64-ed25519-public-key&gt;</sourcecode>
        <t>The value of the k parameter MUST be the standard Base64 encoding defined in <xref target="RFC4648"/> Section 4 and MUST represent exactly 32 bytes of raw Ed25519 public key material.</t>
      </section>

      <section anchor="message-headers">
        <name>Permanent Message Header Field Names</name>
        <t>The following HTTP header field is requested for registration.</t>
        <ul>
          <li>Header field name: SOVP-Identity</li>
          <li>Applicable protocol: HTTP</li>
          <li>Status: Experimental</li>
          <li>Author/Change controller: Litzki Systems LLC</li>
          <li>Specification document: This document</li>
        </ul>
        <t>The value of the SOVP-Identity header MUST be the standard Base64 encoding defined in <xref target="RFC4648"/> Section 4 and MUST represent exactly 32 bytes of raw Ed25519 public key material.</t>
        <sourcecode>SOVP-Identity: MCowBQYDK2VwAyEA3w7gP0g7vM3...</sourcecode>
      </section>

      <section anchor="key-distribution">
        <name>Public Key Distribution</name>
        <t>SOVP public keys MAY be distributed through DNS TXT records or through the SOVP-Identity HTTP header field.</t>
        <t>When represented in DNS TXT records or HTTP headers, Ed25519 public keys MUST be encoded using standard Base64 as defined in <xref target="RFC4648"/> Section 4. The encoded value MUST represent exactly 32 bytes of raw Ed25519 public key material.</t>
      </section>
    </section>

  </middle>

  <back>
    <references>
      <name>Normative References</name>

      <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author initials="S." surname="Bradner"><organization/></author>
          <date year="1997" month="March"/>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
      </reference>

      <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author initials="B." surname="Leiba"><organization/></author>
          <date year="2017" month="May"/>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
      </reference>

      <reference anchor="RFC8552" target="https://www.rfc-editor.org/info/rfc8552">
        <front>
          <title>Scoped DNS Node Names</title>
          <author initials="S." surname="Crocker"><organization/></author>
          <date year="2019" month="March"/>
        </front>
        <seriesInfo name="RFC" value="8552"/>
      </reference>

      <reference anchor="RFC3864" target="https://www.rfc-editor.org/info/rfc3864">
        <front>
          <title>Registration Procedures for Message Header Fields</title>
          <author initials="G." surname="Klyne"><organization/></author>
          <date year="2004" month="September"/>
        </front>
        <seriesInfo name="RFC" value="3864"/>
      </reference>

      <reference anchor="RFC8785" target="https://www.rfc-editor.org/info/rfc8785">
        <front>
          <title>JSON Canonicalization Scheme (JCS)</title>
          <author initials="A." surname="Rundgren"><organization/></author>
          <date year="2020" month="June"/>
        </front>
        <seriesInfo name="RFC" value="8785"/>
      </reference>

      <reference anchor="RFC8615" target="https://www.rfc-editor.org/info/rfc8615">
        <front>
          <title>Well-Known Uniform Resource Identifiers (URIs)</title>
          <author initials="M." surname="Nottingham"><organization/></author>
          <date year="2019" month="May"/>
        </front>
        <seriesInfo name="RFC" value="8615"/>
      </reference>

      <reference anchor="RFC8032" target="https://www.rfc-editor.org/info/rfc8032">
        <front>
          <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
          <author initials="S." surname="Josefsson"><organization/>
          </author>
          <author initials="I." surname="Liusvaara"><organization/></author>
          <date year="2017" month="January"/>
        </front>
        <seriesInfo name="RFC" value="8032"/>
      </reference>

      <reference anchor="RFC6648" target="https://www.rfc-editor.org/info/rfc6648">
        <front>
          <title>Deprecating the "X-" Prefix and Similar Constructs in Application Protocols</title>
          <author initials="P." surname="Saint-Andre"><organization/></author>
          <author initials="D." surname="Crocker"><organization/></author>
          <author initials="M." surname="Nottingham"><organization/></author>
          <date year="2012" month="June"/>
        </front>
        <seriesInfo name="BCP" value="178"/>
        <seriesInfo name="RFC" value="6648"/>
      </reference>

      <reference anchor="RFC3552" target="https://www.rfc-editor.org/info/rfc3552">
        <front>
          <title>Guidelines for Writing RFC Text on Security Considerations</title>
          <author initials="E." surname="Rescorla"><organization/></author>
          <date year="2003" month="July"/>
        </front>
        <seriesInfo name="RFC" value="3552"/>
      </reference>

      <reference anchor="RFC4648" target="https://www.rfc-editor.org/info/rfc4648">
        <front>
          <title>The Base16, Base32, and Base64 Data Encodings</title>
          <author initials="S." surname="Josefsson"><organization/></author>
          <date year="2006" month="October"/>
        </front>
        <seriesInfo name="RFC" value="4648"/>
      </reference>

      <reference anchor="RFC1035" target="https://www.rfc-editor.org/info/rfc1035">
        <front>
          <title>Domain Names - Implementation and Specification</title>
          <author initials="P." surname="Mockapetris"><organization/></author>
          <date year="1987" month="November"/>
        </front>
        <seriesInfo name="RFC" value="1035"/>
      </reference>
    </references>

    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>A reference implementation is available under the Apache 2.0 license: https://github.com/litzki-systems/sovp-python</t>
      <t>The current implementation provides signing and verification primitives, document generation, and CLI tooling. Timestamp validation is implemented via the check_timestamp parameter of verify_identity(). DNS resolution, HTTP retrieval, nonce-based replay protection, and gateway deployment functions are outside the scope of the reference implementation.</t>
    </section>
  </back>

</rfc>
