Contents

PACT 2 · currentrevised 2026-09-30

Test vectors

What a conforming implementation must reproduce, open and verify: the file, and every member of it rendered.

The vectors of Appendix B, as the file the specification’s own checker runs: certificates to the profile of § 14.1, chain cases naming the rule of § 14.2 each refusal fails, the newest-leaf comparisons of § 14.3, certificate_renewed answers (§ 14.4), v: 2 envelopes (§ 13) and the passkey derivation of § 2.1. An implementation that opens and verifies all of them is envelope-interoperable (§ 13.5).

Download pact-2.0-vectors.json 31,523 bytes · sha256 a1324667fdc6238f0e3b3af88b09608b2a40fecad1749cd695c7219f59c4f561

MemberHolds
generated_bytext
nowtext
certificates10 entries
leaf_keys_pkcs8_hex3 entries
chain_cases15 cases
newest_leaf_cases4 cases
certificate_renewed_cases3 cases
envelopes3 cases
derivation3 cases

generated_by

"vectors/gen.mjs (every key derives from a label; what Ed25519 signs reproduces byte for byte; an ECDSA signature is one valid signature and is NEW EACH RUN, so root_b, leaf_b, leaf_b_twin and the P-256 envelope differ in their signature bytes from one generation to the next, and are to be verified, never compared)"

now

"2026-09-13T12:00:00Z"

certificates

