{
  "$schema": "/api/schemas/documents.schema.json",
  "apiVersion": "1.1.0",
  "lastModified": "2026-10-21T16:58:36.359Z",
  "sourcePath": "src/main/data/docs",
  "docId": "RFC9954",
  "document": {
    "abstract": "Hybrid key exchange refers to using multiple key exchange algorithms simultaneously and combining the result with the goal of providing security even if a way is found to defeat the encryption for all but one of the component algorithms. It is motivated by the transition to post-quantum cryptography. This document provides a construction for hybrid key exchange in the Transport Layer Security (TLS) protocol version 1.3.",
    "abstract$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML abstract",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc9954/",
      "updated": "2026-10-21T16:58:36.359Z",
      "version": "extractDocs.js@commit:2c1e5418e9d0"
    },
    "authors": [
      {
        "name": "Douglas Stebila"
      },
      {
        "name": "Scott Fluhrer"
      },
      {
        "name": "Shay Gueron"
      }
    ],
    "authors$meta": {
      "confidence": "high",
      "note": "Parsed from Datatracker doc page article:author (profile full names)",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc9954/",
      "updated": "2026-10-21T16:58:36.359Z",
      "version": "extractDocs.js@commit:2c1e5418e9d0"
    },
    "docId": "RFC9954",
    "docId$meta": {
      "confidence": "high",
      "note": "Derived from RFC number or Datatracker identifier",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc9954/",
      "updated": "2026-10-21T16:58:36.359Z",
      "version": "extractDocs.js@commit:2c1e5418e9d0"
    },
    "docLabel": "IETF RFC 9954",
    "docLabel$meta": {
      "confidence": "high",
      "note": "Constructed from provider and document identifier",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc9954/",
      "updated": "2026-10-21T16:58:36.359Z",
      "version": "extractDocs.js@commit:2c1e5418e9d0"
    },
    "docNumber": "9954",
    "docNumber$meta": {
      "confidence": "high",
      "note": "From the RFC index entry (rfc-index.xml <doc-id>)",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc9954/",
      "updated": "2026-10-21T16:58:36.359Z",
      "version": "extractDocs.js@commit:2c1e5418e9d0"
    },
    "docTitle": "Hybrid Key Exchange in TLS 1.3",
    "docTitle$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML title",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc9954/",
      "updated": "2026-10-21T16:58:36.359Z",
      "version": "extractDocs.js@commit:2c1e5418e9d0"
    },
    "docType": "Informational",
    "docType$meta": {
      "confidence": "high",
      "note": "Mapped from Datatracker std_level or RFC status text",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc9954/",
      "updated": "2026-10-21T16:58:36.359Z",
      "version": "extractDocs.js@commit:2c1e5418e9d0"
    },
    "doi": "10.17487/RFC9954",
    "doi$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML doi",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc9954/",
      "updated": "2026-10-21T16:58:36.359Z",
      "version": "extractDocs.js@commit:2c1e5418e9d0"
    },
    "href": "https://doi.org/10.17487/RFC9954",
    "href$meta": {
      "confidence": "high",
      "note": "Derived from DOI (https://doi.org/<doi>)",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc9954/",
      "updated": "2026-10-21T16:58:36.359Z",
      "version": "extractDocs.js@commit:2c1e5418e9d0"
    },
    "keywords": [
      "Post-quantum Cryptography"
    ],
    "keywords$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML keywords",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc9954/",
      "updated": "2026-10-21T16:58:36.359Z",
      "version": "extractDocs.js@commit:2c1e5418e9d0"
    },
    "pages": "18",
    "pages$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML page-count",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc9954/",
      "updated": "2026-10-21T16:58:36.359Z",
      "version": "extractDocs.js@commit:2c1e5418e9d0"
    },
    "publicationDate": "2026-07-01",
    "publicationDate$meta": {
      "confidence": "high",
      "note": "Parsed from RFC index XML date",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc9954/",
      "updated": "2026-10-21T16:58:36.359Z",
      "version": "extractDocs.js@commit:2c1e5418e9d0"
    },
    "publisher": "IETF",
    "publisher$meta": {
      "confidence": "high",
      "note": "Static: provider",
      "originalValue": null,
      "source": "parsed",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc9954/",
      "updated": "2026-10-21T16:58:36.359Z",
      "version": "extractDocs.js@commit:2c1e5418e9d0"
    },
    "references": {
      "bibliographic": [
        "10.1109-SP.2015.40",
        "10.1007-978-3-540-88702-7",
        "10.1007-978-3-030-25510-7_12",
        "IETF.draft-campagna-tls-bike-sike-hybrid-07",
        "IETF.draft-josefsson-mceliece-05",
        "10.1007-978-3-540-30576-7_11",
        "10.1007-s00145-021-09384-1",
        "IETF.draft-ietf-tls-ecdhe-mlkem-05",
        "10.1007-978-1-4684-4730-9_4",
        "RFC8773",
        "10.1145-2976749.2978425",
        "10.1007-978-3-319-76578-5_7",
        "10.1007-11426639_6",
        "RFC9180",
        "RFC8784",
        "IETF.draft-kiefer-tls-ecdhe-sidh-00",
        "10.1109-SP.2013.42",
        "NIST.FIPS.203",
        "NIST.SP.800-56Cr2",
        "NIST.SP.800-135r1",
        "GITHUB.open-quantum-safe.oqs-provider",
        "RFC9794",
        "10.1007-978-3-030-44223-1_5",
        "RFC9370",
        "IETF.draft-schanck-tls-additional-keyshare-00",
        "IETF.draft-whyte-qsh-tls12-02",
        "IETF.draft-whyte-qsh-tls13-06",
        "RFC8391",
        "10.1007-978-3-540-24632-9_26",
        "orphan/RFC9954/h:4dffc6d8",
        "orphan/RFC9954/h:6b9cf445",
        "orphan/RFC9954/h:b5b6a26c",
        "orphan/RFC9954/h:b43af7bc",
        "orphan/RFC9954/h:5014aef9",
        "orphan/RFC9954/h:c224fc39",
        "orphan/RFC9954/h:b17460e8",
        "orphan/RFC9954/h:bce49288",
        "orphan/RFC9954/h:7a404d9f",
        "orphan/RFC9954/h:cb82ea98",
        "orphan/RFC9954/h:02951334",
        "orphan/RFC9954/h:980924bc",
        "orphan/RFC9954/h:123f3c7c",
        "orphan/RFC9954/h:138718de"
      ],
      "bibliographic$meta": {
        "confidence": "high",
        "note": "Parsed from RFC HTML references/informative sections",
        "originalValue": [],
        "source": "parsed",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc9954/",
        "updated": "2026-10-21T16:58:36.359Z",
        "version": "extractDocs.js@commit:2c1e5418e9d0"
      },
      "normative": [
        "10.1007-s00145-011-9114-1",
        "10.1007-978-3-319-70500-2_12",
        "RFC2119",
        "RFC8174",
        "RFC9846"
      ],
      "normative$meta": {
        "confidence": "high",
        "note": "Parsed from RFC HTML normative references sections",
        "originalValue": [],
        "source": "parsed",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc9954/",
        "updated": "2026-10-21T16:58:36.359Z",
        "version": "extractDocs.js@commit:2c1e5418e9d0"
      }
    },
    "resolvedHref": "https://www.rfc-editor.org/info/rfc9954/",
    "resolvedHref$meta": {
      "confidence": "high",
      "note": "Final URL resolved via URL redirect verification",
      "originalValue": null,
      "source": "resolved",
      "sourceUrl": "https://www.rfc-editor.org/info/rfc9954/",
      "updated": "2026-10-21T16:58:36.359Z",
      "version": "extractDocs.js@commit:2c1e5418e9d0"
    },
    "status": {
      "active": true,
      "active$meta": {
        "confidence": "high",
        "note": "Derived from supersession relationship fields",
        "originalValue": null,
        "source": "resolved",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc9954/",
        "updated": "2026-10-21T16:58:36.359Z",
        "version": "extractDocs.js@commit:2c1e5418e9d0"
      },
      "errataExist": true,
      "errataExist$meta": {
        "confidence": "high",
        "note": "Derived from presence of errata links on RFC/Datatracker pages",
        "originalValue": null,
        "source": "parsed",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc9954/",
        "updated": "2026-10-21T16:58:36.359Z",
        "version": "extractDocs.js@commit:2c1e5418e9d0"
      },
      "errataUrl": [
        "https://www.rfc-editor.org/errata/rfc9954",
        "https://www.rfc-editor.org/errata_search.php?rfc=9954",
        "https://www.rfc-editor.org/rfc/inline-errata/rfc9954.html"
      ],
      "errataUrl$meta": {
        "confidence": "high",
        "note": "Parsed from errata links on RFC/Datatracker pages",
        "originalValue": [],
        "source": "parsed",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc9954/",
        "updated": "2026-10-21T16:58:36.359Z",
        "version": "extractDocs.js@commit:2c1e5418e9d0"
      },
      "latestVersion": true,
      "latestVersion$meta": {
        "confidence": "high",
        "note": "Derived from supersession relationship fields",
        "originalValue": null,
        "source": "resolved",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc9954/",
        "updated": "2026-10-21T16:58:36.359Z",
        "version": "extractDocs.js@commit:2c1e5418e9d0"
      },
      "statusNote": "Informational",
      "statusNote$meta": {
        "confidence": "high",
        "note": "Mapped from Datatracker doc.json std_level",
        "originalValue": null,
        "source": "parsed",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc9954/",
        "updated": "2026-10-21T16:58:36.359Z",
        "version": "extractDocs.js@commit:2c1e5418e9d0"
      },
      "superseded": false,
      "superseded$meta": {
        "confidence": "high",
        "note": "Derived from supersession relationship fields",
        "originalValue": null,
        "source": "resolved",
        "sourceUrl": "https://www.rfc-editor.org/info/rfc9954/",
        "updated": "2026-10-21T16:58:36.359Z",
        "version": "extractDocs.js@commit:2c1e5418e9d0"
      }
    }
  }
}