<?xml version="1.0" encoding="UTF-8"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
     docName="draft-li-iqa-subject-attestation-00"
     category="info"
     submissionType="independent"
     ipr="trust200902"
     tocInclude="true"
     symRefs="true"
     sortRefs="true"
     version="3">

  <front>
    <title abbrev="iqa URI Scheme">Subject Attestation in the iqa URI Scheme</title>
    <seriesInfo name="Internet-Draft" value="draft-li-iqa-subject-attestation-00"/>
    <author fullname="ShaoBao Li">
      <organization>IQA.ORG Organization</organization>
      <address>
        <email>lee@iqa.org</email>
      </address>
    </author>
    <date year="2026" month="September" day="20"/>
    <area>Applications and Real-Time</area>
    <workgroup>Independent Submission</workgroup>
    <abstract>
      <t>This document specifies the "iqa" URI scheme, a subject-attestation
      scheme in which an "iqa" URI names the attestation standing of an
      identified subject, as reported by one of three named authority organs;
      the URI carries no
      proof and no credential, and no lookup service or name-resolution system
      is consulted when the URI is used. The document also states the
      requirements a client MUST satisfy when it handles such a URI, in order
      to avoid two failure modes that short, user-embeddable strings otherwise
      invite: using the authority as a navigation target (open redirect), and
      using a registered protocol handler as a general-purpose launcher. A
      third failure mode specific to this scheme is addressed as well: a parse
      that looks like a certification.</t>
    </abstract>
  </front>

  <middle>

    <section anchor="intro" numbered="true">
      <name>Introduction</name>
      <t>Most URI schemes name a location: the authority identifies a host to be
      contacted. This document specifies a subject-attestation scheme that
      names something else: the attestation standing of an identified subject,
      as reported by a named authority organ. What a client does with that
      answer is defined by the
      scheme; where the subject might be reached is not part of the URI and is
      not resolved through any lookup service.</t>
      <t>Three properties follow from that choice and are normative in this
      document:</t>
      <ul>
        <li>the subject, the organ and the root are <strong>names, never
        hosts</strong>: nothing in the URI is resolved through DNS or any other
        lookup (<xref target="syntax"/>, <xref target="security"/>);</li>
        <li>the URI is a <strong>claim, not evidence</strong>. It carries no
        seal, no proof and no credential, and establishes nothing about the
        subject by itself (<xref target="exclusions"/>,
        <xref target="client-req"/>);</li>
        <li>dereferencing a URI that omits the action is a <strong>read</strong>
        and MUST NOT change any subject's standing
        (<xref target="default-op"/>).</li>
      </ul>
      <t><strong>Naming note.</strong> IQA here denotes <strong>Identity</strong>
      Quality Assurance. It is not affiliated with the <strong>Institute</strong>
      of Quality Assurance (the historical body in the United Kingdom that
      became the Chartered Quality Institute in 2007), nor is it the
      computer-vision field of <strong>Image</strong> Quality Assessment.</t>
      <t>The scheme is subject to registration with IANA under
      <xref target="RFC7595"/>. Its registration status is recorded in
      <xref target="iana"/>; as of 20 September 2026 the request is submitted
      and pending, and the name is <strong>not registered</strong>.</t>
      <t>The rttp scheme, which addresses intent rather than attestation
      standing, is specified separately <xref target="RTTP"/>; an
      Internet-Draft for rttp is in progress
      (&lt;<eref target="https://datatracker.ietf.org/doc/draft-li-rttp-intent-addressing/"/>&gt;).
      The two schemes are registered independently of each other.</t>
      <t>This document does not define the attestation algorithm, the seal
      format, the transport, or the vocabulary of standing values that an organ
      may return. It defines a URI scheme and the minimum client behaviour that
      makes the scheme safe to embed.</t>
    </section>

    <section anchor="conventions" numbered="true">
      <name>Conventions and Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
      "OPTIONAL" in this document are to be interpreted as described in BCP 14
      <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when,
      they appear in all capitals, as shown here.</t>
      <t>This document uses the ABNF notation of <xref target="RFC5234"/> and
      the URI syntax of <xref target="RFC3986"/>.</t>
      <t>Terminology:</t>
      <dl>
        <dt>authority</dt>
        <dd>The three-segment component
        <tt>&lt;subject&gt;.&lt;organ&gt;.&lt;root&gt;</tt> defined in
        <xref target="syntax"/>. It is a name, not a host name, and is never
        resolved.</dd>
        <dt>subject</dt>
        <dd>The entity whose standing the URI names, identified inside the
        authority. The subject is a claim about which identity is of interest;
        it is not a proof of that identity.</dd>
        <dt>organ</dt>
        <dd>The named component that answers for the subject. This document
        defines a closed set of three organ names
        (<xref target="syntax"/>).</dd>
        <dt>root</dt>
        <dd>The root label of the scheme. It is a name and is not resolved.</dd>
        <dt>action</dt>
        <dd>The optional final path segment naming an operation requested of
        the organ.</dd>
        <dt>standing</dt>
        <dd>The attestation answer an organ returns for a subject. This
        document does not enumerate the values it may take; the vocabulary is
        defined by the reference specification <xref target="IQA-SPEC"/>.</dd>
        <dt>AID</dt>
        <dd>A subject identifier defined outside this document. This document
        does not define AID, and makes no assumption about its length or
        encoding beyond what <xref target="exclusions"/> and
        <xref target="security"/> require. Nothing in this specification
        depends on an AID registry or authority.</dd>
      </dl>
    </section>

    <section anchor="scheme" numbered="true">
      <name>The iqa URI Scheme</name>

      <section anchor="syntax" numbered="true">
        <name>Syntax</name>
        <t>The general form of an <tt>iqa</tt> URI is:</t>
        <sourcecode type="ascii-art"><![CDATA[
iqa://<subject>.<organ>.<root>[/<action>]
]]></sourcecode>
        <t>The authority comprises exactly three dot-separated segments, in
        this order:</t>
        <ul>
          <li><tt>subject</tt>: either 8, 32 or 64 lowercase hexadecimal digits
          (a derived routing hash), or a readable label matching
          <tt>1*( %x61-7A / DIGIT / "-" )</tt>. Both forms are opaque to a
          client. The hash form is a routing hint and carries no verification
          weight (<xref target="exclusions"/>).</li>
          <li><tt>organ</tt>: one of the three organ names, <tt>forge</tt>,
          <tt>tss</tt> or <tt>gateway</tt>. This is a <strong>closed
          set</strong>; no other value is valid.</li>
          <li><tt>root</tt>: the root label of this scheme, matching
          <tt>1*( %x61-7A / DIGIT / "-" )</tt>. It is
          <tt>iqa</tt> for this specification. As with the other segments, it
          is a name and is never resolved.</li>
        </ul>
        <t>The action, when present, is a single path segment and is one of the
        four operation names <tt>verify</tt>, <tt>audit</tt>, <tt>attest</tt> or
        <tt>revoke</tt>. This is also a <strong>closed set</strong>.</t>
        <t>ABNF:</t>
        <sourcecode type="abnf"><![CDATA[
iqa-URI      = "iqa://" authority [ "/" action ]
authority    = subject "." organ "." root
subject      = hash-subject / name-subject
hash-subject = 8( lowhex ) / 32( lowhex ) / 64( lowhex )
name-subject = 1*( %x61-7A / DIGIT / "-" )
organ        = "forge" / "tss" / "gateway"
root         = 1*( %x61-7A / DIGIT / "-" )
action       = "verify" / "audit" / "attest" / "revoke"
lowhex       = DIGIT / %x61-66
]]></sourcecode>
        <t>Examples (the examples use the root label of this specification and
        placeholder subjects):</t>
        <sourcecode type="ascii-art"><![CDATA[
iqa://3f9a1b2c.gateway.iqa (routing hash, standing read)
iqa://0000004149434e531c5b21d80403358b.forge.iqa
iqa://3f9a1b2c.tss.iqa/audit (explicit fidelity audit)
iqa://master-authority.gateway.iqa/verify (readable label form)
]]></sourcecode>
        <t>The fragment component is not part of this scheme and MUST NOT be
        used to address an action.</t>
      </section>

      <section anchor="exclusions" numbered="true">
        <name>Reserved Characters and Exclusions</name>
        <ul>
          <li>The canonical form is <strong>lowercase US-ASCII</strong>.
          Uppercase is <strong>invalid input</strong>, not a formatting
          difference: a parser MUST NOT normalise an uppercase string into a
          valid URI, because two distinct strings would then map onto one
          subject.</li>
          <li><tt>.</tt>, <tt>/</tt> and <tt>://</tt> are the delimiters defined
          by this scheme.</li>
          <li>This scheme defines <strong>no <tt>userinfo</tt>, no port, no
          query, and no fragment</strong>. A URI containing any of them is not a
          valid <tt>iqa</tt> URI. In particular, credentials cannot appear in an
          <tt>iqa</tt> URI, and there is no field in which to exfiltrate
          data.</li>
          <li>Percent-encoding follows <xref target="RFC3986"
          section="2.1" sectionFormat="of"/>. Because no component requires
          characters outside the unreserved set, a canonical URI contains no
          percent-encoded octets; a parser MAY reject such input rather than
          normalising it.</li>
          <li>There is <strong>no "iqas"</strong> scheme and no protocol
          fallback. A client that does not implement this scheme fails closed
          (<xref target="client-req"/>).</li>
          <li>The hexadecimal subject form is a <strong>routing hint, not
          evidence</strong>. It carries no verification weight; identity is
          bound outside the URI and is never established by parsing one
          (<xref target="security"/>).</li>
        </ul>
      </section>

      <section anchor="default-op" numbered="true">
        <name>Default Operation</name>
        <t>Dereferencing an <tt>iqa</tt> URI without an action requests the
        <strong>default operation</strong>: a standing read, returning the
        subject's current attestation answer as reported by the named
        organ.</t>
        <t>The default operation is <strong>safe</strong> in the sense of
        <xref target="RFC3986" section="3.1" sectionFormat="of"/>: it creates no
        obligation, transfers no value, and mutates no state.</t>
        <t>The following rule is normative:</t>
        <t><strong>Dereferencing an <tt>iqa</tt> URI, by itself, MUST NOT
        transition any subject's standing state.</strong></t>
        <t>When an action is present, the default operation is not implied for
        it. Which actions are safe is stated in
        <xref target="action-safety"/>; a client MUST NOT infer safety for an
        unrecognised verb (<xref target="security"/>).</t>
      </section>

      <section anchor="action-safety" numbered="true">
        <name>Action Safety Classes</name>
        <t>The four defined actions have the following classes:</t>
        <table>
          <name>Action safety classes</name>
          <thead>
            <tr><th>Action</th><th>Semantics</th><th>Class</th></tr>
          </thead>
          <tbody>
            <tr><td>(omitted)</td><td>Read the current standing.</td>
              <td><strong>SAFE</strong>, read-only</td></tr>
            <tr><td>verify</td><td>Compare a presented seal against the
              subject. No state is written.</td>
              <td><strong>SAFE</strong>, read-only comparison</td></tr>
            <tr><td>audit</td><td>Request a fidelity measurement of the
              subject's execution.</td>
              <td><strong>NOT SAFE</strong>, a failed measurement may change
              standing</td></tr>
            <tr><td>attest</td><td>Request that a seal be issued for the
              subject.</td>
              <td><strong>NOT SAFE</strong>, state transition</td></tr>
            <tr><td>revoke</td><td>Withdraw the subject's standing.</td>
              <td><strong>NOT SAFE</strong>, state transition</td></tr>
          </tbody>
        </table>
        <t><tt>audit</tt> is not classified safe because the measurement it
        requests can itself change the outcome it measures: a failing
        measurement moves the subject onto a degraded path. A read can
        therefore change state, and that is precisely why <tt>audit</tt>,
        <tt>attest</tt> and <tt>revoke</tt> MUST be requested explicitly and
        MUST NOT be reachable by dereferencing a URI that omits the
        action.</t>
      </section>
    </section>

    <section anchor="client-req" numbered="true">
      <name>Client Requirements</name>
      <t>A client that handles an <tt>iqa</tt> URI (including a resolver page, a
      protocol handler, and a library that renders one) MUST satisfy the
      requirements below. They follow from <xref target="security"/>: an
      <tt>iqa</tt> URI may be supplied by an untrusted party, and its subject is
      a claim rather than a proof.</t>

      <section anchor="no-navigation" numbered="true">
        <name>No Navigation to the URI</name>
        <t>The <tt>subject</tt>, <tt>organ</tt>, <tt>root</tt> and
        <tt>action</tt> components MUST NOT be used as a navigation target. A
        client that renders a link, redirect, or fetch derived from any part of
        an <tt>iqa</tt> URI is an <strong>open redirect</strong> and is
        non-conformant.</t>
        <t>A client MAY navigate only to a destination that is fixed in advance
        by the client itself.</t>
      </section>

      <section anchor="prefix-check" numbered="true">
        <name>Scheme Prefix Check</name>
        <t>A protocol handler MUST reject any input whose scheme is neither
        <tt>iqa</tt> nor the exact scheme name under which that handler was
        itself registered. Without this check, the handler becomes a
        general-purpose launcher that any page can use to open an arbitrary URI
        of any scheme.</t>
      </section>

      <section anchor="consent" numbered="true">
        <name>Consent, Never Silence</name>
        <t>The ability to handle <tt>iqa</tt> URIs MUST NOT be acquired without
        an explicit action by the user, and a client MUST NOT simulate,
        pre-select, or otherwise bypass that consent. Where the platform
        exposes the list of registered handlers, that list MUST NOT be exposed
        to the network.</t>
      </section>

      <section anchor="parse-not-attestation" numbered="true">
        <name>Parsing Is Not Attestation</name>
        <t>A client that displays a parsed or rendered <tt>iqa</tt> URI MUST NOT
        present the result as evidence of standing. Reading the syntax
        establishes nothing about any subject; standing is established only by
        the answer of the named organ, under the rules of the reference
        specification <xref target="IQA-SPEC"/>.</t>
      </section>

      <section anchor="client-rationale" numbered="true">
        <name>Rationale</name>
        <t><tt>iqa://&lt;subject&gt;.&lt;organ&gt;.&lt;root&gt;/&lt;action&gt;</tt>
        is a short, human-readable string that any page can embed in a link.
        Without the rules above, the scheme would hand third parties two
        primitive attacks: using this project's domain as a redirector, and
        using a registered handler as a launcher for URIs the user never
        intended to open. The fourth rule guards a third failure mode specific
        to this scheme, a parse that <em>looks</em> like a certification. All
        three are properties of the <em>embedding context</em>, not of the URI
        syntax, which is why they are stated as client requirements rather than
        as grammar rules.</t>
      </section>
    </section>

    <section anchor="security" numbered="true">
      <name>Security Considerations</name>
      <ul>
        <li>An <tt>iqa</tt> URI is a <strong>claim about the attestation
        standing of a named subject</strong>. Neither the syntax nor any
        component of the URI is evidence of standing, and a client MUST NOT
        present a parsed URI as if it were.</li>
        <li><strong>Seal forgery.</strong> Standing is carried by a keyed
        message authentication code computed over the subject's identity
        material and its deployment parameters, not by the URI. Key material is
        never present in an <tt>iqa</tt> URI, and there is no component in
        which to place it.</li>
        <li><strong>Subject spoofing.</strong> A seal presented for one subject
        fails binding when replayed for another, because the binding covers
        hardware and deployment parameters of the subject. A client MUST NOT
        treat a syntactically valid subject as a verified one.</li>
        <li><strong>Credential leakage.</strong> Because <tt>userinfo</tt> is
        not defined (<xref target="exclusions"/>), credentials cannot appear in
        an <tt>iqa</tt> URI. Deployments MUST NOT place secrets in any
        component: the URI is expected to be logged, quoted, and rendered.</li>
        <li><strong>Linkability and disclosure of interest.</strong> An
        <tt>iqa</tt> URI names the subject being attested, so citing one
        discloses which identity is of interest, and querying several organs
        for the same subject is trivially correlatable. <strong>This scheme
        cannot be used for anonymous reference.</strong> Deployments SHOULD
        prefer the routing-hash form over readable labels, SHOULD NOT encode
        personal identifiers in the action, and SHOULD treat <tt>iqa</tt> URIs
        in logs with the same care as an identity assertion.</li>
        <li><strong>Downgrade and scheme confusion.</strong> No <tt>iqas</tt>
        variant exists and no fallback is defined. A client that does not
        implement this scheme MUST fail closed and MUST NOT silently rewrite an
        <tt>iqa</tt> URI as some other scheme.</li>
        <li><strong>No DNS dependency.</strong> This scheme performs no DNS
        resolution: the subject, organ and root do not map to IP addresses.
        Consequently there is no resolver to poison and no query metadata to
        observe on a resolution path. Resolution failure means no answer; there
        is no fallback path.</li>
        <li><strong>Silence is not assent.</strong> An endpoint that is
        unreachable, times out, or returns an error MUST NOT be read as
        affirmative standing. Absence of evidence is not evidence of
        compliance; clients fail closed.</li>
        <li><strong>Unknown actions carry unknown safety.</strong> The safe
        default of <xref target="default-op"/> applies to the omitted-action
        form only. An implementation MUST NOT infer safety for an unrecognised
        verb from that statement; it MUST treat the verb as having unknown
        safety and either require explicit authorisation under the local
        security policy or reject it.</li>
        <li><strong>Detection of observers.</strong> A measurement requested by
        the <tt>audit</tt> action compares observed execution timing against an
        expected path; execution that is slower than predicted is treated as
        evidence of an attached observer, and measurable deviation is itself
        the detector. This is a property of the answering organ, not of the URI
        syntax.</li>
        <li><strong>Replay across epochs.</strong> Standing material is rotated
        on a defined cycle, so a previously valid answer can become invalid
        without any change to the URI. A client MUST NOT treat a cached answer
        as current indefinitely.</li>
        <li><strong>Cryptographic suite.</strong> The current construction uses
        a keyed symmetric hash rather than a public-key signature, and is
        therefore not directly affected by quantum algorithms that break
        factoring or discrete logarithms. A successor construction is planned;
        see the reference specification <xref target="IQA-SPEC"/>.</li>
        <li>The scheme itself provides <strong>no confidentiality and no
        transport security</strong>. A URI is not a signature, and signing is
        not encryption.</li>
      </ul>
    </section>

    <section anchor="privacy" numbered="true">
      <name>Privacy Considerations</name>
      <ul>
        <li>An <tt>iqa</tt> URI identifies the subject whose standing is at
        issue. It is <strong>pseudonymous at best and not anonymous</strong>,
        and it is expected to be logged, quoted, and rendered by whatever
        carries it.</li>
        <li>Deployments that assign readable labels rather than derived hashes
        are choosing names that are meaningful to humans; that is a privacy
        trade-off made at assignment time, not a property of the scheme.</li>
        <li>No component is defined for a query string, so the scheme provides
        no convenient channel for a page to smuggle unrelated data into a
        request.</li>
        <li>Using an <tt>iqa</tt> URI does not by itself cause network traffic
        to a third party. Any traffic that follows is caused by the client's
        own, separately defined handling of the claim.</li>
        <li>A client that renders an <tt>iqa</tt> URI SHOULD avoid prefetching,
        handing the string to third-party services, or otherwise distributing
        it beyond what the user's action requires.</li>
      </ul>
    </section>

    <section anchor="i18n" numbered="true">
      <name>Internationalization Considerations</name>
      <t>The canonical form of an <tt>iqa</tt> URI is lowercase US-ASCII, and no
      international form is defined. Characters outside the permitted set are
      invalid input rather than input to be converted: a client MUST NOT map a
      Unicode label to its ASCII form (for example, by case folding or by
      applying an IDNA-style transformation) in order to accept it, and MUST
      NOT render an <tt>iqa</tt> URI as an IRI.</t>
      <t>This is deliberate. The scheme has no host to resolve, so there is no
      need for a label-to-ASCII transformation; permitting one would introduce
      a second way to write one subject.</t>
    </section>

    <section anchor="iana" numbered="true">
      <name>IANA Considerations</name>
      <t>IANA is requested to register the URI scheme <tt>iqa</tt> in the
      "Uniform Resource Identifier (URI) Schemes" registry, following the
      template of <xref target="RFC7595" section="7.4" sectionFormat="of"/>
      and the guidance of <xref target="RFC8126"/>.</t>
      <dl>
        <dt>Scheme name:</dt>
        <dd>iqa</dd>
        <dt>Status:</dt>
        <dd>Provisional</dd>
        <dt>Applications/protocols that use this scheme name:</dt>
        <dd>Subject-attestation references: an <tt>iqa</tt> URI names the
        attestation standing of a subject as reported by one of three named
        authority organs, without carrying the underlying cryptographic proof.
        It is used by the reference
        implementations and by tools that cite an attestation in a document, a
        configuration file or a log. The scheme defines addressing and client
        behaviour only; it does not define a transport, a discovery mechanism,
        or the attestation algorithm.</dd>
        <dt>Contact:</dt>
        <dd>ShaoBao Li
        &lt;<eref target="mailto:lee@iqa.org"/>&gt;</dd>
        <dt>Change controller:</dt>
        <dd>IQA.ORG Organization</dd>
        <dt>References:</dt>
        <dd>This document, and the reference specification published at
        <eref target="https://iqa.org/RFC-009/"/>.</dd>
        <dt>Security considerations:</dt>
        <dd>See <xref target="security"/> of this document.</dd>
      </dl>
      <t>Registration status as of 20 September 2026: a registration request was
      submitted to IANA on 17 September 2026 (ticket <strong>#1459963</strong>);
      the request is <strong>pending</strong>, and the scheme is <strong>not
      registered</strong>. It is inaccurate to describe the scheme as
      "registered", "assigned", or "standardised" until IANA publishes the
      registration.</t>
      <t>If this document is approved for publication as an RFC, IANA is
      requested to update the reference in the registry entry to point at that
      RFC.</t>
    </section>

    <section anchor="acknowledgements" numbered="true">
      <name>Acknowledgements</name>
      <t>The author thanks those who commented on earlier revisions of this
      document for their attention to the client-behaviour requirements, which
      are the part of this specification most likely to be
      misimplemented.</t>
    </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" fullname="S. Bradner"/>
            <date month="March" year="1997"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC3986" target="https://www.rfc-editor.org/info/rfc3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author initials="T." surname="Berners-Lee" fullname="T. Berners-Lee"/>
            <author initials="R." surname="Fielding" fullname="R. Fielding"/>
            <author initials="L." surname="Masinter" fullname="L. Masinter"/>
            <date month="January" year="2005"/>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC5234" target="https://www.rfc-editor.org/info/rfc5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author initials="D." surname="Crocker" fullname="D. Crocker" role="editor"/>
            <author initials="P." surname="Overell" fullname="P. Overell"/>
            <date month="January" year="2008"/>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC7595" target="https://www.rfc-editor.org/info/rfc7595">
          <front>
            <title>Guidelines and Registration Procedures for URI Schemes</title>
            <author initials="D." surname="Thaler" fullname="D. Thaler" role="editor"/>
            <author initials="T." surname="Hansen" fullname="T. Hansen"/>
            <author initials="T." surname="Hardie" fullname="T. Hardie"/>
            <date month="June" year="2015"/>
          </front>
          <seriesInfo name="BCP" value="35"/>
          <seriesInfo name="RFC" value="7595"/>
          <seriesInfo name="DOI" value="10.17487/RFC7595"/>
        </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" fullname="B. Leiba"/>
            <date month="May" year="2017"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author initials="M." surname="Cotton" fullname="M. Cotton"/>
            <author initials="B." surname="Leiba" fullname="B. Leiba"/>
            <author initials="T." surname="Narten" fullname="T. Narten"/>
            <date month="June" year="2017"/>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="IQA-SPEC" target="https://iqa.org/RFC-009/">
          <front>
            <title>RFC-009: Identity Quality Assurance, the iqa URI scheme specification</title>
            <author fullname="ShaoBao Li"/>
            <date month="September" year="2026"/>
          </front>
          <annotation>The reference specification for the iqa URI scheme,
          including the attestation algorithm, the standing vocabulary and the
          conformance material.</annotation>
        </reference>
        <reference anchor="RTTP" target="https://rttp.com/RFC-002/">
          <front>
            <title>RFC-002: Resonant Time Transfer Protocol (RTTP), the rttp URI scheme specification</title>
            <author fullname="ShaoBao Li"/>
            <date month="September" year="2026"/>
          </front>
          <annotation>The reference specification for the sibling rttp URI
          scheme, which addresses intent rather than attestation
          standing.</annotation>
        </reference>
    </references>

    <section anchor="examples" numbered="false">
      <name>Examples</name>

      <section anchor="examples-valid" numbered="false">
        <name>Valid forms</name>
        <sourcecode type="ascii-art"><![CDATA[
iqa://3f9a1b2c.gateway.iqa (routing hash, default operation)
iqa://3f9a1b2c.tss.iqa/audit (explicit fidelity audit)
iqa://master-authority.gateway.iqa/verify (readable label form)
]]></sourcecode>
      </section>

      <section anchor="examples-invalid" numbered="false">
        <name>Invalid forms and the reason</name>
        <table>
          <name>Invalid input and why it is rejected</name>
          <thead>
            <tr><th>Input</th><th>Reason</th></tr>
          </thead>
          <tbody>
            <tr><td>IQA://3f9a1b2c.gateway.iqa</td>
              <td>Uppercase scheme or components are invalid input, not
              normalisable.</td></tr>
            <tr><td>iqa://subject@iqa.org</td>
              <td>No userinfo component is defined, and the authority does not
              have three segments.</td></tr>
            <tr><td>iqa://iqa.org/RFC-009/</td>
              <td>No organ segment, and the action is not one of the four
              defined names.</td></tr>
            <tr><td>iqa://3f9a1b2c.forgery.iqa</td>
              <td>The organ name is outside the closed set.</td></tr>
            <tr><td>iqa://3f9a1b2c.tss.iqa/ATTEST</td>
              <td>Uppercase action; action names are lowercase.</td></tr>
            <tr><td>iqa://3f9a1b2c.tss.iqa/</td>
              <td>Trailing slash with an empty action is not a valid
              action.</td></tr>
            <tr><td>iqa://3f9a1b2c.tss.iqa?v=1</td>
              <td>No query component is defined.</td></tr>
            <tr><td>iqa://3f9a1b2c.tss.iqa#top</td>
              <td>No fragment component is defined.</td></tr>
            <tr><td>iqa://3f9a1b2c.tss.iqa:80/audit</td>
              <td>No port component is defined.</td></tr>
            <tr><td>iqa://3f9a1b2c.iqa</td>
              <td>The authority does not have exactly three segments.</td></tr>
            <tr><td>iqa://3f9a1b2c.tss.iqa/audit/extra</td>
              <td>The action is a single path segment.</td></tr>
          </tbody>
        </table>
      </section>
    </section>

  </back>
</rfc>