{
  "root_a": {
    "der_hex": "308201313081e4a0030201020209009902956916dc1741300506032b657030143112301006035504030c09416c696e612052616f3020170d3236303930313030303030305a180f39393939313233313233353935395a30143112301006035504030c09416c696e612052616f302a300506032b65700321000cb85b79f8e09ac5e8264d833c151113b1002f17dcc1bf5c4497d24b7cffd3b0a351304f30120603551d130101ff040830060101ff020100300e0603551d0f0101ff04040302020430290603551d0e04220420633cfd0fb6be62a0e97c519bafa4abf363a5f8b4f37f3db26bffc320abad9bec300506032b65700341006af142b4666634fcdd49896354d52a763bae899b3f42f7c059070078078d993435bd09ab85c9c8f60e0721a85280b10e8169fbaee2ba52feca3bf9c8460b6501",
    "note": "Ed25519 root, self-signed, CN \"Alina Rao\", notAfter 9999-12-31"
  },
  "root_b": {
    "der_hex": "308201783082011ea003020102020900e51123c1ee85d6e0300a06082a8648ce3d04030230173115301306035504030c0c426861726174204d656874613020170d3236303930313030303030305a180f39393939313233313233353935395a30173115301306035504030c0c426861726174204d656874613059301306072a8648ce3d020106082a8648ce3d0301070342000400b37ef8a33dc093cc42687c60aef3f73ab71289ef82625e1482531d848714e35f3c490ba6e9a3a028c023815fba8209f0f511a4b78b420ca45fac122bdbce27a351304f30120603551d130101ff040830060101ff020100300e0603551d0f0101ff04040302020430290603551d0e04220420f53e3a50e4c41653c2db3189679a867339db836d79c5b0ba6f1704d13e50a2b3300a06082a8648ce3d0403020348003045022100bfb96c140ffd9df58e46f70efa29d351923a8fdd879a993b94838dfaa1c389450220273cf249d6eb874640cb3d466efe6f12659ca2db79cafb8afd9beb898ea73fe4",
    "note": "P-256 root, self-signed, CN \"Bharat Mehta\""
  },
  "leaf_a": {
    "der_hex": "308201b93082016ba003020102020900ea540e3161472cf5300506032b657030143112301006035504030c09416c696e612052616f301e170d3236303930313030303030305a170d3237303930313030303030305a30143112301006035504030c09416c696e612052616f302a300506032b65700321004eeb9d16157a525df7081d67dd25af338526e6b6cec2fa43e4536a0c4213cff4a381d93081d6300c0603551d130101ff04023000300e0603551d0f0101ff040403020780301d0603551d250416301406082b0601050507030106082b06010505070302303f0603551d1104383036861f68747470733a2f2f6167656e742e616c696e612e6578616d706c652f6d637082136167656e742e616c696e612e6578616d706c6530290603551d0e042204203579fc22b8c43dd0ffb01278a0e62b4d5507e487c10830d9cd4a25af989f0252302b0603551d23042430228020633cfd0fb6be62a0e97c519bafa4abf363a5f8b4f37f3db26bffc320abad9bec300506032b65700341001f1e6119b4ba1d267976806265c7942799a8f0a53e5e350f68436ee06f22d4685b4907b7a324c91e43eb9d8c49c92272f482a4bad8a10ada15b77122ffb7c100",
    "note": "Ed25519 leaf under root_a for https://agent.alina.example/mcp, 2026-09-01 to 2027-09-01, with a dNSName beside the URI"
  },
  "leaf_b": {
    "der_hex": "308201ea30820190a003020102020862cf0a32fd882130300a06082a8648ce3d04030230173115301306035504030c0c426861726174204d65687461301e170d3236303930313030303030305a170d3237303930313030303030305a30173115301306035504030c0c426861726174204d656874613059301306072a8648ce3d020106082a8648ce3d03010703420004d6e652937ca86505559bc84e4936573de2d110833c4718cef004a203c054a92dcdfb5e5765ebc267dc3d241783447ba3b58cec954ea8ca5f24fdb8963dca1897a381c53081c2300c0603551d130101ff04023000300e0603551d0f0101ff040403020388301d0603551d250416301406082b0601050507030106082b06010505070302302b0603551d1104243022862068747470733a2f2f6167656e742e6268617261742e6578616d706c652f6d637030290603551d0e04220420aeecb55b2b35908f453ec115bda1f469a90d0b45336ca53451212c95313db25f302b0603551d23042430228020f53e3a50e4c41653c2db3189679a867339db836d79c5b0ba6f1704d13e50a2b3300a06082a8648ce3d0403020348003045022100bb8260fac6457a4912714bf7f9b4893c895900a74249dc1cf497f97169373d1e022003b8e408bbb93fc9a7ed13b6d292b4706d469c8bd04c2cf9f3d1391a497fe181",
    "note": "P-256 leaf under root_b for https://agent.bharat.example/mcp, 2026-09-01 to 2027-09-01, keyUsage digitalSignature+keyAgreement"
  },
  "leaf_a_expired": {
    "der_hex": "308201a330820155a00302010202080c2ba902f1b494b2300506032b657030143112301006035504030c09416c696e612052616f301e170d3235303630313030303030305a170d3236303630313030303030305a30143112301006035504030c09416c696e612052616f302a300506032b65700321004eeb9d16157a525df7081d67dd25af338526e6b6cec2fa43e4536a0c4213cff4a381c43081c1300c0603551d130101ff04023000300e0603551d0f0101ff040403020780301d0603551d250416301406082b0601050507030106082b06010505070302302a0603551d1104233021861f68747470733a2f2f6167656e742e616c696e612e6578616d706c652f6d637030290603551d0e042204203579fc22b8c43dd0ffb01278a0e62b4d5507e487c10830d9cd4a25af989f0252302b0603551d23042430228020633cfd0fb6be62a0e97c519bafa4abf363a5f8b4f37f3db26bffc320abad9bec300506032b657003410078253e01125b5a8f0245cba04cce5b195a601ebae8f640e5b6cd36433a5dcd4cc00944a7d621e0545727fcedce09577a62653b4a06b76f4e669dc340f53a0d05",
    "note": "leaf_a's key and endpoint, 2025-06-01 to 2026-06-01: expired at NOW"
  },
  "leaf_a_long": {
    "der_hex": "308201a430820156a003020102020900bca80aa75de7cf1e300506032b657030143112301006035504030c09416c696e612052616f301e170d3236303930313030303030305a170d3237313031303030303030305a30143112301006035504030c09416c696e612052616f302a300506032b65700321004eeb9d16157a525df7081d67dd25af338526e6b6cec2fa43e4536a0c4213cff4a381c43081c1300c0603551d130101ff04023000300e0603551d0f0101ff040403020780301d0603551d250416301406082b0601050507030106082b06010505070302302a0603551d1104233021861f68747470733a2f2f6167656e742e616c696e612e6578616d706c652f6d637030290603551d0e042204203579fc22b8c43dd0ffb01278a0e62b4d5507e487c10830d9cd4a25af989f0252302b0603551d23042430228020633cfd0fb6be62a0e97c519bafa4abf363a5f8b4f37f3db26bffc320abad9bec300506032b65700341007a65be17bf2783484755224e3ed383682c3979b1053743d7fad98f023c2dcc2694546b3f25f6ca6f85dd7c8f805d1ab6432c442ca2a872c9560019910b409404",
    "note": "leaf_a's key and endpoint, 2026-09-01 to 2027-10-10: 404 days"
  },
  "leaf_a_next": {
    "der_hex": "308201a330820155a0030201020208184ebda4c22a39ae300506032b657030143112301006035504030c09416c696e612052616f301e170d3237303830323030303030305a170d3238303830313030303030305a30143112301006035504030c09416c696e612052616f302a300506032b6570032100eaea799849559930c97b850037b8c8eca3a623a1c96d8f9d3a4ee9ef3c4b4b9fa381c43081c1300c0603551d130101ff04023000300e0603551d0f0101ff040403020780301d0603551d250416301406082b0601050507030106082b06010505070302302a0603551d1104233021861f68747470733a2f2f6167656e742e616c696e612e6578616d706c652f6d637030290603551d0e042204204046e58de3045443592671cdddbc9b1826cc1429527e4c61a7bedafa6a6c24cf302b0603551d23042430228020633cfd0fb6be62a0e97c519bafa4abf363a5f8b4f37f3db26bffc320abad9bec300506032b657003410050368ac0d4b906fd8080544016dfe1a842e90bd3625fd197863e4e70c0684fcfdbdff406dbb31475020c389b4d07a9ed959ffb5a67d93320503ef8e38dcd2402",
    "note": "a fresh key for the same endpoint, 2027-08-02 to 2028-08-01: the renewal that supersedes leaf_a"
  },
  "leaf_b_twin": {
    "der_hex": "308201eb30820190a003020102020862cf0a32fd882130300a06082a8648ce3d04030230173115301306035504030c0c426861726174204d65687461301e170d3236303930313030303030305a170d3237303930313030303030305a30173115301306035504030c0c426861726174204d656874613059301306072a8648ce3d020106082a8648ce3d03010703420004d6e652937ca86505559bc84e4936573de2d110833c4718cef004a203c054a92dcdfb5e5765ebc267dc3d241783447ba3b58cec954ea8ca5f24fdb8963dca1897a381c53081c2300c0603551d130101ff04023000300e0603551d0f0101ff040403020388301d0603551d250416301406082b0601050507030106082b06010505070302302b0603551d1104243022862068747470733a2f2f6167656e742e6268617261742e6578616d706c652f6d637030290603551d0e04220420aeecb55b2b35908f453ec115bda1f469a90d0b45336ca53451212c95313db25f302b0603551d23042430228020f53e3a50e4c41653c2db3189679a867339db836d79c5b0ba6f1704d13e50a2b3300a06082a8648ce3d0403020349003046022100fe19c7d257048a4b92311ee9b834e3196458536975963bcf368416573836ff7e022100839f8cd13aee03f65673508abe03f9769c22781dd204be29098aac860668ecc3",
    "note": "leaf_b's TBS under the OTHER twin of an ECDSA signature, (r, n − s): it verifies under root_b and is refused by the profile (§14.1: low-S)",
    "refused": true
  },
  "leaf_a_feb30": {
    "der_hex": "308201a430820156a003020102020900de7fe857145b30bb300506032b657030143112301006035504030c09416c696e612052616f301e170d3236303233303132303030305a170d3237303330313030303030305a30143112301006035504030c09416c696e612052616f302a300506032b65700321004eeb9d16157a525df7081d67dd25af338526e6b6cec2fa43e4536a0c4213cff4a381c43081c1300c0603551d130101ff04023000300e0603551d0f0101ff040403020780301d0603551d250416301406082b0601050507030106082b06010505070302302a0603551d1104233021861f68747470733a2f2f6167656e742e616c696e612e6578616d706c652f6d637030290603551d0e042204203579fc22b8c43dd0ffb01278a0e62b4d5507e487c10830d9cd4a25af989f0252302b0603551d23042430228020633cfd0fb6be62a0e97c519bafa4abf363a5f8b4f37f3db26bffc320abad9bec300506032b65700341006d96b89618bb98c7bd0083956cab648d528b5cf42ccfa41d7c293c7a5ae1eef1b8aba3ea93f7c330e280b3c58ec4d7e05d5bb485facf59edd04d5eb3a7042a0a",
    "note": "leaf_a's key and endpoint with a notBefore of 260230120000Z, 30 February: refused, not read as 2 March (§14.1)",
    "refused": true
  },
  "leaf_a_aki3": {
    "der_hex": "3082018730820139a003020102020900b134d8a0c4474f83300506032b657030143112301006035504030c09416c696e612052616f301e170d3236303930313030303030305a170d3237303930313030303030305a30143112301006035504030c09416c696e612052616f302a300506032b65700321004eeb9d16157a525df7081d67dd25af338526e6b6cec2fa43e4536a0c4213cff4a381a73081a4300c0603551d130101ff04023000300e0603551d0f0101ff040403020780301d0603551d250416301406082b0601050507030106082b06010505070302302a0603551d1104233021861f68747470733a2f2f6167656e742e616c696e612e6578616d706c652f6d637030290603551d0e042204203579fc22b8c43dd0ffb01278a0e62b4d5507e487c10830d9cd4a25af989f0252300e0603551d23040730058003010203300506032b65700341004301ca81eabaab8b7bd9ff7f00900beb90b9e88f1b8f96782550a6dd0878338d8fdf43f5ac264e10ba70b89d43dfed57c3e7f937f1b9f44e19d8822751be490b",
    "note": "leaf_a's key and endpoint with an authorityKeyIdentifier of three bytes, 01 02 03: refused, because a key identifier is 32 bytes (§14.1), at card intake as much as in a chain",
    "refused": true
  }
}

leaf_keys_pkcs8_hex

{
  "leaf_a": "302e020100300506032b6570042204204896ed640768ccb301df47585afe0488dd5095d2c325c68c3b08d66c085b4272",
  "leaf_a_next": "302e020100300506032b657004220420595eb444aaa52fea62576f1d2e89e82af0b6d111582b6b371008e4a8ff072633",
  "leaf_b": "3041020100301306072a8648ce3d020106082a8648ce3d0301070427302502010104206a261bbb098c126fe60dcc26a72045d97db5079d52cd59826220705150ad60d7"
}

chain_cases

CaseExpect
alina validaccept
bharat validaccept
first contact, no expectationaccept
chain of threerefuse
single certificate is not a chainrefuse
leaf presented as rootrefuse
root is not the one pinnedrefuse
leaf under the wrong rootrefuse
expired leafrefuse
leaf not yet validrefuse
leaf longer than 398 daysrefuse
endpoint mismatchrefuse
an ECDSA signature swapped for its twinrefuse
a validity field that is not a daterefuse
an issuer key identifier that is not 32 bytesrefuse
[
  {
    "name": "alina valid",
    "chain": [
      "leaf_a",
      "root_a"
    ],
    "expected_root": "sha256:Yzz9D7a-YqDpfFGbr6Sr82Ol-LTzfz2ya__DIKutm-w",
    "expected_endpoint": "https://agent.alina.example/mcp",
    "now": "2026-09-13T12:00:00Z",
    "expect": "accept"
  },
  {
    "name": "bharat valid",
    "chain": [
      "leaf_b",
      "root_b"
    ],
    "expected_root": "sha256:9T46UOTEFlPC2zGJZ5qGcznbg215xbC6bxcE0T5QorM",
    "expected_endpoint": "https://agent.bharat.example/mcp",
    "now": "2026-09-13T12:00:00Z",
    "expect": "accept"
  },
  {
    "name": "first contact, no expectation",
    "chain": [
      "leaf_a",
      "root_a"
    ],
    "now": "2026-09-13T12:00:00Z",
    "expect": "accept"
  },
  {
    "name": "chain of three",
    "chain": [
      "leaf_a",
      "root_a",
      "root_a"
    ],
    "now": "2026-09-13T12:00:00Z",
    "expect": "refuse",
    "rule": 1
  },
  {
    "name": "single certificate is not a chain",
    "chain": [
      "root_a"
    ],
    "now": "2026-09-13T12:00:00Z",
    "expect": "refuse",
    "rule": 1
  },
  {
    "name": "leaf presented as root",
    "chain": [
      "leaf_a",
      "leaf_a"
    ],
    "now": "2026-09-13T12:00:00Z",
    "expect": "refuse",
    "rule": 1
  },
  {
    "name": "root is not the one pinned",
    "chain": [
      "leaf_a",
      "root_a"
    ],
    "expected_root": "sha256:9T46UOTEFlPC2zGJZ5qGcznbg215xbC6bxcE0T5QorM",
    "now": "2026-09-13T12:00:00Z",
    "expect": "refuse",
    "rule": 2
  },
  {
    "name": "leaf under the wrong root",
    "chain": [
      "leaf_a",
      "root_b"
    ],
    "now": "2026-09-13T12:00:00Z",
    "expect": "refuse",
    "rule": 3
  },
  {
    "name": "expired leaf",
    "chain": [
      "leaf_a_expired",
      "root_a"
    ],
    "now": "2026-09-13T12:00:00Z",
    "expect": "refuse",
    "rule": 4
  },
  {
    "name": "leaf not yet valid",
    "chain": [
      "leaf_a_next",
      "root_a"
    ],
    "now": "2026-09-13T12:00:00Z",
    "expect": "refuse",
    "rule": 4
  },
  {
    "name": "leaf longer than 398 days",
    "chain": [
      "leaf_a_long",
      "root_a"
    ],
    "now": "2026-09-13T12:00:00Z",
    "expect": "refuse",
    "rule": 4
  },
  {
    "name": "endpoint mismatch",
    "chain": [
      "leaf_a",
      "root_a"
    ],
    "expected_endpoint": "https://agent.alina.example/mcp/",
    "now": "2026-09-13T12:00:00Z",
    "expect": "refuse",
    "rule": 5
  },
  {
    "name": "an ECDSA signature swapped for its twin",
    "chain": [
      "leaf_b_twin",
      "root_b"
    ],
    "now": "2026-09-13T12:00:00Z",
    "expect": "refuse",
    "rule": 1
  },
  {
    "name": "a validity field that is not a date",
    "chain": [
      "leaf_a_feb30",
      "root_a"
    ],
    "now": "2026-09-13T12:00:00Z",
    "expect": "refuse",
    "rule": 1
  },
  {
    "name": "an issuer key identifier that is not 32 bytes",
    "chain": [
      "leaf_a_aki3",
      "root_a"
    ],
    "now": "2026-09-13T12:00:00Z",
    "expect": "refuse",
    "rule": 1
  }
]

newest_leaf_cases

[
  {
    "pinned": "leaf_a",
    "presented": "leaf_a",
    "expect": "same"
  },
  {
    "pinned": "leaf_a",
    "presented": "leaf_a_next",
    "expect": "newer"
  },
  {
    "pinned": "leaf_a_next",
    "presented": "leaf_a",
    "expect": "superseded"
  },
  {
    "pinned": "leaf_a",
    "presented": "leaf_a_long",
    "expect": "conflict"
  }
]

certificate_renewed_cases

CaseExpect
renewal followedfollow
older chain discardeddiscard
another root discardeddiscard
[
  {
    "name": "renewal followed",
    "pinned_leaf": "leaf_a",
    "dialed": "https://agent.alina.example/mcp",
    "now": "2027-08-15T12:00:00Z",
    "answer": {
      "code": "certificate_renewed",
      "data": {
        "chain": [
          "MIIBozCCAVWgAwIBAgIIGE69pMIqOa4wBQYDK2VwMBQxEjAQBgNVBAMMCUFsaW5hIFJhbzAeFw0yNzA4MDIwMDAwMDBaFw0yODA4MDEwMDAwMDBaMBQxEjAQBgNVBAMMCUFsaW5hIFJhbzAqMAUGAytlcAMhAOrqeZhJVZkwyXuFADe4yOyjpiOhyW2PnTpO6e88S0ufo4HEMIHBMAwGA1UdEwEB_wQCMAAwDgYDVR0PAQH_BAQDAgeAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAqBgNVHREEIzAhhh9odHRwczovL2FnZW50LmFsaW5hLmV4YW1wbGUvbWNwMCkGA1UdDgQiBCBARuWN4wRUQ1kmcc3dvJsYJswUKVJ-TGGnvtr6amwkzzArBgNVHSMEJDAigCBjPP0Ptr5ioOl8UZuvpKvzY6X4tPN_PbJr_8Mgq62b7DAFBgMrZXADQQBQNorA1LkG_YCAVEAW3-GoQukL02Jf0ZeGPk5wwGhPz9vf9AbbsxR1Agw4m00Hqe2Vn_taZ9kzIFA--OONzSQC",
          "MIIBMTCB5KADAgECAgkAmQKVaRbcF0EwBQYDK2VwMBQxEjAQBgNVBAMMCUFsaW5hIFJhbzAgFw0yNjA5MDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowFDESMBAGA1UEAwwJQWxpbmEgUmFvMCowBQYDK2VwAyEADLhbefjgmsXoJk2DPBURE7EALxfcwb9cRJfSS3z_07CjUTBPMBIGA1UdEwEB_wQIMAYBAf8CAQAwDgYDVR0PAQH_BAQDAgIEMCkGA1UdDgQiBCBjPP0Ptr5ioOl8UZuvpKvzY6X4tPN_PbJr_8Mgq62b7DAFBgMrZXADQQBq8UK0ZmY0_N1JiWNU1Sp2O66Jmz9C98BZBwB4B42ZNDW9CauFycj2DgchqFKAsQ6Bafuu4rpS_so7-chGC2UB"
        ]
      }
    },
    "expect": "follow"
  },
  {
    "name": "older chain discarded",
    "pinned_leaf": "leaf_a_next",
    "dialed": "https://agent.alina.example/mcp",
    "now": "2027-08-15T12:00:00Z",
    "answer": {
      "code": "certificate_renewed",
      "data": {
        "chain": [
          "MIIBuTCCAWugAwIBAgIJAOpUDjFhRyz1MAUGAytlcDAUMRIwEAYDVQQDDAlBbGluYSBSYW8wHhcNMjYwOTAxMDAwMDAwWhcNMjcwOTAxMDAwMDAwWjAUMRIwEAYDVQQDDAlBbGluYSBSYW8wKjAFBgMrZXADIQBO650WFXpSXfcIHWfdJa8zhSbmts7C-kPkU2oMQhPP9KOB2TCB1jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB_wQEAwIHgDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwPwYDVR0RBDgwNoYfaHR0cHM6Ly9hZ2VudC5hbGluYS5leGFtcGxlL21jcIITYWdlbnQuYWxpbmEuZXhhbXBsZTApBgNVHQ4EIgQgNXn8IrjEPdD_sBJ4oOYrTVUH5IfBCDDZzUolr5ifAlIwKwYDVR0jBCQwIoAgYzz9D7a-YqDpfFGbr6Sr82Ol-LTzfz2ya__DIKutm-wwBQYDK2VwA0EAHx5hGbS6HSZ5doBiZceUJ5mo8KU-XjUPaENu4G8i1GhbSQe3oyTJHkPrnYxJySJy9IKkutihCtoVt3Ei_7fBAA",
          "MIIBMTCB5KADAgECAgkAmQKVaRbcF0EwBQYDK2VwMBQxEjAQBgNVBAMMCUFsaW5hIFJhbzAgFw0yNjA5MDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowFDESMBAGA1UEAwwJQWxpbmEgUmFvMCowBQYDK2VwAyEADLhbefjgmsXoJk2DPBURE7EALxfcwb9cRJfSS3z_07CjUTBPMBIGA1UdEwEB_wQIMAYBAf8CAQAwDgYDVR0PAQH_BAQDAgIEMCkGA1UdDgQiBCBjPP0Ptr5ioOl8UZuvpKvzY6X4tPN_PbJr_8Mgq62b7DAFBgMrZXADQQBq8UK0ZmY0_N1JiWNU1Sp2O66Jmz9C98BZBwB4B42ZNDW9CauFycj2DgchqFKAsQ6Bafuu4rpS_so7-chGC2UB"
        ]
      }
    },
    "expect": "discard"
  },
  {
    "name": "another root discarded",
    "pinned_leaf": "leaf_a",
    "dialed": "https://agent.alina.example/mcp",
    "now": "2026-09-13T12:00:00Z",
    "answer": {
      "code": "certificate_renewed",
      "data": {
        "chain": [
          "MIIB6jCCAZCgAwIBAgIIYs8KMv2IITAwCgYIKoZIzj0EAwIwFzEVMBMGA1UEAwwMQmhhcmF0IE1laHRhMB4XDTI2MDkwMTAwMDAwMFoXDTI3MDkwMTAwMDAwMFowFzEVMBMGA1UEAwwMQmhhcmF0IE1laHRhMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1uZSk3yoZQVVm8hOSTZXPeLREIM8RxjO8ASiA8BUqS3N-15XZevCZ9w9JBeDRHujtYzslU6oyl8k_biWPcoYl6OBxTCBwjAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB_wQEAwIDiDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwKwYDVR0RBCQwIoYgaHR0cHM6Ly9hZ2VudC5iaGFyYXQuZXhhbXBsZS9tY3AwKQYDVR0OBCIEIK7stVsrNZCPRT7BFb2h9GmpDQtFM2ylNFEhLJUxPbJfMCsGA1UdIwQkMCKAIPU-OlDkxBZTwtsxiWeahnM524NtecWwum8XBNE-UKKzMAoGCCqGSM49BAMCA0gAMEUCIQC7gmD6xkV6SRJxS_f5tIk8iVkAp0JJ3Bz0l_lxaTc9HgIgA7jkCLu5P8mn7RO20pK0cG1GnIvQTCz589E5Gkl_4YE",
          "MIIBeDCCAR6gAwIBAgIJAOURI8HuhdbgMAoGCCqGSM49BAMCMBcxFTATBgNVBAMMDEJoYXJhdCBNZWh0YTAgFw0yNjA5MDEwMDAwMDBaGA85OTk5MTIzMTIzNTk1OVowFzEVMBMGA1UEAwwMQmhhcmF0IE1laHRhMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEALN--KM9wJPMQmh8YK7z9zq3EonvgmJeFIJTHYSHFONfPEkLpumjoCjAI4FfuoIJ8PURpLeLQgykX6wSK9vOJ6NRME8wEgYDVR0TAQH_BAgwBgEB_wIBADAOBgNVHQ8BAf8EBAMCAgQwKQYDVR0OBCIEIPU-OlDkxBZTwtsxiWeahnM524NtecWwum8XBNE-UKKzMAoGCCqGSM49BAMCA0gAMEUCIQC_uWwUD_2d9Y5G9w76KdNRkjqP3YeamTuUg436ocOJRQIgJzzySdbrh0ZAyz1Gbv5vEmWcott5yvuK_ZvriY6nP-Q"
        ]
      }
    },
    "expect": "discard"
  }
]

envelopes

[
  {
    "name": "alina-to-bharat",
    "form": "chain",
    "suite": "PACT-SEAL-P256",
    "sender_chain": [
      "leaf_a",
      "root_a"
    ],
    "recipient_chain": [
      "leaf_b",
      "root_b"
    ],
    "plaintext_hex": "7b226d6574686f64223a22746f6f6c732f63616c6c222c22706172616d73223a7b226e616d65223a2273656e645f6d657373616765222c22617267756d656e7473223a7b226d73675f6964223a227665632d31222c2274657874223a2268656c6c6f2066726f6d207468652050414354207465737420766563746f7273227d7d2c22636861696e223a5b224d4949427554434341577567417749424167494a414f7055446a466852797a314d4155474179746c634441554d524977454159445651514444416c4262476c7559534253595738774868634e4d6a59774f5441784d4441774d4441775768634e4d6a63774f5441784d4441774d444177576a41554d524977454159445651514444416c4262476c7559534253595738774b6a414642674d725a5841444951424f363530574658705358666349485766644a61387a6853626d747337432d6b506b55326f4d51685050394b4f4232544342316a414d42674e5648524d4241663845416a41414d41344741315564447745425f775145417749486744416442674e5648535545466a4155426767724267454642516344415159494b77594242515548417749775077594456523052424467774e6f59666148523063484d364c7939685a3256756443356862476c755953356c654746746347786c4c32316a634949545957646c626e517559577870626d45755a586868625842735a54417042674e5648513445496751674e586e3849726a455064445f73424a346f4f597254565548354966424344445a7a556f6c72356966416c49774b7759445652306a42435177496f4167597a7a394437612d59714470664647627236537238324f6c2d4c547a667a3279615f5f44494b75746d2d7777425159444b32567741304541487835684762533648535a35646f42695a6365554a356d6f384b552d586a555061454e753447386931476862535165336f79544a486b50726e59784a79534a7939494b6b7574696843746f56743345695f3766424141222c224d4949424d544342354b41444167454341676b416d514b566152626346304577425159444b3256774d425178456a415142674e5642414d4d435546736157356849464a68627a4167467730794e6a41354d4445774d4441774d444261474138354f546b354d54497a4d54497a4e546b314f566f77464445534d424147413155454177774a51577870626d4567556d46764d436f77425159444b32567741794541444c686265666a676d73586f4a6b324450425552453745414c78666377623963524a665353337a5f3037436a555442504d42494741315564457745425f7751494d415942416638434151417744675944565230504151485f42415144416749454d436b4741315564446751694243426a50503050747235696f4f6c38555a7576704b767a5936583474504e5f50624a725f384d67713632623744414642674d725a5841445151427138554b305a6d59305f4e314a69574e55315370324f36364a6d7a39433938425a427742344234325a4e4457394361754679636a324467636871464b417351364261667575347270535f736f372d63684743325542225d7d",
    "protected": "eyJjdHkiOiJhcHBsaWNhdGlvbi9wYWN0LWNhbGwranNvbiIsImV4cCI6MTc4OTMwMTQwMCwia2lkIjoic2hhMjU2OnJ1eTFXeXMxa0k5RlBzRVZ2YUgwYWFrTkMwVXpiS1UwVVNFc2xURTlzbDgiLCJtc2dfaWQiOiJ2ZWMtdjItYWxpbmEtdG8tYmhhcmF0Iiwic3VpdGUiOiJQQUNULVNFQUwtUDI1NiIsInRzIjoxNzg5MzAwODAwLCJ2IjoyfQ",
    "enc": "BIHpdaySdBS69p43wRjx3w1S6XcZ1x7YIJFHBXrSQkTkK84FF7AekPuBNJAV_ya7eip_LpzAYQPP6iQwJFP8kHE",
    "ct": "YY1GT1KZASR2k3io8jiw17dI-Lc-H-ev2_qq-aTlTxLDsdFeZtlLHKNDzS_AybxcvXUXKzM-dtOs3EPMYbmwJDnZ2JzvCYOzkucFkKnEx0gaGIdjzGBMnd11emLYklXu8hXZj_UemMm7GM1C1Pc1cueNwd3gTumIW9pR1Nps4m5xNU09hiUzftW0mR1a4jZrne99L2JkMFj_79h4UP8NwPZ9Gr5AA3cr0LMadFXL4BouMogonR27lYEYHwJJH57l4nNREjUGECs7yE5oeZnXgx_vi1aVbu_bzHszER7DWU2WNRnmj4RcRTJ1FuTCLGcs5IJyFr_13H_G7R5IM7wHSHKRF9lFzcxJLlxVBKq-53kqz5nII_Ocgk6LxxmDt55gTTlJiOVCmEILGIuXo8bd_bySFSujKc0GAlKweArbIbPExQKrbGMz5cxqvW_qz51S67oUyIgyZoB_xcW1_v8-mqWY3KzgmEspiAFgZgFdNU_gMerWLvuesYFYL4wCEzH_fKo3tHj0yNSdpYkYjp81ojFHFVMEJOY-wM3s8QEzZthtCLodZCUbijD2CLjGuD403q50brBFLGWJw9de0TGr8_6O-1Yg1xQJI0pNwYAIf2oGeDC30G_774ES7vIGVWnIX7WQWNWJFgxDeEqxDczhPxGRdxTbg8SvhfjmCkfj70rR0fPzu95i6VLC0o8lhjsWbTpvXajx9z0hf-95ZK1OKDF4XlIBDVvt8J20lpinLFB1nK-irbjoR2WG64ChPRmAd_wXk9tCqZMgqFNznDfk7EW1RPT5MdmdZIdbIUxxnrHWTpIK3YUHww81A51Ud0YQQiKJZvDAz8U244WVyCNmcY_9D6K1lvoF6uwqt-CTyRrZfXm6QCmNi5EcNy-_54gRKodYXQieAZvbVKSpcWJ9sbzzwd0GdCuv15TZ9FTluNSYjvzTWwBKZfC_H5BbETra-aUkmcRhkSqjN5JLI63OvQGV-42_GSz3qlpVEowLmJmC28mYlC-B92afv3ETrx-f7I09d8dFiw-GAiNmmt4fPIXmniB1b6Rw8cbrmtmHt9SosVv7W7oWXeLBoF9vzNU4v0NY9mcilLQhrro9UFFnV-p-R-AqCktBjCHAvJU1NoY7Co7aiIr2DSDuc_hikA8dpm9_tOAy-XkCbIrNOszVTlhbEDLSTTsvis8TVbpdVmNMIThIZedmba-1fJdpci4L-oiVSrU6nc-5qU7xCWYlHQ6E8lLEOKShrYTevx7r19wAx2Vx8s4l_Ydggfyozd5kNSNH6nLyQquriOKxAvzowhT573fynQkj6Wb9cL1zbBrPHEAie6ld4GYiqG-9NZJ8HkVswCnDXce0Iz_9f8D3_q8mJKsOvDU1zntBDdy2Bn0IbVURp-4-Hz7KVqhqeizg21vhVfQYpeFYheO_7dTkxmbots_1WbGlSrPHUjerOjwYe9gZ8dKxSWjCx-B2fguCDPHcoH65nIAr-6k1xi6JppotGHwWgwEiGd0trZ_zI9EQg3cqZAsfLYWeja1-LoW2eV_R9qPHKr3D2f7PkCk_",
    "sig": "LEEcFHOTEIw3Dd6q7UoDPPIdttaCO6JC7ebYeFuJp8FLSnK4Vdya7lHWrTq-UDg2J2WuXVGwgAC0SrJxT-fWCg"
  },
  {
    "name": "bharat-to-alina",
    "form": "chain",
    "suite": "PACT-SEAL-X25519",
    "sender_chain": [
      "leaf_b",
      "root_b"
    ],
    "recipient_chain": [
      "leaf_a",
      "root_a"
    ],
    "plaintext_hex": "7b226d6574686f64223a22746f6f6c732f63616c6c222c22706172616d73223a7b226e616d65223a2273656e645f6d657373616765222c22617267756d656e7473223a7b226d73675f6964223a227665632d31222c2274657874223a2268656c6c6f2066726f6d207468652050414354207465737420766563746f7273227d7d2c22636861696e223a5b224d494942366a4343415a436741774942416749495973384b4d76324949544177436759494b6f5a497a6a304541774977467a45564d424d47413155454177774d516d6868636d46304945316c614852684d423458445449324d446b774d5441774d4441774d466f58445449334d446b774d5441774d4441774d466f77467a45564d424d47413155454177774d516d6868636d46304945316c614852684d466b77457759484b6f5a497a6a3043415159494b6f5a497a6a3044415163445167414531755a536b33796f5a5156566d38684f53545a5850654c5245494d3852786a4f38415369413842557153334e2d3135585a6576435a3977394a4265445248756a74597a736c55366f796c386b5f62695750636f596c364f4278544342776a414d42674e5648524d4241663845416a41414d41344741315564447745425f775145417749446944416442674e5648535545466a4155426767724267454642516344415159494b77594242515548417749774b7759445652305242435177496f59676148523063484d364c7939685a3256756443356961474679595851755a586868625842735a533974593341774b5159445652304f42434945494b3773745673724e5a4350525437424662326839476d70445174464d32796c4e4645684c4a557850624a664d437347413155644977516b4d434b414950552d4f6c446b78425a547774737869576561686e4d3532344e7465635777756d3858424e452d554b4b7a4d416f4743437147534d343942414d43413067414d45554349514337676d4436786b563653524a78535f663574496b3869566b4170304a4a33427a306c5f6c78615463394867496741376a6b434c753550386d6e37524f3230704b30634731476e49765154437a3538394535476b6c5f345945222c224d4949426544434341523667417749424167494a414f555249384875686462674d416f4743437147534d343942414d434d4263784654415442674e5642414d4d44454a6f59584a686443424e5a57683059544167467730794e6a41354d4445774d4441774d444261474138354f546b354d54497a4d54497a4e546b314f566f77467a45564d424d47413155454177774d516d6868636d46304945316c614852684d466b77457759484b6f5a497a6a3043415159494b6f5a497a6a30444151634451674145414c4e2d2d4b4d39774a504d516d6838594b377a397a7133456f6e76676d4a6546494a5448595348464f4e6650456b4c70756d6a6f436a4149344666756f494a38505552704c654c5167796b583677534b39764f4a364e524d45387745675944565230544151485f42416777426745425f7749424144414f42674e56485138424166384542414d43416751774b5159445652304f424349454950552d4f6c446b78425a547774737869576561686e4d3532344e7465635777756d3858424e452d554b4b7a4d416f4743437147534d343942414d43413067414d4555434951435f75577755445f326439593547397737364b644e526b6a7150335965616d547555673433366f634f4a525149674a7a7a795364627268305a41797a314762763576456d57636f7474357976754b5f5a76726959366e502d51225d7d",
    "protected": "eyJjdHkiOiJhcHBsaWNhdGlvbi9wYWN0LWNhbGwranNvbiIsImV4cCI6MTc4OTMwMTQwMCwia2lkIjoic2hhMjU2Ok5YbjhJcmpFUGREX3NCSjRvT1lyVFZVSDVJZkJDRERaelVvbHI1aWZBbEkiLCJtc2dfaWQiOiJ2ZWMtdjItYmhhcmF0LXRvLWFsaW5hIiwic3VpdGUiOiJQQUNULVNFQUwtWDI1NTE5IiwidHMiOjE3ODkzMDA4MDAsInYiOjJ9",
    "enc": "ONDliYD_Vv7GIRpI2JMbs-pgXM3Ljgmt9ST_7JFNh2c",
    "ct": "rSJZpz8qaZzW4OXlO9JxAvHHzeAIOSUqDbmM-8IJX6rEhSPaQ3To4Qv-o1Zp9S-DqzTJRL1mrWNDLVojO2pvWWFtFbnXMRtz_Ebb0onLgswe3gXpmrrFNAURxi0r_tPH2L-2iJHl4ZJnbWLC5TO82UQxNPB6kr4ePoW-_Z-Xg1wIHX48eVSGfVig62AB-sAJj1gSXp7QwXdhLucDJWIn_9YeWMsqtiQSN-uybJhJ1hyDJf1zO4k-UE384Lh7Umeu-pKc9NoxtupqoMfh1yryoSM3vOHX6jNrvBVhUq-RjgtyZs6b9SsS3S_CYJZXDYQX_h5069vSKS-d70hd_3p4RUN_7COchtpTsgww5nh4K3lBqtMBwwh_Ka1dL4YNxR-BjXd_27oAlqOvRkJPsSV3YmFmtRSSNm-UHQUj25hZOoVHjH_hP0rYAK4IBAgFpZwP67Z0soTu9PVG4s5QKE_L_P2ZzoIPqfnHMD_efS_xwMWkB_M3Jvz4LjmKp4z8S7KCnU85I0-JcC9V_NXHfVy4YTYZ4P4RKU_3xtLG_Vm_G5JXJ0Y7_uwSci2uX4rVwzHMgY7OvER-oQrJICY2Ft0lRCEcmzi8oRDRQVfDgv9bhrUopoW-zX-WBg1S7zgDGqv2ESCnVx_cVqsV1WZZ4l1EBe4cPAQyCIP9vg12Aj7RLyl2P45B9Esz4iF46TFQshwfQcU4ehgrNCZ-ngfJ7oA5agbxXGPLrAQXnwzNaGlBAshs_gV8kA__0xlOWt1ZxmSUA6yiFl_jmzsvxiGUqvH-7h53dfDzYEFJYtjcCaQc_kzpwZosxE7CHF1VXTLXWKCjFYTndR5omI5EIXnMSZtGw3QszwFfsAC-xeOgqbryIh_lTIdaQ1E66jaJx2VLUweBNLlgLIZ1580JwfKZy8LpK6L_gL11xxk6b_J19Fao01pLwrhFBwfsbeSDbPp9eAydOsKjHLch1pHs0L6ZyQy0nvpriiRlP_7CTJ3frFeO5qiV9LfvQac0bSG8ZKNf0q0xWCjnFXpqZdPBt7rzsvc2sbW610B0bqe0y5Wka3ZwmLI2FOVJq-vZbpS0rukYo9C0AwfBEHryztD1E1Rs0Plzx44p0KToDgJ1xGK1NGi2B9K2FPL9nFGuwgn1ESvUwIsE1f_6Nq433evuPHkpQjW7U9mWZYXK-Xn6UPjiR3giNuCXYqoMfpg41TyA99R9qTWqDTC2JPJ_jZDcRYYMX59k7pfOu0kIXrhdZ6-xhWppLao9TAgL4GyZDs_Zq5aWCA1Q1h25Okdt-P45zLj-GqF-YfKsk84AMuEnFkWUXYb5yjAmbDcBwa72aMYFnIZfXtwqcJ6C2JUvOb-KQNx2QgnvR1Ih7gR0Uc8Sv8BDknmaQOZfmoVj3VVwlgxKqgemCD_85964hl-kzHl8tRKodkn6ECAjvEvfyE8aAkYckVSltut33yc5CyypMKR_guZdbCAecMMuO0SwPb25zWjfTnhHZxa54XDXg6bHsv0NalrAGlEQ_lqZKOIz6D4CKbnq1D0zaz8N24hFlMeHHEMIvswWvb4yVIKe4m_RmhVcCxo6ihg4FdceKEFvodXTjMwAhK6YvxysMO88JaERFfYnWhLdpkEXFJmTZOQPKGRpOFF9SlkEGv1Fiix7hw46KX8UG3NPrmq6AYAvz5RrouA-_ZEeKaYB7pXp-jKGoAJ2b8Czjd5HYOe_AiZudi0g1dXCSGadDmDBVPCeoRpDZwun4ektRiEJux9RuYqm2RRIMByXyA",
    "sig": "MEUCIQD8q47LlIj6cQx9V8W5vJzGTz9A-TdsX9E2wNzRQTV6MAIgDBrPscktCK_PDDhY6XoAafRbnYVxXQlf6Mm7331es9Q"
  },
  {
    "name": "alina-to-bharat-by-reference",
    "form": "leaf",
    "suite": "PACT-SEAL-P256",
    "sender_chain": [
      "leaf_a",
      "root_a"
    ],
    "recipient_chain": [
      "leaf_b",
      "root_b"
    ],
    "plaintext_hex": "7b226d6574686f64223a22746f6f6c732f63616c6c222c22706172616d73223a7b226e616d65223a2273656e645f6d657373616765222c22617267756d656e7473223a7b226d73675f6964223a227665632d31222c2274657874223a2268656c6c6f2066726f6d207468652050414354207465737420766563746f7273227d7d2c226c656166223a227368613235363a4e586e3849726a455064445f73424a346f4f597254565548354966424344445a7a556f6c72356966416c49227d",
    "protected": "eyJjdHkiOiJhcHBsaWNhdGlvbi9wYWN0LWNhbGwranNvbiIsImV4cCI6MTc4OTMwMTQwMCwia2lkIjoic2hhMjU2OnJ1eTFXeXMxa0k5RlBzRVZ2YUgwYWFrTkMwVXpiS1UwVVNFc2xURTlzbDgiLCJtc2dfaWQiOiJ2ZWMtdjItYWxpbmEtdG8tYmhhcmF0LXJlZiIsInN1aXRlIjoiUEFDVC1TRUFMLVAyNTYiLCJ0cyI6MTc4OTMwMDgwMCwidiI6Mn0",
    "enc": "BAUV9yYKDbPV9hi0N30VqsZWe0DUwnmPf5o1DhhwxH3NA7v1JdA1UkbmMJioS-GD-XhOiM3J5rkBZxkMpPdumac",
    "ct": "UZ_Nbzoj7rBT4fGmgKguNJSi3xDvbF5pJnlP_JC_bwkOA97BTg2cipAwp0jM0pIzw_uAzMUgrwb790xqNmScc0qOS9cWjf0ik9Pzt_GoYXAxt9XmdoE2WWZ_5vx1ruCbYIDlj1GWTJOt_H5uYX5dQbhZGZktHLFGxQeW1SQwzowROcKeiTJg4ibULh-EG97cSGdWeQgM3GBtQhR90M0XbbmNM1E5aXANYTKoPEZJUW4CWdPl2P9mDcyUr5pEY6NYaQhF4SfcKhAoffdp6Q",
    "sig": "hgDNKZA0uq30kX5ZrR7LlIunM3ONQ276b4SgJUlvYBDzaXEBfYx8CPDYWzGRF5sqO3By2YiX553pKwjbl4pgBw"
  }
]

derivation

[
  {
    "label": "root",
    "prf": "33HtwBTg9wPxU8-1_1dQa8gdUEyt-qS8h0J0BtdX7a8",
    "salt": "LIKNWR6yI6hGi0mpeaaoDX1DKh0e-lOcaedQRqquj80",
    "info": "pact/root/1",
    "seed": "drEH2cDnwXCPwFMQfNBMX4bIRUicH-Z5nMSUwEojcg4",
    "alg": "ed25519",
    "spki": "MCowBQYDK2VwAyEABmz6BnbEKVMuP6tzY7p5x8UCsSYBTuho_FMmGwwxHrQ",
    "fingerprint": "sha256:TIFHOFEHYkmwiRW-4UurBwrLax1HvWJWnZokziWRuTo",
    "note": "the identity this passkey is: Ed25519 from the derived seed. No certificate: a root's serial and notBefore are the wallet's, not the derivation's, so the key is what reproduces and the certificate is not"
  },
  {
    "label": "store-key",
    "prf": "33HtwBTg9wPxU8-1_1dQa8gdUEyt-qS8h0J0BtdX7a8",
    "salt": "LIKNWR6yI6hGi0mpeaaoDX1DKh0e-lOcaedQRqquj80",
    "info": "pact/store-key/1",
    "seed": "ZPPUwx7LxGYrh1gibMSDEEMe4drNhPyUbdbxcWvnfgM",
    "note": "HKDF-SHA256 over the same prf; a 32-byte secret, not a key"
  },
  {
    "label": "store-id",
    "prf": "33HtwBTg9wPxU8-1_1dQa8gdUEyt-qS8h0J0BtdX7a8",
    "salt": "LIKNWR6yI6hGi0mpeaaoDX1DKh0e-lOcaedQRqquj80",
    "info": "pact/store-id/1",
    "seed": "cf39LYmrE-xbyz8FbJ3VbOolcLLa49d3orBRNX52WDk",
    "note": "HKDF-SHA256 over the same prf; a 32-byte secret, not a key"
  }
]