diff --git a/findings.toml b/findings.toml index 1ad7273..dd5fe89 100644 --- a/findings.toml +++ b/findings.toml @@ -96,6 +96,7 @@ implementation names the Reply_Digest and hit it first, which is what prompted t [[finding]] id = "hop-list-limits" +fixed = "affinidi-tdk-rs#806, vta-browser-plugin#251 (MAX_HOPS 64)" kind = "limit" title = "Route length limits differ: tsp-js 10 hops, affinidi-tsp 16, tsp_sdk none" match = ["too many hops", "route has \\d+ hops, exceeds", "hop list too long"] diff --git a/reports/report.json b/reports/report.json index 294ed79..c8ed258 100644 --- a/reports/report.json +++ b/reports/report.json @@ -1,6 +1,7 @@ { "tool": "tsp-conformance 0.1.0", - "generatedAt": "2026-09-16T13:07:47Z", + "generatedAt": "2026-09-16T14:30:05Z", + "note": "Built from affinidi-tdk-rs main @ 0e51187 (includes #803, #804, #806), vta-browser-plugin feat/tsp-rev2-rev3-dual-handler @ 88fc7a5 (includes #249, #250, #251), affinidi-tsp-go and affinidi-tsp-dart main, and tsp_sdk 0.11.0 from crates.io.", "seed": 20260916, "spec": { "commit": "f5b8668", @@ -264,8 +265,8 @@ ], "summary": { "interop": { - "pass": 868, - "fail": 25, + "pass": 893, + "fail": 0, "skip": 157, "error": 0 }, @@ -297,8 +298,8 @@ "match": [ "non-canonical-lead-byte" ], - "spec": "\u00a73.7: \"A receiver MUST reject a message containing a primitive whose pad bits are non-zero.\"", - "explanation": "The `direct-signed-only` vector's application-data field is `5BAH\u2026`: one lead byte, which must be zero. The harness sets that byte non-zero and re-signs the message with alice's published key, so only a canonicality check can catch it. affinidi-tsp refuses it (`wire.rs` `decode_variable_data_range` rejects non-zero lead bytes, citing \u00a73.7). tsp_sdk 0.11.0 returns the payload: `cesr/decode.rs` `decode_variable_data_index` computes `data_begin = offset + 3` and skips the lead bytes without inspecting them. Because TSP signatures and digests are taken over exact bytes, this admits two byte sequences for one value. Static reading: tsp-js `cesr/wire.ts` `decodeVariableDataRange` has no lead-byte check either, but tsp-js has no signed-only reader, so the case cannot reach it." + "spec": "§3.7: \"A receiver MUST reject a message containing a primitive whose pad bits are non-zero.\"", + "explanation": "The `direct-signed-only` vector's application-data field is `5BAH…`: one lead byte, which must be zero. The harness sets that byte non-zero and re-signs the message with alice's published key, so only a canonicality check can catch it. affinidi-tsp refuses it (`wire.rs` `decode_variable_data_range` rejects non-zero lead bytes, citing §3.7). tsp_sdk 0.11.0 returns the payload: `cesr/decode.rs` `decode_variable_data_index` computes `data_begin = offset + 3` and skips the lead bytes without inspecting them. Because TSP signatures and digests are taken over exact bytes, this admits two byte sequences for one value. Static reading: tsp-js `cesr/wire.ts` `decodeVariableDataRange` has no lead-byte check either, but tsp-js has no signed-only reader, so the case cannot reach it." }, { "id": "sdk-trailing-bytes", @@ -308,8 +309,8 @@ "match": [ "trailing-bytes" ], - "spec": "\u00a79.1 (-E count delimits the signable content), \u00a79.5 (-C count delimits the attachment); no explicit rule for data after the attachment", - "explanation": "Appending one zero triplet (`AAAA` in qb64) after a valid message: affinidi-tsp refuses (\"trailing bytes after signature\"), tsp-js refuses (\"tsp: trailing bytes after signature\"), tsp_sdk 0.11.0 opens it \u2014 deliberately: `cesr/packet.rs` `decode_envelope`: \"any data after the signature attachment is not part of this message (a transport may deliver several messages back-to-back) and is ignored\". Every message source fails the same way (its own output and five Appendix A vectors). The specification does not say whether a TSP message is a whole transport unit; if it is, two distinct wire byte strings verify as the same message, which matters to anything keyed on a hash of the wire bytes (affinidi's mediator deduplicates on exactly that)." + "spec": "§9.1 (-E count delimits the signable content), §9.5 (-C count delimits the attachment); no explicit rule for data after the attachment", + "explanation": "Appending one zero triplet (`AAAA` in qb64) after a valid message: affinidi-tsp refuses (\"trailing bytes after signature\"), tsp-js refuses (\"tsp: trailing bytes after signature\"), tsp_sdk 0.11.0 opens it — deliberately: `cesr/packet.rs` `decode_envelope`: \"any data after the signature attachment is not part of this message (a transport may deliver several messages back-to-back) and is ignored\". Every message source fails the same way (its own output and five Appendix A vectors). The specification does not say whether a TSP message is a whole transport unit; if it is, two distinct wire byte strings verify as the same message, which matters to anything keyed on a hash of the wire bytes (affinidi's mediator deduplicates on exactly that)." }, { "id": "sdk-signed-only-essr", @@ -319,7 +320,7 @@ "match": [ "essr-sender-mismatch" ], - "spec": "\u00a73.7 step 7 and \u00a78.2.2 require the check per PKAE variant; \u00a79.4 says every payload layout carries VID_sndr; signed-only is not addressed explicitly", + "spec": "§3.7 step 7 and §8.2.2 require the check per PKAE variant; §9.4 says every payload layout carries VID_sndr; signed-only is not addressed explicitly", "explanation": "The `direct-signed-only` vector's ESSR field (`4BAA`, NULL) is replaced with bob's VID and the message re-signed with alice's key, so the envelope says alice and the payload says bob. affinidi-tsp refuses (\"ESSR sender VID does not match the envelope sender\") because it checks the field for every layout. tsp_sdk 0.11.0 accepts: `crypto/nonconfidential.rs` `verify_payload` decodes `sender_identity` and `crypto::verify` discards it; the check exists only in `tsp_hpke::open` and `tsp_nacl::open`. The spec states the check only for the confidential variants, so this is a gap to close in the spec as much as a behaviour to align." }, { @@ -330,8 +331,9 @@ "xscs-body-", "data-after-payload-fields" ], - "spec": "tswg-tsp-specification#77 (proposed): the XSCS/XCTL body is -A## holding exactly one Bytes primitive and ending the payload frame; anything else MUST be rejected. \u00a79.2.3 as merged says the body is an opaque CESR stream with -H## groups", - "explanation": "Three bodies are derived from the `direct-signed-only` vector and re-signed with alice's published key: an `-H##` group holding a Bytes primitive with JSON (the form \u00a79.2.3 describes), two Bytes primitives, and one primitive followed by another field after the `-A` stream inside the `-Z` frame. tsp_sdk 0.11.0 has always refused all three (`cesr/packet.rs` `decode_opaque_data`). Before the #77 fixes, affinidi-tsp accepted the third (and returned only the first primitive of the second): `decode_payload_frame` checked only that the body did not overrun the stream. A failure here on a build that includes the #77 fix is a regression." + "spec": "tswg-tsp-specification#77 (proposed): the XSCS/XCTL body is -A## holding exactly one Bytes primitive and ending the payload frame; anything else MUST be rejected. §9.2.3 as merged says the body is an opaque CESR stream with -H## groups", + "explanation": "Three bodies are derived from the `direct-signed-only` vector and re-signed with alice's published key: an `-H##` group holding a Bytes primitive with JSON (the form §9.2.3 describes), two Bytes primitives, and one primitive followed by another field after the `-A` stream inside the `-Z` frame. tsp_sdk 0.11.0 has always refused all three (`cesr/packet.rs` `decode_opaque_data`). Before the #77 fixes, affinidi-tsp accepted the third (and returned only the first primitive of the second): `decode_payload_frame` checked only that the body did not overrun the stream. A failure here on a build that includes the #77 fix is a regression.", + "fixed": "affinidi-tdk-rs#803, vta-browser-plugin#249, affinidi-tsp-go and affinidi-tsp-dart main" }, { "id": "affinidi-accepter-forgets-reply-digest", @@ -342,8 +344,9 @@ "match": [ "names an unrecognised relationship" ], - "spec": "\u00a77.2.2: \"The Digest is recorded by both endpoints \u2026 and similarly Reply_Digest\"; \u00a77.3: the RFD Digest is \"the previously received Digest or Reply_Digest\"", - "explanation": "After invite \u2192 accept, the inviter's library packs an RFD naming the accept's own digest (Reply_Digest \u2014 the digest the inviter *received*) and it is delivered to affinidi-tsp's `TspAgent`, which refuses it (\"message discarded: cancellation from \u2026 names an unrecognised relationship\") and stays bidirectional. The same RFD naming the invite's digest is accepted, and tsp_sdk and tsp-js accept both. Cause: `TspAgent::send_relationship_accept` (lib.rs) never records the accept it sends \u2014 `set_reply_thread_digest` is called only when an accept is *received* \u2014 so `TspStore::recognizes_digest` on the accepting side holds the invite digest alone, although its own documentation says \"a cancellation may name either, so both must be recognizable\". The bundled endpoint APIs all happen to name the invite digest, so endpoint-to-endpoint flows hide it; the Go implementation names the Reply_Digest and hit it first, which is what prompted the `cancel-by-*-naming-*-digest` cases that now show it with any peer." + "spec": "§7.2.2: \"The Digest is recorded by both endpoints … and similarly Reply_Digest\"; §7.3: the RFD Digest is \"the previously received Digest or Reply_Digest\"", + "explanation": "After invite → accept, the inviter's library packs an RFD naming the accept's own digest (Reply_Digest — the digest the inviter *received*) and it is delivered to affinidi-tsp's `TspAgent`, which refuses it (\"message discarded: cancellation from … names an unrecognised relationship\") and stays bidirectional. The same RFD naming the invite's digest is accepted, and tsp_sdk and tsp-js accept both. Cause: `TspAgent::send_relationship_accept` (lib.rs) never records the accept it sends — `set_reply_thread_digest` is called only when an accept is *received* — so `TspStore::recognizes_digest` on the accepting side holds the invite digest alone, although its own documentation says \"a cancellation may name either, so both must be recognizable\". The bundled endpoint APIs all happen to name the invite digest, so endpoint-to-endpoint flows hide it; the Go implementation names the Reply_Digest and hit it first, which is what prompted the `cancel-by-*-naming-*-digest` cases that now show it with any peer.", + "fixed": "affinidi-tdk-rs#804" }, { "id": "hop-list-limits", @@ -354,8 +357,9 @@ "route has \\d+ hops, exceeds", "hop list too long" ], - "spec": "\u00a75.3: \"the number of intermediaries in the route path may not be limited to 2\"; no maximum is set", - "explanation": "tsp-js `cesr/wire.ts` `MAX_HOPS = 10`, enforced when packing (`packRouted`) and when decoding any VID list (`rev3/fields.ts` `decodeVidList`, which also reads Reply_Path). affinidi-tsp `message/routed.rs` `MAX_HOPS = 16`, enforced when packing and in `wire.rs` `decode_hops`. tsp_sdk sets none. So a 12-hop route packed by affinidi-tsp or tsp_sdk cannot be opened by tsp-js, and a 17-hop route packed by tsp_sdk cannot be opened by affinidi-tsp. A bound is reasonable; three different ones are not interoperable. The specification could state a minimum every receiver must accept." + "spec": "§5.3: \"the number of intermediaries in the route path may not be limited to 2\"; no maximum is set", + "explanation": "tsp-js `cesr/wire.ts` `MAX_HOPS = 10`, enforced when packing (`packRouted`) and when decoding any VID list (`rev3/fields.ts` `decodeVidList`, which also reads Reply_Path). affinidi-tsp `message/routed.rs` `MAX_HOPS = 16`, enforced when packing and in `wire.rs` `decode_hops`. tsp_sdk sets none. So a 12-hop route packed by affinidi-tsp or tsp_sdk cannot be opened by tsp-js, and a 17-hop route packed by tsp_sdk cannot be opened by affinidi-tsp. A bound is reasonable; three different ones are not interoperable. The specification could state a minimum every receiver must accept.", + "fixed": "affinidi-tdk-rs#806, vta-browser-plugin#251 (MAX_HOPS 64)" }, { "id": "tsp-js-accept-correlation", @@ -366,8 +370,9 @@ "match": [ "accepts an accept naming an invite" ], - "spec": "\u00a77.2.2: the RFA's Digest is the digest of the corresponding TSP_RFI", - "explanation": "The inviter (tsp-js) is sent an RFA packed by the other implementation's library with a random Digest. affinidi-tsp (`TspAgent::handle_control`: \"accept \u2026 answers an invite we did not send\") and tsp_sdk (`SecureStore::upgrade_relation`: \"thread_id does not match digest\") refuse it and stay in invite-sent. tsp-js ships its relationship rules as pure functions (`relationship.ts`) and leaves storage to the wallet; `transition(\"pending\", \"receiveAccept\")` returns `bidirectional` without seeing a digest, and unlike the invite race (`resolveInviteRace`) and cancellation (`resolveCancel`) there is no helper for accept correlation. The driver applies only library rules, so the gap is visible here; every integrator of tsp-js must add the check themselves." + "spec": "§7.2.2: the RFA's Digest is the digest of the corresponding TSP_RFI", + "explanation": "The inviter (tsp-js) is sent an RFA packed by the other implementation's library with a random Digest. affinidi-tsp (`TspAgent::handle_control`: \"accept … answers an invite we did not send\") and tsp_sdk (`SecureStore::upgrade_relation`: \"thread_id does not match digest\") refuse it and stay in invite-sent. tsp-js ships its relationship rules as pure functions (`relationship.ts`) and leaves storage to the wallet; `transition(\"pending\", \"receiveAccept\")` returns `bidirectional` without seeing a digest, and unlike the invite race (`resolveInviteRace`) and cancellation (`resolveCancel`) there is no helper for accept correlation. The driver applies only library rules, so the gap is visible here; every integrator of tsp-js must add the check themselves.", + "fixed": "vta-browser-plugin#250 (resolveAccept)" }, { "id": "tsp-js-xscs-body-coverage", @@ -383,7 +388,7 @@ { "suite": "vectors", "case": "control-rfa-direct/open", - "spec": "A; \u00a77.2.2, \u00a79.4.2", + "spec": "A; §7.2.2, §9.4.2", "sender": "spec", "receiver": "affinidi-rust", "status": "pass", @@ -396,7 +401,7 @@ { "suite": "vectors", "case": "control-rfa-direct/pack-exact", - "spec": "A; \u00a77.2.2, \u00a79.4.2", + "spec": "A; §7.2.2, §9.4.2", "sender": "spec", "receiver": "affinidi-rust", "status": "skip", @@ -405,7 +410,7 @@ { "suite": "vectors", "case": "control-rfa-direct/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "affinidi-rust", "status": "pass", @@ -414,7 +419,7 @@ { "suite": "vectors", "case": "control-rfd/open", - "spec": "A; \u00a77.3, \u00a79.4.5", + "spec": "A; §7.3, §9.4.5", "sender": "spec", "receiver": "affinidi-rust", "status": "pass", @@ -427,7 +432,7 @@ { "suite": "vectors", "case": "control-rfd/pack-exact", - "spec": "A; \u00a77.3, \u00a79.4.5", + "spec": "A; §7.3, §9.4.5", "sender": "spec", "receiver": "affinidi-rust", "status": "skip", @@ -436,7 +441,7 @@ { "suite": "vectors", "case": "control-rfd/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "affinidi-rust", "status": "pass", @@ -445,7 +450,7 @@ { "suite": "vectors", "case": "control-rfi-direct/open", - "spec": "A; \u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "A; §7.2.1, §7.2.2, §9.4.1", "sender": "spec", "receiver": "affinidi-rust", "status": "pass", @@ -458,7 +463,7 @@ { "suite": "vectors", "case": "control-rfi-direct/pack-exact", - "spec": "A; \u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "A; §7.2.1, §7.2.2, §9.4.1", "sender": "spec", "receiver": "affinidi-rust", "status": "skip", @@ -467,7 +472,7 @@ { "suite": "vectors", "case": "control-rfi-direct/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "affinidi-rust", "status": "pass", @@ -476,7 +481,7 @@ { "suite": "vectors", "case": "control-rfi-sealed-box/open", - "spec": "A; \u00a77.2.1, \u00a78, \u00a79.4.1", + "spec": "A; §7.2.1, §8, §9.4.1", "sender": "spec", "receiver": "affinidi-rust", "status": "pass", @@ -489,7 +494,7 @@ { "suite": "vectors", "case": "control-rfi-sealed-box/pack-exact", - "spec": "A; \u00a77.2.1, \u00a78, \u00a79.4.1", + "spec": "A; §7.2.1, §8, §9.4.1", "sender": "spec", "receiver": "affinidi-rust", "status": "skip", @@ -498,7 +503,7 @@ { "suite": "vectors", "case": "control-rfi-sealed-box/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "affinidi-rust", "status": "pass", @@ -507,7 +512,7 @@ { "suite": "vectors", "case": "direct-hpke-base/open", - "spec": "A; \u00a78.2, \u00a79.1, \u00a79.2.8", + "spec": "A; §8.2, §9.1, §9.2.8", "sender": "spec", "receiver": "affinidi-rust", "status": "pass", @@ -520,7 +525,7 @@ { "suite": "vectors", "case": "direct-hpke-base/pack-exact", - "spec": "A; \u00a78.2, \u00a79.1, \u00a79.2.8", + "spec": "A; §8.2, §9.1, §9.2.8", "sender": "spec", "receiver": "affinidi-rust", "status": "skip", @@ -529,7 +534,7 @@ { "suite": "vectors", "case": "direct-hpke-base/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "affinidi-rust", "status": "pass", @@ -538,7 +543,7 @@ { "suite": "vectors", "case": "direct-hpke-base-pq/open", - "spec": "A; \u00a78.2, \u00a78.3, \u00a79.2.8", + "spec": "A; §8.2, §8.3, §9.2.8", "sender": "spec", "receiver": "affinidi-rust", "status": "pass", @@ -551,7 +556,7 @@ { "suite": "vectors", "case": "direct-hpke-base-pq/pack-exact", - "spec": "A; \u00a78.2, \u00a78.3, \u00a79.2.8", + "spec": "A; §8.2, §8.3, §9.2.8", "sender": "spec", "receiver": "affinidi-rust", "status": "skip", @@ -560,7 +565,7 @@ { "suite": "vectors", "case": "direct-hpke-base-pq/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "affinidi-rust", "status": "pass", @@ -569,7 +574,7 @@ { "suite": "vectors", "case": "direct-sealed-box/open", - "spec": "A; \u00a78.3, \u00a79.1, \u00a79.2.8, \u00a79.5", + "spec": "A; §8.3, §9.1, §9.2.8, §9.5", "sender": "spec", "receiver": "affinidi-rust", "status": "pass", @@ -582,7 +587,7 @@ { "suite": "vectors", "case": "direct-sealed-box/pack-exact", - "spec": "A; \u00a78.3, \u00a79.1, \u00a79.2.8, \u00a79.5", + "spec": "A; §8.3, §9.1, §9.2.8, §9.5", "sender": "spec", "receiver": "affinidi-rust", "status": "skip", @@ -591,7 +596,7 @@ { "suite": "vectors", "case": "direct-sealed-box/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "affinidi-rust", "status": "pass", @@ -600,7 +605,7 @@ { "suite": "vectors", "case": "direct-signed-only/open", - "spec": "A; \u00a73.5, \u00a79.1", + "spec": "A; §3.5, §9.1", "sender": "spec", "receiver": "affinidi-rust", "status": "pass", @@ -613,16 +618,16 @@ { "suite": "vectors", "case": "direct-signed-only/pack-exact", - "spec": "A; \u00a73.5, \u00a79.1", + "spec": "A; §3.5, §9.1", "sender": "spec", "receiver": "affinidi-rust", "status": "skip", - "detail": "affinidi-rust pack: unsupported \u2014 affinidi-tsp always carries the sender VID in the payload; NULL cannot be requested" + "detail": "affinidi-rust pack: unsupported — affinidi-tsp always carries the sender VID in the payload; NULL cannot be requested" }, { "suite": "vectors", "case": "direct-signed-only/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "affinidi-rust", "status": "pass", @@ -631,7 +636,7 @@ { "suite": "vectors", "case": "nested-direct/open", - "spec": "A; \u00a74, \u00a79.4.15", + "spec": "A; §4, §9.4.15", "sender": "spec", "receiver": "affinidi-rust", "status": "pass", @@ -644,7 +649,7 @@ { "suite": "vectors", "case": "nested-direct/inner-open", - "spec": "A; \u00a74, \u00a79.4.15", + "spec": "A; §4, §9.4.15", "sender": "spec", "receiver": "affinidi-rust", "status": "pass", @@ -657,7 +662,7 @@ { "suite": "vectors", "case": "nested-direct/pack-exact", - "spec": "A; \u00a74, \u00a79.4.15", + "spec": "A; §4, §9.4.15", "sender": "spec", "receiver": "affinidi-rust", "status": "skip", @@ -666,7 +671,7 @@ { "suite": "vectors", "case": "nested-direct/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "affinidi-rust", "status": "pass", @@ -675,7 +680,7 @@ { "suite": "vectors", "case": "routed/open", - "spec": "A; \u00a75.2, \u00a75.3.3, \u00a79.4.16", + "spec": "A; §5.2, §5.3.3, §9.4.16", "sender": "spec", "receiver": "affinidi-rust", "status": "pass", @@ -688,7 +693,7 @@ { "suite": "vectors", "case": "routed/inner-open", - "spec": "A; \u00a75.2, \u00a75.3.3, \u00a79.4.16", + "spec": "A; §5.2, §5.3.3, §9.4.16", "sender": "spec", "receiver": "affinidi-rust", "status": "pass", @@ -701,7 +706,7 @@ { "suite": "vectors", "case": "routed/pack-exact", - "spec": "A; \u00a75.2, \u00a75.3.3, \u00a79.4.16", + "spec": "A; §5.2, §5.3.3, §9.4.16", "sender": "spec", "receiver": "affinidi-rust", "status": "skip", @@ -710,7 +715,7 @@ { "suite": "vectors", "case": "routed/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "affinidi-rust", "status": "pass", @@ -719,7 +724,7 @@ { "suite": "vectors", "case": "direct-signed-only/resigned/minor-ABA-accepted", - "spec": "\u00a79.1 (MINOR does not gate; tsp_sdk 0.10 emitted YTSP-ABA)", + "spec": "§9.1 (MINOR does not gate; tsp_sdk 0.10 emitted YTSP-ABA)", "sender": "spec (re-signed)", "receiver": "affinidi-rust", "status": "pass", @@ -732,7 +737,7 @@ { "suite": "vectors", "case": "direct-signed-only/resigned/minor-AAD-accepted", - "spec": "\u00a79.1 (a later MINOR is still processable)", + "spec": "§9.1 (a later MINOR is still processable)", "sender": "spec (re-signed)", "receiver": "affinidi-rust", "status": "pass", @@ -745,7 +750,7 @@ { "suite": "vectors", "case": "direct-signed-only/resigned/essr-sender-present-accepted", - "spec": "\u00a73.7 step 7 (ESSR field MAY carry VID_sndr)", + "spec": "§3.7 step 7 (ESSR field MAY carry VID_sndr)", "sender": "spec (re-signed)", "receiver": "affinidi-rust", "status": "pass", @@ -758,7 +763,7 @@ { "suite": "vectors", "case": "control-rfa-direct/open", - "spec": "A; \u00a77.2.2, \u00a79.4.2", + "spec": "A; §7.2.2, §9.4.2", "sender": "spec", "receiver": "reference-rust", "status": "pass", @@ -772,7 +777,7 @@ { "suite": "vectors", "case": "control-rfa-direct/pack-exact", - "spec": "A; \u00a77.2.2, \u00a79.4.2", + "spec": "A; §7.2.2, §9.4.2", "sender": "spec", "receiver": "reference-rust", "status": "skip", @@ -781,7 +786,7 @@ { "suite": "vectors", "case": "control-rfa-direct/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "reference-rust", "status": "pass", @@ -793,7 +798,7 @@ { "suite": "vectors", "case": "control-rfd/open", - "spec": "A; \u00a77.3, \u00a79.4.5", + "spec": "A; §7.3, §9.4.5", "sender": "spec", "receiver": "reference-rust", "status": "pass", @@ -807,7 +812,7 @@ { "suite": "vectors", "case": "control-rfd/pack-exact", - "spec": "A; \u00a77.3, \u00a79.4.5", + "spec": "A; §7.3, §9.4.5", "sender": "spec", "receiver": "reference-rust", "status": "skip", @@ -816,7 +821,7 @@ { "suite": "vectors", "case": "control-rfd/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "reference-rust", "status": "pass", @@ -828,7 +833,7 @@ { "suite": "vectors", "case": "control-rfi-direct/open", - "spec": "A; \u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "A; §7.2.1, §7.2.2, §9.4.1", "sender": "spec", "receiver": "reference-rust", "status": "pass", @@ -843,7 +848,7 @@ { "suite": "vectors", "case": "control-rfi-direct/pack-exact", - "spec": "A; \u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "A; §7.2.1, §7.2.2, §9.4.1", "sender": "spec", "receiver": "reference-rust", "status": "skip", @@ -852,7 +857,7 @@ { "suite": "vectors", "case": "control-rfi-direct/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "reference-rust", "status": "pass", @@ -864,7 +869,7 @@ { "suite": "vectors", "case": "control-rfi-sealed-box/open", - "spec": "A; \u00a77.2.1, \u00a78, \u00a79.4.1", + "spec": "A; §7.2.1, §8, §9.4.1", "sender": "spec", "receiver": "reference-rust", "status": "pass", @@ -879,7 +884,7 @@ { "suite": "vectors", "case": "control-rfi-sealed-box/pack-exact", - "spec": "A; \u00a77.2.1, \u00a78, \u00a79.4.1", + "spec": "A; §7.2.1, §8, §9.4.1", "sender": "spec", "receiver": "reference-rust", "status": "skip", @@ -888,7 +893,7 @@ { "suite": "vectors", "case": "control-rfi-sealed-box/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "reference-rust", "status": "pass", @@ -900,7 +905,7 @@ { "suite": "vectors", "case": "direct-hpke-base/open", - "spec": "A; \u00a78.2, \u00a79.1, \u00a79.2.8", + "spec": "A; §8.2, §9.1, §9.2.8", "sender": "spec", "receiver": "reference-rust", "status": "pass", @@ -914,7 +919,7 @@ { "suite": "vectors", "case": "direct-hpke-base/pack-exact", - "spec": "A; \u00a78.2, \u00a79.1, \u00a79.2.8", + "spec": "A; §8.2, §9.1, §9.2.8", "sender": "spec", "receiver": "reference-rust", "status": "skip", @@ -923,7 +928,7 @@ { "suite": "vectors", "case": "direct-hpke-base/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "reference-rust", "status": "pass", @@ -935,7 +940,7 @@ { "suite": "vectors", "case": "direct-hpke-base-pq/open", - "spec": "A; \u00a78.2, \u00a78.3, \u00a79.2.8", + "spec": "A; §8.2, §8.3, §9.2.8", "sender": "spec", "receiver": "reference-rust", "status": "pass", @@ -949,7 +954,7 @@ { "suite": "vectors", "case": "direct-hpke-base-pq/pack-exact", - "spec": "A; \u00a78.2, \u00a78.3, \u00a79.2.8", + "spec": "A; §8.2, §8.3, §9.2.8", "sender": "spec", "receiver": "reference-rust", "status": "skip", @@ -958,7 +963,7 @@ { "suite": "vectors", "case": "direct-hpke-base-pq/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "reference-rust", "status": "pass", @@ -970,7 +975,7 @@ { "suite": "vectors", "case": "direct-sealed-box/open", - "spec": "A; \u00a78.3, \u00a79.1, \u00a79.2.8, \u00a79.5", + "spec": "A; §8.3, §9.1, §9.2.8, §9.5", "sender": "spec", "receiver": "reference-rust", "status": "pass", @@ -984,7 +989,7 @@ { "suite": "vectors", "case": "direct-sealed-box/pack-exact", - "spec": "A; \u00a78.3, \u00a79.1, \u00a79.2.8, \u00a79.5", + "spec": "A; §8.3, §9.1, §9.2.8, §9.5", "sender": "spec", "receiver": "reference-rust", "status": "skip", @@ -993,7 +998,7 @@ { "suite": "vectors", "case": "direct-sealed-box/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "reference-rust", "status": "pass", @@ -1005,7 +1010,7 @@ { "suite": "vectors", "case": "direct-signed-only/open", - "spec": "A; \u00a73.5, \u00a79.1", + "spec": "A; §3.5, §9.1", "sender": "spec", "receiver": "reference-rust", "status": "pass", @@ -1019,7 +1024,7 @@ { "suite": "vectors", "case": "direct-signed-only/pack-exact", - "spec": "A; \u00a73.5, \u00a79.1", + "spec": "A; §3.5, §9.1", "sender": "spec", "receiver": "reference-rust", "status": "pass", @@ -1028,7 +1033,7 @@ { "suite": "vectors", "case": "direct-signed-only/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "reference-rust", "status": "pass", @@ -1040,7 +1045,7 @@ { "suite": "vectors", "case": "nested-direct/open", - "spec": "A; \u00a74, \u00a79.4.15", + "spec": "A; §4, §9.4.15", "sender": "spec", "receiver": "reference-rust", "status": "pass", @@ -1054,7 +1059,7 @@ { "suite": "vectors", "case": "nested-direct/inner-open", - "spec": "A; \u00a74, \u00a79.4.15", + "spec": "A; §4, §9.4.15", "sender": "spec", "receiver": "reference-rust", "status": "pass", @@ -1068,7 +1073,7 @@ { "suite": "vectors", "case": "nested-direct/pack-exact", - "spec": "A; \u00a74, \u00a79.4.15", + "spec": "A; §4, §9.4.15", "sender": "spec", "receiver": "reference-rust", "status": "skip", @@ -1077,7 +1082,7 @@ { "suite": "vectors", "case": "nested-direct/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "reference-rust", "status": "pass", @@ -1089,7 +1094,7 @@ { "suite": "vectors", "case": "routed/open", - "spec": "A; \u00a75.2, \u00a75.3.3, \u00a79.4.16", + "spec": "A; §5.2, §5.3.3, §9.4.16", "sender": "spec", "receiver": "reference-rust", "status": "pass", @@ -1103,7 +1108,7 @@ { "suite": "vectors", "case": "routed/inner-open", - "spec": "A; \u00a75.2, \u00a75.3.3, \u00a79.4.16", + "spec": "A; §5.2, §5.3.3, §9.4.16", "sender": "spec", "receiver": "reference-rust", "status": "pass", @@ -1117,7 +1122,7 @@ { "suite": "vectors", "case": "routed/pack-exact", - "spec": "A; \u00a75.2, \u00a75.3.3, \u00a79.4.16", + "spec": "A; §5.2, §5.3.3, §9.4.16", "sender": "spec", "receiver": "reference-rust", "status": "skip", @@ -1126,7 +1131,7 @@ { "suite": "vectors", "case": "routed/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "reference-rust", "status": "pass", @@ -1138,7 +1143,7 @@ { "suite": "vectors", "case": "direct-signed-only/resigned/minor-ABA-accepted", - "spec": "\u00a79.1 (MINOR does not gate; tsp_sdk 0.10 emitted YTSP-ABA)", + "spec": "§9.1 (MINOR does not gate; tsp_sdk 0.10 emitted YTSP-ABA)", "sender": "spec (re-signed)", "receiver": "reference-rust", "status": "pass", @@ -1152,7 +1157,7 @@ { "suite": "vectors", "case": "direct-signed-only/resigned/minor-AAD-accepted", - "spec": "\u00a79.1 (a later MINOR is still processable)", + "spec": "§9.1 (a later MINOR is still processable)", "sender": "spec (re-signed)", "receiver": "reference-rust", "status": "pass", @@ -1166,7 +1171,7 @@ { "suite": "vectors", "case": "direct-signed-only/resigned/essr-sender-present-accepted", - "spec": "\u00a73.7 step 7 (ESSR field MAY carry VID_sndr)", + "spec": "§3.7 step 7 (ESSR field MAY carry VID_sndr)", "sender": "spec (re-signed)", "receiver": "reference-rust", "status": "pass", @@ -1180,7 +1185,7 @@ { "suite": "vectors", "case": "control-rfa-direct/open", - "spec": "A; \u00a77.2.2, \u00a79.4.2", + "spec": "A; §7.2.2, §9.4.2", "sender": "spec", "receiver": "tsp-js", "status": "pass", @@ -1193,7 +1198,7 @@ { "suite": "vectors", "case": "control-rfa-direct/pack-exact", - "spec": "A; \u00a77.2.2, \u00a79.4.2", + "spec": "A; §7.2.2, §9.4.2", "sender": "spec", "receiver": "tsp-js", "status": "skip", @@ -1202,7 +1207,7 @@ { "suite": "vectors", "case": "control-rfa-direct/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "tsp-js", "status": "pass", @@ -1211,7 +1216,7 @@ { "suite": "vectors", "case": "control-rfd/open", - "spec": "A; \u00a77.3, \u00a79.4.5", + "spec": "A; §7.3, §9.4.5", "sender": "spec", "receiver": "tsp-js", "status": "pass", @@ -1224,7 +1229,7 @@ { "suite": "vectors", "case": "control-rfd/pack-exact", - "spec": "A; \u00a77.3, \u00a79.4.5", + "spec": "A; §7.3, §9.4.5", "sender": "spec", "receiver": "tsp-js", "status": "skip", @@ -1233,7 +1238,7 @@ { "suite": "vectors", "case": "control-rfd/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "tsp-js", "status": "pass", @@ -1242,7 +1247,7 @@ { "suite": "vectors", "case": "control-rfi-direct/open", - "spec": "A; \u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "A; §7.2.1, §7.2.2, §9.4.1", "sender": "spec", "receiver": "tsp-js", "status": "pass", @@ -1255,7 +1260,7 @@ { "suite": "vectors", "case": "control-rfi-direct/pack-exact", - "spec": "A; \u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "A; §7.2.1, §7.2.2, §9.4.1", "sender": "spec", "receiver": "tsp-js", "status": "skip", @@ -1264,7 +1269,7 @@ { "suite": "vectors", "case": "control-rfi-direct/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "tsp-js", "status": "pass", @@ -1273,7 +1278,7 @@ { "suite": "vectors", "case": "control-rfi-sealed-box/open", - "spec": "A; \u00a77.2.1, \u00a78, \u00a79.4.1", + "spec": "A; §7.2.1, §8, §9.4.1", "sender": "spec", "receiver": "tsp-js", "status": "skip", @@ -1282,7 +1287,7 @@ { "suite": "vectors", "case": "control-rfi-sealed-box/pack-exact", - "spec": "A; \u00a77.2.1, \u00a78, \u00a79.4.1", + "spec": "A; §7.2.1, §8, §9.4.1", "sender": "spec", "receiver": "tsp-js", "status": "skip", @@ -1291,7 +1296,7 @@ { "suite": "vectors", "case": "control-rfi-sealed-box/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "tsp-js", "status": "pass", @@ -1300,7 +1305,7 @@ { "suite": "vectors", "case": "direct-hpke-base/open", - "spec": "A; \u00a78.2, \u00a79.1, \u00a79.2.8", + "spec": "A; §8.2, §9.1, §9.2.8", "sender": "spec", "receiver": "tsp-js", "status": "pass", @@ -1313,7 +1318,7 @@ { "suite": "vectors", "case": "direct-hpke-base/pack-exact", - "spec": "A; \u00a78.2, \u00a79.1, \u00a79.2.8", + "spec": "A; §8.2, §9.1, §9.2.8", "sender": "spec", "receiver": "tsp-js", "status": "skip", @@ -1322,7 +1327,7 @@ { "suite": "vectors", "case": "direct-hpke-base/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "tsp-js", "status": "pass", @@ -1331,7 +1336,7 @@ { "suite": "vectors", "case": "direct-hpke-base-pq/open", - "spec": "A; \u00a78.2, \u00a78.3, \u00a79.2.8", + "spec": "A; §8.2, §8.3, §9.2.8", "sender": "spec", "receiver": "tsp-js", "status": "skip", @@ -1340,7 +1345,7 @@ { "suite": "vectors", "case": "direct-hpke-base-pq/pack-exact", - "spec": "A; \u00a78.2, \u00a78.3, \u00a79.2.8", + "spec": "A; §8.2, §8.3, §9.2.8", "sender": "spec", "receiver": "tsp-js", "status": "skip", @@ -1349,7 +1354,7 @@ { "suite": "vectors", "case": "direct-hpke-base-pq/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "tsp-js", "status": "pass", @@ -1358,7 +1363,7 @@ { "suite": "vectors", "case": "direct-sealed-box/open", - "spec": "A; \u00a78.3, \u00a79.1, \u00a79.2.8, \u00a79.5", + "spec": "A; §8.3, §9.1, §9.2.8, §9.5", "sender": "spec", "receiver": "tsp-js", "status": "skip", @@ -1367,7 +1372,7 @@ { "suite": "vectors", "case": "direct-sealed-box/pack-exact", - "spec": "A; \u00a78.3, \u00a79.1, \u00a79.2.8, \u00a79.5", + "spec": "A; §8.3, §9.1, §9.2.8, §9.5", "sender": "spec", "receiver": "tsp-js", "status": "skip", @@ -1376,7 +1381,7 @@ { "suite": "vectors", "case": "direct-sealed-box/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "tsp-js", "status": "pass", @@ -1385,7 +1390,7 @@ { "suite": "vectors", "case": "direct-signed-only/open", - "spec": "A; \u00a73.5, \u00a79.1", + "spec": "A; §3.5, §9.1", "sender": "spec", "receiver": "tsp-js", "status": "skip", @@ -1394,7 +1399,7 @@ { "suite": "vectors", "case": "direct-signed-only/pack-exact", - "spec": "A; \u00a73.5, \u00a79.1", + "spec": "A; §3.5, §9.1", "sender": "spec", "receiver": "tsp-js", "status": "skip", @@ -1403,7 +1408,7 @@ { "suite": "vectors", "case": "direct-signed-only/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "tsp-js", "status": "pass", @@ -1412,7 +1417,7 @@ { "suite": "vectors", "case": "nested-direct/open", - "spec": "A; \u00a74, \u00a79.4.15", + "spec": "A; §4, §9.4.15", "sender": "spec", "receiver": "tsp-js", "status": "pass", @@ -1425,7 +1430,7 @@ { "suite": "vectors", "case": "nested-direct/inner-open", - "spec": "A; \u00a74, \u00a79.4.15", + "spec": "A; §4, §9.4.15", "sender": "spec", "receiver": "tsp-js", "status": "pass", @@ -1438,7 +1443,7 @@ { "suite": "vectors", "case": "nested-direct/pack-exact", - "spec": "A; \u00a74, \u00a79.4.15", + "spec": "A; §4, §9.4.15", "sender": "spec", "receiver": "tsp-js", "status": "skip", @@ -1447,7 +1452,7 @@ { "suite": "vectors", "case": "nested-direct/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "tsp-js", "status": "pass", @@ -1456,7 +1461,7 @@ { "suite": "vectors", "case": "routed/open", - "spec": "A; \u00a75.2, \u00a75.3.3, \u00a79.4.16", + "spec": "A; §5.2, §5.3.3, §9.4.16", "sender": "spec", "receiver": "tsp-js", "status": "pass", @@ -1469,7 +1474,7 @@ { "suite": "vectors", "case": "routed/inner-open", - "spec": "A; \u00a75.2, \u00a75.3.3, \u00a79.4.16", + "spec": "A; §5.2, §5.3.3, §9.4.16", "sender": "spec", "receiver": "tsp-js", "status": "pass", @@ -1482,7 +1487,7 @@ { "suite": "vectors", "case": "routed/pack-exact", - "spec": "A; \u00a75.2, \u00a75.3.3, \u00a79.4.16", + "spec": "A; §5.2, §5.3.3, §9.4.16", "sender": "spec", "receiver": "tsp-js", "status": "skip", @@ -1491,7 +1496,7 @@ { "suite": "vectors", "case": "routed/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "tsp-js", "status": "pass", @@ -1500,7 +1505,7 @@ { "suite": "vectors", "case": "direct-signed-only/resigned/minor-ABA-accepted", - "spec": "\u00a79.1 (MINOR does not gate; tsp_sdk 0.10 emitted YTSP-ABA)", + "spec": "§9.1 (MINOR does not gate; tsp_sdk 0.10 emitted YTSP-ABA)", "sender": "spec (re-signed)", "receiver": "tsp-js", "status": "skip", @@ -1509,7 +1514,7 @@ { "suite": "vectors", "case": "direct-signed-only/resigned/minor-AAD-accepted", - "spec": "\u00a79.1 (a later MINOR is still processable)", + "spec": "§9.1 (a later MINOR is still processable)", "sender": "spec (re-signed)", "receiver": "tsp-js", "status": "skip", @@ -1518,7 +1523,7 @@ { "suite": "vectors", "case": "direct-signed-only/resigned/essr-sender-present-accepted", - "spec": "\u00a73.7 step 7 (ESSR field MAY carry VID_sndr)", + "spec": "§3.7 step 7 (ESSR field MAY carry VID_sndr)", "sender": "spec (re-signed)", "receiver": "tsp-js", "status": "skip", @@ -1527,7 +1532,7 @@ { "suite": "vectors", "case": "control-rfa-direct/open", - "spec": "A; \u00a77.2.2, \u00a79.4.2", + "spec": "A; §7.2.2, §9.4.2", "sender": "spec", "receiver": "go", "status": "pass", @@ -1536,7 +1541,7 @@ { "suite": "vectors", "case": "control-rfa-direct/pack-exact", - "spec": "A; \u00a77.2.2, \u00a79.4.2", + "spec": "A; §7.2.2, §9.4.2", "sender": "spec", "receiver": "go", "status": "pass", @@ -1545,7 +1550,7 @@ { "suite": "vectors", "case": "control-rfa-direct/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "go", "status": "pass", @@ -1554,7 +1559,7 @@ { "suite": "vectors", "case": "control-rfd/open", - "spec": "A; \u00a77.3, \u00a79.4.5", + "spec": "A; §7.3, §9.4.5", "sender": "spec", "receiver": "go", "status": "pass", @@ -1563,7 +1568,7 @@ { "suite": "vectors", "case": "control-rfd/pack-exact", - "spec": "A; \u00a77.3, \u00a79.4.5", + "spec": "A; §7.3, §9.4.5", "sender": "spec", "receiver": "go", "status": "pass", @@ -1572,7 +1577,7 @@ { "suite": "vectors", "case": "control-rfd/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "go", "status": "pass", @@ -1581,7 +1586,7 @@ { "suite": "vectors", "case": "control-rfi-direct/open", - "spec": "A; \u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "A; §7.2.1, §7.2.2, §9.4.1", "sender": "spec", "receiver": "go", "status": "pass", @@ -1590,7 +1595,7 @@ { "suite": "vectors", "case": "control-rfi-direct/pack-exact", - "spec": "A; \u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "A; §7.2.1, §7.2.2, §9.4.1", "sender": "spec", "receiver": "go", "status": "pass", @@ -1599,7 +1604,7 @@ { "suite": "vectors", "case": "control-rfi-direct/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "go", "status": "pass", @@ -1608,7 +1613,7 @@ { "suite": "vectors", "case": "control-rfi-sealed-box/open", - "spec": "A; \u00a77.2.1, \u00a78, \u00a79.4.1", + "spec": "A; §7.2.1, §8, §9.4.1", "sender": "spec", "receiver": "go", "status": "pass", @@ -1617,7 +1622,7 @@ { "suite": "vectors", "case": "control-rfi-sealed-box/pack-exact", - "spec": "A; \u00a77.2.1, \u00a78, \u00a79.4.1", + "spec": "A; §7.2.1, §8, §9.4.1", "sender": "spec", "receiver": "go", "status": "pass", @@ -1626,7 +1631,7 @@ { "suite": "vectors", "case": "control-rfi-sealed-box/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "go", "status": "pass", @@ -1635,7 +1640,7 @@ { "suite": "vectors", "case": "direct-hpke-base/open", - "spec": "A; \u00a78.2, \u00a79.1, \u00a79.2.8", + "spec": "A; §8.2, §9.1, §9.2.8", "sender": "spec", "receiver": "go", "status": "pass", @@ -1644,7 +1649,7 @@ { "suite": "vectors", "case": "direct-hpke-base/pack-exact", - "spec": "A; \u00a78.2, \u00a79.1, \u00a79.2.8", + "spec": "A; §8.2, §9.1, §9.2.8", "sender": "spec", "receiver": "go", "status": "pass", @@ -1653,7 +1658,7 @@ { "suite": "vectors", "case": "direct-hpke-base/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "go", "status": "pass", @@ -1662,7 +1667,7 @@ { "suite": "vectors", "case": "direct-hpke-base-pq/open", - "spec": "A; \u00a78.2, \u00a78.3, \u00a79.2.8", + "spec": "A; §8.2, §8.3, §9.2.8", "sender": "spec", "receiver": "go", "status": "pass", @@ -1671,7 +1676,7 @@ { "suite": "vectors", "case": "direct-hpke-base-pq/pack-exact", - "spec": "A; \u00a78.2, \u00a78.3, \u00a79.2.8", + "spec": "A; §8.2, §8.3, §9.2.8", "sender": "spec", "receiver": "go", "status": "skip", @@ -1680,7 +1685,7 @@ { "suite": "vectors", "case": "direct-hpke-base-pq/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "go", "status": "pass", @@ -1689,7 +1694,7 @@ { "suite": "vectors", "case": "direct-sealed-box/open", - "spec": "A; \u00a78.3, \u00a79.1, \u00a79.2.8, \u00a79.5", + "spec": "A; §8.3, §9.1, §9.2.8, §9.5", "sender": "spec", "receiver": "go", "status": "pass", @@ -1698,7 +1703,7 @@ { "suite": "vectors", "case": "direct-sealed-box/pack-exact", - "spec": "A; \u00a78.3, \u00a79.1, \u00a79.2.8, \u00a79.5", + "spec": "A; §8.3, §9.1, §9.2.8, §9.5", "sender": "spec", "receiver": "go", "status": "pass", @@ -1707,7 +1712,7 @@ { "suite": "vectors", "case": "direct-sealed-box/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "go", "status": "pass", @@ -1716,7 +1721,7 @@ { "suite": "vectors", "case": "direct-signed-only/open", - "spec": "A; \u00a73.5, \u00a79.1", + "spec": "A; §3.5, §9.1", "sender": "spec", "receiver": "go", "status": "pass", @@ -1725,7 +1730,7 @@ { "suite": "vectors", "case": "direct-signed-only/pack-exact", - "spec": "A; \u00a73.5, \u00a79.1", + "spec": "A; §3.5, §9.1", "sender": "spec", "receiver": "go", "status": "pass", @@ -1734,7 +1739,7 @@ { "suite": "vectors", "case": "direct-signed-only/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "go", "status": "pass", @@ -1743,7 +1748,7 @@ { "suite": "vectors", "case": "nested-direct/open", - "spec": "A; \u00a74, \u00a79.4.15", + "spec": "A; §4, §9.4.15", "sender": "spec", "receiver": "go", "status": "pass", @@ -1752,7 +1757,7 @@ { "suite": "vectors", "case": "nested-direct/inner-open", - "spec": "A; \u00a74, \u00a79.4.15", + "spec": "A; §4, §9.4.15", "sender": "spec", "receiver": "go", "status": "pass", @@ -1761,7 +1766,7 @@ { "suite": "vectors", "case": "nested-direct/pack-exact", - "spec": "A; \u00a74, \u00a79.4.15", + "spec": "A; §4, §9.4.15", "sender": "spec", "receiver": "go", "status": "pass", @@ -1770,7 +1775,7 @@ { "suite": "vectors", "case": "nested-direct/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "go", "status": "pass", @@ -1779,7 +1784,7 @@ { "suite": "vectors", "case": "routed/open", - "spec": "A; \u00a75.2, \u00a75.3.3, \u00a79.4.16", + "spec": "A; §5.2, §5.3.3, §9.4.16", "sender": "spec", "receiver": "go", "status": "pass", @@ -1788,7 +1793,7 @@ { "suite": "vectors", "case": "routed/inner-open", - "spec": "A; \u00a75.2, \u00a75.3.3, \u00a79.4.16", + "spec": "A; §5.2, §5.3.3, §9.4.16", "sender": "spec", "receiver": "go", "status": "pass", @@ -1797,7 +1802,7 @@ { "suite": "vectors", "case": "routed/pack-exact", - "spec": "A; \u00a75.2, \u00a75.3.3, \u00a79.4.16", + "spec": "A; §5.2, §5.3.3, §9.4.16", "sender": "spec", "receiver": "go", "status": "pass", @@ -1806,7 +1811,7 @@ { "suite": "vectors", "case": "routed/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "go", "status": "pass", @@ -1815,7 +1820,7 @@ { "suite": "vectors", "case": "direct-signed-only/resigned/minor-ABA-accepted", - "spec": "\u00a79.1 (MINOR does not gate; tsp_sdk 0.10 emitted YTSP-ABA)", + "spec": "§9.1 (MINOR does not gate; tsp_sdk 0.10 emitted YTSP-ABA)", "sender": "spec (re-signed)", "receiver": "go", "status": "pass", @@ -1824,7 +1829,7 @@ { "suite": "vectors", "case": "direct-signed-only/resigned/minor-AAD-accepted", - "spec": "\u00a79.1 (a later MINOR is still processable)", + "spec": "§9.1 (a later MINOR is still processable)", "sender": "spec (re-signed)", "receiver": "go", "status": "pass", @@ -1833,7 +1838,7 @@ { "suite": "vectors", "case": "direct-signed-only/resigned/essr-sender-present-accepted", - "spec": "\u00a73.7 step 7 (ESSR field MAY carry VID_sndr)", + "spec": "§3.7 step 7 (ESSR field MAY carry VID_sndr)", "sender": "spec (re-signed)", "receiver": "go", "status": "pass", @@ -1842,7 +1847,7 @@ { "suite": "vectors", "case": "control-rfa-direct/open", - "spec": "A; \u00a77.2.2, \u00a79.4.2", + "spec": "A; §7.2.2, §9.4.2", "sender": "spec", "receiver": "dart", "status": "pass", @@ -1851,7 +1856,7 @@ { "suite": "vectors", "case": "control-rfa-direct/pack-exact", - "spec": "A; \u00a77.2.2, \u00a79.4.2", + "spec": "A; §7.2.2, §9.4.2", "sender": "spec", "receiver": "dart", "status": "pass", @@ -1860,7 +1865,7 @@ { "suite": "vectors", "case": "control-rfa-direct/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "dart", "status": "pass", @@ -1869,7 +1874,7 @@ { "suite": "vectors", "case": "control-rfd/open", - "spec": "A; \u00a77.3, \u00a79.4.5", + "spec": "A; §7.3, §9.4.5", "sender": "spec", "receiver": "dart", "status": "pass", @@ -1878,7 +1883,7 @@ { "suite": "vectors", "case": "control-rfd/pack-exact", - "spec": "A; \u00a77.3, \u00a79.4.5", + "spec": "A; §7.3, §9.4.5", "sender": "spec", "receiver": "dart", "status": "pass", @@ -1887,7 +1892,7 @@ { "suite": "vectors", "case": "control-rfd/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "dart", "status": "pass", @@ -1896,7 +1901,7 @@ { "suite": "vectors", "case": "control-rfi-direct/open", - "spec": "A; \u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "A; §7.2.1, §7.2.2, §9.4.1", "sender": "spec", "receiver": "dart", "status": "pass", @@ -1905,7 +1910,7 @@ { "suite": "vectors", "case": "control-rfi-direct/pack-exact", - "spec": "A; \u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "A; §7.2.1, §7.2.2, §9.4.1", "sender": "spec", "receiver": "dart", "status": "pass", @@ -1914,7 +1919,7 @@ { "suite": "vectors", "case": "control-rfi-direct/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "dart", "status": "pass", @@ -1923,7 +1928,7 @@ { "suite": "vectors", "case": "control-rfi-sealed-box/open", - "spec": "A; \u00a77.2.1, \u00a78, \u00a79.4.1", + "spec": "A; §7.2.1, §8, §9.4.1", "sender": "spec", "receiver": "dart", "status": "pass", @@ -1932,7 +1937,7 @@ { "suite": "vectors", "case": "control-rfi-sealed-box/pack-exact", - "spec": "A; \u00a77.2.1, \u00a78, \u00a79.4.1", + "spec": "A; §7.2.1, §8, §9.4.1", "sender": "spec", "receiver": "dart", "status": "pass", @@ -1941,7 +1946,7 @@ { "suite": "vectors", "case": "control-rfi-sealed-box/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "dart", "status": "pass", @@ -1950,7 +1955,7 @@ { "suite": "vectors", "case": "direct-hpke-base/open", - "spec": "A; \u00a78.2, \u00a79.1, \u00a79.2.8", + "spec": "A; §8.2, §9.1, §9.2.8", "sender": "spec", "receiver": "dart", "status": "pass", @@ -1959,7 +1964,7 @@ { "suite": "vectors", "case": "direct-hpke-base/pack-exact", - "spec": "A; \u00a78.2, \u00a79.1, \u00a79.2.8", + "spec": "A; §8.2, §9.1, §9.2.8", "sender": "spec", "receiver": "dart", "status": "pass", @@ -1968,7 +1973,7 @@ { "suite": "vectors", "case": "direct-hpke-base/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "dart", "status": "pass", @@ -1977,7 +1982,7 @@ { "suite": "vectors", "case": "direct-hpke-base-pq/open", - "spec": "A; \u00a78.2, \u00a78.3, \u00a79.2.8", + "spec": "A; §8.2, §8.3, §9.2.8", "sender": "spec", "receiver": "dart", "status": "pass", @@ -1986,7 +1991,7 @@ { "suite": "vectors", "case": "direct-hpke-base-pq/pack-exact", - "spec": "A; \u00a78.2, \u00a78.3, \u00a79.2.8", + "spec": "A; §8.2, §8.3, §9.2.8", "sender": "spec", "receiver": "dart", "status": "skip", @@ -1995,7 +2000,7 @@ { "suite": "vectors", "case": "direct-hpke-base-pq/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "dart", "status": "pass", @@ -2004,7 +2009,7 @@ { "suite": "vectors", "case": "direct-sealed-box/open", - "spec": "A; \u00a78.3, \u00a79.1, \u00a79.2.8, \u00a79.5", + "spec": "A; §8.3, §9.1, §9.2.8, §9.5", "sender": "spec", "receiver": "dart", "status": "pass", @@ -2013,7 +2018,7 @@ { "suite": "vectors", "case": "direct-sealed-box/pack-exact", - "spec": "A; \u00a78.3, \u00a79.1, \u00a79.2.8, \u00a79.5", + "spec": "A; §8.3, §9.1, §9.2.8, §9.5", "sender": "spec", "receiver": "dart", "status": "pass", @@ -2022,7 +2027,7 @@ { "suite": "vectors", "case": "direct-sealed-box/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "dart", "status": "pass", @@ -2031,7 +2036,7 @@ { "suite": "vectors", "case": "direct-signed-only/open", - "spec": "A; \u00a73.5, \u00a79.1", + "spec": "A; §3.5, §9.1", "sender": "spec", "receiver": "dart", "status": "pass", @@ -2040,7 +2045,7 @@ { "suite": "vectors", "case": "direct-signed-only/pack-exact", - "spec": "A; \u00a73.5, \u00a79.1", + "spec": "A; §3.5, §9.1", "sender": "spec", "receiver": "dart", "status": "pass", @@ -2049,7 +2054,7 @@ { "suite": "vectors", "case": "direct-signed-only/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "dart", "status": "pass", @@ -2058,7 +2063,7 @@ { "suite": "vectors", "case": "nested-direct/open", - "spec": "A; \u00a74, \u00a79.4.15", + "spec": "A; §4, §9.4.15", "sender": "spec", "receiver": "dart", "status": "pass", @@ -2067,7 +2072,7 @@ { "suite": "vectors", "case": "nested-direct/inner-open", - "spec": "A; \u00a74, \u00a79.4.15", + "spec": "A; §4, §9.4.15", "sender": "spec", "receiver": "dart", "status": "pass", @@ -2076,7 +2081,7 @@ { "suite": "vectors", "case": "nested-direct/pack-exact", - "spec": "A; \u00a74, \u00a79.4.15", + "spec": "A; §4, §9.4.15", "sender": "spec", "receiver": "dart", "status": "pass", @@ -2085,7 +2090,7 @@ { "suite": "vectors", "case": "nested-direct/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "dart", "status": "pass", @@ -2094,7 +2099,7 @@ { "suite": "vectors", "case": "routed/open", - "spec": "A; \u00a75.2, \u00a75.3.3, \u00a79.4.16", + "spec": "A; §5.2, §5.3.3, §9.4.16", "sender": "spec", "receiver": "dart", "status": "pass", @@ -2103,7 +2108,7 @@ { "suite": "vectors", "case": "routed/inner-open", - "spec": "A; \u00a75.2, \u00a75.3.3, \u00a79.4.16", + "spec": "A; §5.2, §5.3.3, §9.4.16", "sender": "spec", "receiver": "dart", "status": "pass", @@ -2112,7 +2117,7 @@ { "suite": "vectors", "case": "routed/pack-exact", - "spec": "A; \u00a75.2, \u00a75.3.3, \u00a79.4.16", + "spec": "A; §5.2, §5.3.3, §9.4.16", "sender": "spec", "receiver": "dart", "status": "pass", @@ -2121,7 +2126,7 @@ { "suite": "vectors", "case": "routed/peek", - "spec": "\u00a73.1, \u00a75.1 (keyless envelope)", + "spec": "§3.1, §5.1 (keyless envelope)", "sender": "spec", "receiver": "dart", "status": "pass", @@ -2130,7 +2135,7 @@ { "suite": "vectors", "case": "direct-signed-only/resigned/minor-ABA-accepted", - "spec": "\u00a79.1 (MINOR does not gate; tsp_sdk 0.10 emitted YTSP-ABA)", + "spec": "§9.1 (MINOR does not gate; tsp_sdk 0.10 emitted YTSP-ABA)", "sender": "spec (re-signed)", "receiver": "dart", "status": "pass", @@ -2139,7 +2144,7 @@ { "suite": "vectors", "case": "direct-signed-only/resigned/minor-AAD-accepted", - "spec": "\u00a79.1 (a later MINOR is still processable)", + "spec": "§9.1 (a later MINOR is still processable)", "sender": "spec (re-signed)", "receiver": "dart", "status": "pass", @@ -2148,7 +2153,7 @@ { "suite": "vectors", "case": "direct-signed-only/resigned/essr-sender-present-accepted", - "spec": "\u00a73.7 step 7 (ESSR field MAY carry VID_sndr)", + "spec": "§3.7 step 7 (ESSR field MAY carry VID_sndr)", "sender": "spec (re-signed)", "receiver": "dart", "status": "pass", @@ -2157,7 +2162,7 @@ { "suite": "interop", "case": "scs/hpke-base/small", - "spec": "\u00a73.5, \u00a78.2, \u00a79.2.3", + "spec": "§3.5, §8.2, §9.2.3", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2170,7 +2175,7 @@ { "suite": "interop", "case": "scs/hpke-base/empty", - "spec": "\u00a79.2.3", + "spec": "§9.2.3", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2183,7 +2188,7 @@ { "suite": "interop", "case": "scs/hpke-base/2mib", - "spec": "\u00a79.1 long count codes (--E, --Z, 7AAF)", + "spec": "§9.1 long count codes (--E, --Z, 7AAF)", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2196,7 +2201,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-0", - "spec": "\u00a79.2.4", + "spec": "§9.2.4", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2209,7 +2214,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-1", - "spec": "\u00a79.2.4 lead pad 2 (6B)", + "spec": "§9.2.4 lead pad 2 (6B)", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2222,7 +2227,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-2", - "spec": "\u00a79.2.4 lead pad 1 (5B)", + "spec": "§9.2.4 lead pad 1 (5B)", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2235,7 +2240,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-3", - "spec": "\u00a79.2.4 lead pad 0 (4B)", + "spec": "§9.2.4 lead pad 0 (4B)", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2248,7 +2253,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12285", - "spec": "\u00a79.2.4 short max (4B__)", + "spec": "§9.2.4 short max (4B__)", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2261,7 +2266,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12286", - "spec": "\u00a79.2.4 first long (9AAB)", + "spec": "§9.2.4 first long (9AAB)", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2274,7 +2279,7 @@ { "suite": "interop", "case": "scs/signed-only", - "spec": "\u00a73.5, \u00a79.2", + "spec": "§3.5, §9.2", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2287,7 +2292,7 @@ { "suite": "interop", "case": "scs/sealed-box", - "spec": "\u00a78.3, \u00a79.2.8", + "spec": "§8.3, §9.2.8", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2300,16 +2305,16 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-null", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR NULL)", + "spec": "§3.2, §8.2.2 (ESSR NULL)", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "skip", - "detail": "affinidi-rust pack: unsupported \u2014 affinidi-tsp always carries the sender VID in the payload; NULL cannot be requested" + "detail": "affinidi-rust pack: unsupported — affinidi-tsp always carries the sender VID in the payload; NULL cannot be requested" }, { "suite": "interop", "case": "scs/hpke-base/payload-sender-present", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR present)", + "spec": "§3.2, §8.2.2 (ESSR present)", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2322,7 +2327,7 @@ { "suite": "interop", "case": "scs/hpke-base/long-vid", - "spec": "\u00a79.1 VID 7AAB####", + "spec": "§9.1 VID 7AAB####", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2335,7 +2340,7 @@ { "suite": "interop", "case": "scs/hpke-pq", - "spec": "\u00a78.2.3, \u00a79.5.2 (MLKEM768-X25519, ML-DSA-65)", + "spec": "§8.2.3, §9.5.2 (MLKEM768-X25519, ML-DSA-65)", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2348,7 +2353,7 @@ { "suite": "interop", "case": "ctl/hpke-base", - "spec": "\u00a79.3 XCTL", + "spec": "§9.3 XCTL", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2361,7 +2366,7 @@ { "suite": "interop", "case": "pad/hpke-base", - "spec": "\u00a77.5, \u00a79.4.7 XPAD", + "spec": "§7.5, §9.4.7 XPAD", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2374,7 +2379,7 @@ { "suite": "interop", "case": "pad/hpke-base/padded", - "spec": "\u00a77.5, \u00a79.4.7 XPAD with Padding_Field", + "spec": "§7.5, §9.4.7 XPAD with Padding_Field", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2387,7 +2392,7 @@ { "suite": "interop", "case": "rfi/hpke-base/direct", - "spec": "\u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "§7.2.1, §7.2.2, §9.4.1", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2400,7 +2405,7 @@ { "suite": "interop", "case": "rfi/hpke-base/reply-path", - "spec": "\u00a77.2.4, \u00a79.4.1 Reply_Path", + "spec": "§7.2.4, §9.4.1 Reply_Path", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2413,7 +2418,7 @@ { "suite": "interop", "case": "rfi/hpke-base/referral", - "spec": "\u00a77.2.5, \u00a79.4.1 Referral_Field and Signature_new", + "spec": "§7.2.5, §9.4.1 Referral_Field and Signature_new", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2426,7 +2431,7 @@ { "suite": "interop", "case": "rfi/sealed-box", - "spec": "\u00a77.2.1, \u00a78.3 (Blake2b-256 digest F)", + "spec": "§7.2.1, §8.3 (Blake2b-256 digest F)", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2439,7 +2444,7 @@ { "suite": "interop", "case": "rfa/hpke-base/echo-own-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2", + "spec": "§7.2.2, §9.4.2", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2452,7 +2457,7 @@ { "suite": "interop", "case": "rfa/hpke-base/answers-receiver-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2 (cross-derived)", + "spec": "§7.2.2, §9.4.2 (cross-derived)", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2465,7 +2470,7 @@ { "suite": "interop", "case": "rfd/hpke-base", - "spec": "\u00a77.3, \u00a79.4.5", + "spec": "§7.3, §9.4.5", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2478,7 +2483,7 @@ { "suite": "interop", "case": "rfi/hpke-base/padded", - "spec": "\u00a77.2.1 (Padding_Field excluded from the SAID)", + "spec": "§7.2.1 (Padding_Field excluded from the SAID)", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2491,7 +2496,7 @@ { "suite": "interop", "case": "rfi/hpke-pq", - "spec": "\u00a77.2.1, \u00a78.2.3", + "spec": "§7.2.1, §8.2.3", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2504,7 +2509,7 @@ { "suite": "interop", "case": "rfa/sealed-box", - "spec": "\u00a77.2.2, \u00a78.3 (Blake2b-256)", + "spec": "§7.2.2, §8.3 (Blake2b-256)", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2517,7 +2522,7 @@ { "suite": "interop", "case": "rfd/sealed-box", - "spec": "\u00a77.3, \u00a78.3 (Blake2b-256)", + "spec": "§7.3, §8.3 (Blake2b-256)", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2530,7 +2535,7 @@ { "suite": "interop", "case": "hop/nested", - "spec": "\u00a74, \u00a79.4.15", + "spec": "§4, §9.4.15", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2545,7 +2550,7 @@ { "suite": "interop", "case": "hop/nested/padded", - "spec": "\u00a74, \u00a79.4.15 (Padding_Field before the inner message)", + "spec": "§4, §9.4.15 (Padding_Field before the inner message)", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2558,7 +2563,7 @@ { "suite": "interop", "case": "hop/nested/signed-only-inner", - "spec": "\u00a74 (a signed-only inner message is permitted)", + "spec": "§4 (a signed-only inner message is permitted)", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2573,7 +2578,7 @@ { "suite": "interop", "case": "hop/routed-2-hops", - "spec": "\u00a75.3, \u00a79.4.16", + "spec": "§5.3, §9.4.16", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2588,7 +2593,7 @@ { "suite": "interop", "case": "hop/routed-long-hop-list", - "spec": "\u00a79.4.16 hop list over 4095 quadlets (--J#####)", + "spec": "§9.4.16 hop list over 4095 quadlets (--J#####)", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2601,7 +2606,7 @@ { "suite": "interop", "case": "rfi/hpke-base/long-reply-path", - "spec": "\u00a79.4.1 Reply_Path over 4095 quadlets (--J#####)", + "spec": "§9.4.1 Reply_Path over 4095 quadlets (--J#####)", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2614,7 +2619,7 @@ { "suite": "interop", "case": "hop/routed-12-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -2629,18 +2634,22 @@ { "suite": "interop", "case": "hop/routed-17-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "affinidi-rust", "receiver": "affinidi-rust", - "status": "fail", - "detail": "affinidi-rust refused to pack: [malformed] invalid message: route has 17 hops, exceeds maximum of 16", - "cause": "affinidi-rust refuses to pack hpke-base/hop: [malformed] invalid message: route has 17 hops, exceeds maximum of 16", - "finding": "hop-list-limits" + "status": "pass", + "detail": "", + "unreported": [ + "payload.padding", + "payload.payloadSender", + "payload.padding", + "payload.payloadSender" + ] }, { "suite": "interop", "case": "scs/hpke-base/small", - "spec": "\u00a73.5, \u00a78.2, \u00a79.2.3", + "spec": "§3.5, §8.2, §9.2.3", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -2654,7 +2663,7 @@ { "suite": "interop", "case": "scs/hpke-base/empty", - "spec": "\u00a79.2.3", + "spec": "§9.2.3", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -2668,7 +2677,7 @@ { "suite": "interop", "case": "scs/hpke-base/2mib", - "spec": "\u00a79.1 long count codes (--E, --Z, 7AAF)", + "spec": "§9.1 long count codes (--E, --Z, 7AAF)", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -2682,7 +2691,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-0", - "spec": "\u00a79.2.4", + "spec": "§9.2.4", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -2696,7 +2705,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-1", - "spec": "\u00a79.2.4 lead pad 2 (6B)", + "spec": "§9.2.4 lead pad 2 (6B)", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -2710,7 +2719,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-2", - "spec": "\u00a79.2.4 lead pad 1 (5B)", + "spec": "§9.2.4 lead pad 1 (5B)", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -2724,7 +2733,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-3", - "spec": "\u00a79.2.4 lead pad 0 (4B)", + "spec": "§9.2.4 lead pad 0 (4B)", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -2738,7 +2747,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12285", - "spec": "\u00a79.2.4 short max (4B__)", + "spec": "§9.2.4 short max (4B__)", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -2752,7 +2761,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12286", - "spec": "\u00a79.2.4 first long (9AAB)", + "spec": "§9.2.4 first long (9AAB)", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -2766,7 +2775,7 @@ { "suite": "interop", "case": "scs/signed-only", - "spec": "\u00a73.5, \u00a79.2", + "spec": "§3.5, §9.2", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -2780,7 +2789,7 @@ { "suite": "interop", "case": "scs/sealed-box", - "spec": "\u00a78.3, \u00a79.2.8", + "spec": "§8.3, §9.2.8", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -2794,16 +2803,16 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-null", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR NULL)", + "spec": "§3.2, §8.2.2 (ESSR NULL)", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "skip", - "detail": "affinidi-rust pack: unsupported \u2014 affinidi-tsp always carries the sender VID in the payload; NULL cannot be requested" + "detail": "affinidi-rust pack: unsupported — affinidi-tsp always carries the sender VID in the payload; NULL cannot be requested" }, { "suite": "interop", "case": "scs/hpke-base/payload-sender-present", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR present)", + "spec": "§3.2, §8.2.2 (ESSR present)", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -2817,7 +2826,7 @@ { "suite": "interop", "case": "scs/hpke-base/long-vid", - "spec": "\u00a79.1 VID 7AAB####", + "spec": "§9.1 VID 7AAB####", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -2831,7 +2840,7 @@ { "suite": "interop", "case": "scs/hpke-pq", - "spec": "\u00a78.2.3, \u00a79.5.2 (MLKEM768-X25519, ML-DSA-65)", + "spec": "§8.2.3, §9.5.2 (MLKEM768-X25519, ML-DSA-65)", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -2845,7 +2854,7 @@ { "suite": "interop", "case": "ctl/hpke-base", - "spec": "\u00a79.3 XCTL", + "spec": "§9.3 XCTL", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -2859,7 +2868,7 @@ { "suite": "interop", "case": "pad/hpke-base", - "spec": "\u00a77.5, \u00a79.4.7 XPAD", + "spec": "§7.5, §9.4.7 XPAD", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -2873,7 +2882,7 @@ { "suite": "interop", "case": "pad/hpke-base/padded", - "spec": "\u00a77.5, \u00a79.4.7 XPAD with Padding_Field", + "spec": "§7.5, §9.4.7 XPAD with Padding_Field", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -2887,7 +2896,7 @@ { "suite": "interop", "case": "rfi/hpke-base/direct", - "spec": "\u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "§7.2.1, §7.2.2, §9.4.1", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -2902,7 +2911,7 @@ { "suite": "interop", "case": "rfi/hpke-base/reply-path", - "spec": "\u00a77.2.4, \u00a79.4.1 Reply_Path", + "spec": "§7.2.4, §9.4.1 Reply_Path", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -2917,7 +2926,7 @@ { "suite": "interop", "case": "rfi/hpke-base/referral", - "spec": "\u00a77.2.5, \u00a79.4.1 Referral_Field and Signature_new", + "spec": "§7.2.5, §9.4.1 Referral_Field and Signature_new", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -2932,7 +2941,7 @@ { "suite": "interop", "case": "rfi/sealed-box", - "spec": "\u00a77.2.1, \u00a78.3 (Blake2b-256 digest F)", + "spec": "§7.2.1, §8.3 (Blake2b-256 digest F)", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -2947,7 +2956,7 @@ { "suite": "interop", "case": "rfa/hpke-base/echo-own-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2", + "spec": "§7.2.2, §9.4.2", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -2961,7 +2970,7 @@ { "suite": "interop", "case": "rfa/hpke-base/answers-receiver-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2 (cross-derived)", + "spec": "§7.2.2, §9.4.2 (cross-derived)", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -2975,7 +2984,7 @@ { "suite": "interop", "case": "rfd/hpke-base", - "spec": "\u00a77.3, \u00a79.4.5", + "spec": "§7.3, §9.4.5", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -2989,7 +2998,7 @@ { "suite": "interop", "case": "rfi/hpke-base/padded", - "spec": "\u00a77.2.1 (Padding_Field excluded from the SAID)", + "spec": "§7.2.1 (Padding_Field excluded from the SAID)", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -3004,7 +3013,7 @@ { "suite": "interop", "case": "rfi/hpke-pq", - "spec": "\u00a77.2.1, \u00a78.2.3", + "spec": "§7.2.1, §8.2.3", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -3019,7 +3028,7 @@ { "suite": "interop", "case": "rfa/sealed-box", - "spec": "\u00a77.2.2, \u00a78.3 (Blake2b-256)", + "spec": "§7.2.2, §8.3 (Blake2b-256)", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -3033,7 +3042,7 @@ { "suite": "interop", "case": "rfd/sealed-box", - "spec": "\u00a77.3, \u00a78.3 (Blake2b-256)", + "spec": "§7.3, §8.3 (Blake2b-256)", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -3047,7 +3056,7 @@ { "suite": "interop", "case": "hop/nested", - "spec": "\u00a74, \u00a79.4.15", + "spec": "§4, §9.4.15", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -3064,7 +3073,7 @@ { "suite": "interop", "case": "hop/nested/padded", - "spec": "\u00a74, \u00a79.4.15 (Padding_Field before the inner message)", + "spec": "§4, §9.4.15 (Padding_Field before the inner message)", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -3078,7 +3087,7 @@ { "suite": "interop", "case": "hop/nested/signed-only-inner", - "spec": "\u00a74 (a signed-only inner message is permitted)", + "spec": "§4 (a signed-only inner message is permitted)", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -3095,7 +3104,7 @@ { "suite": "interop", "case": "hop/routed-2-hops", - "spec": "\u00a75.3, \u00a79.4.16", + "spec": "§5.3, §9.4.16", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -3112,7 +3121,7 @@ { "suite": "interop", "case": "hop/routed-long-hop-list", - "spec": "\u00a79.4.16 hop list over 4095 quadlets (--J#####)", + "spec": "§9.4.16 hop list over 4095 quadlets (--J#####)", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -3126,7 +3135,7 @@ { "suite": "interop", "case": "rfi/hpke-base/long-reply-path", - "spec": "\u00a79.4.1 Reply_Path over 4095 quadlets (--J#####)", + "spec": "§9.4.1 Reply_Path over 4095 quadlets (--J#####)", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -3141,7 +3150,7 @@ { "suite": "interop", "case": "hop/routed-12-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -3158,18 +3167,24 @@ { "suite": "interop", "case": "hop/routed-17-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "affinidi-rust", "receiver": "reference-rust", - "status": "fail", - "detail": "affinidi-rust refused to pack: [malformed] invalid message: route has 17 hops, exceeds maximum of 16", - "cause": "affinidi-rust refuses to pack hpke-base/hop: [malformed] invalid message: route has 17 hops, exceeds maximum of 16", - "finding": "hop-list-limits" + "status": "pass", + "detail": "", + "unreported": [ + "version", + "payload.padding", + "payload.payloadSender", + "version", + "payload.padding", + "payload.payloadSender" + ] }, { "suite": "interop", "case": "scs/hpke-base/small", - "spec": "\u00a73.5, \u00a78.2, \u00a79.2.3", + "spec": "§3.5, §8.2, §9.2.3", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -3182,7 +3197,7 @@ { "suite": "interop", "case": "scs/hpke-base/empty", - "spec": "\u00a79.2.3", + "spec": "§9.2.3", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -3195,7 +3210,7 @@ { "suite": "interop", "case": "scs/hpke-base/2mib", - "spec": "\u00a79.1 long count codes (--E, --Z, 7AAF)", + "spec": "§9.1 long count codes (--E, --Z, 7AAF)", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -3208,7 +3223,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-0", - "spec": "\u00a79.2.4", + "spec": "§9.2.4", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -3221,7 +3236,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-1", - "spec": "\u00a79.2.4 lead pad 2 (6B)", + "spec": "§9.2.4 lead pad 2 (6B)", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -3234,7 +3249,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-2", - "spec": "\u00a79.2.4 lead pad 1 (5B)", + "spec": "§9.2.4 lead pad 1 (5B)", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -3247,7 +3262,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-3", - "spec": "\u00a79.2.4 lead pad 0 (4B)", + "spec": "§9.2.4 lead pad 0 (4B)", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -3260,7 +3275,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12285", - "spec": "\u00a79.2.4 short max (4B__)", + "spec": "§9.2.4 short max (4B__)", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -3273,7 +3288,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12286", - "spec": "\u00a79.2.4 first long (9AAB)", + "spec": "§9.2.4 first long (9AAB)", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -3286,7 +3301,7 @@ { "suite": "interop", "case": "scs/signed-only", - "spec": "\u00a73.5, \u00a79.2", + "spec": "§3.5, §9.2", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "skip", @@ -3295,7 +3310,7 @@ { "suite": "interop", "case": "scs/sealed-box", - "spec": "\u00a78.3, \u00a79.2.8", + "spec": "§8.3, §9.2.8", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "skip", @@ -3304,16 +3319,16 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-null", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR NULL)", + "spec": "§3.2, §8.2.2 (ESSR NULL)", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "skip", - "detail": "affinidi-rust pack: unsupported \u2014 affinidi-tsp always carries the sender VID in the payload; NULL cannot be requested" + "detail": "affinidi-rust pack: unsupported — affinidi-tsp always carries the sender VID in the payload; NULL cannot be requested" }, { "suite": "interop", "case": "scs/hpke-base/payload-sender-present", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR present)", + "spec": "§3.2, §8.2.2 (ESSR present)", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -3326,7 +3341,7 @@ { "suite": "interop", "case": "scs/hpke-base/long-vid", - "spec": "\u00a79.1 VID 7AAB####", + "spec": "§9.1 VID 7AAB####", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -3339,7 +3354,7 @@ { "suite": "interop", "case": "scs/hpke-pq", - "spec": "\u00a78.2.3, \u00a79.5.2 (MLKEM768-X25519, ML-DSA-65)", + "spec": "§8.2.3, §9.5.2 (MLKEM768-X25519, ML-DSA-65)", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "skip", @@ -3348,7 +3363,7 @@ { "suite": "interop", "case": "ctl/hpke-base", - "spec": "\u00a79.3 XCTL", + "spec": "§9.3 XCTL", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -3361,7 +3376,7 @@ { "suite": "interop", "case": "pad/hpke-base", - "spec": "\u00a77.5, \u00a79.4.7 XPAD", + "spec": "§7.5, §9.4.7 XPAD", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -3374,7 +3389,7 @@ { "suite": "interop", "case": "pad/hpke-base/padded", - "spec": "\u00a77.5, \u00a79.4.7 XPAD with Padding_Field", + "spec": "§7.5, §9.4.7 XPAD with Padding_Field", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -3387,7 +3402,7 @@ { "suite": "interop", "case": "rfi/hpke-base/direct", - "spec": "\u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "§7.2.1, §7.2.2, §9.4.1", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -3400,7 +3415,7 @@ { "suite": "interop", "case": "rfi/hpke-base/reply-path", - "spec": "\u00a77.2.4, \u00a79.4.1 Reply_Path", + "spec": "§7.2.4, §9.4.1 Reply_Path", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -3413,7 +3428,7 @@ { "suite": "interop", "case": "rfi/hpke-base/referral", - "spec": "\u00a77.2.5, \u00a79.4.1 Referral_Field and Signature_new", + "spec": "§7.2.5, §9.4.1 Referral_Field and Signature_new", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -3426,7 +3441,7 @@ { "suite": "interop", "case": "rfi/sealed-box", - "spec": "\u00a77.2.1, \u00a78.3 (Blake2b-256 digest F)", + "spec": "§7.2.1, §8.3 (Blake2b-256 digest F)", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "skip", @@ -3435,7 +3450,7 @@ { "suite": "interop", "case": "rfa/hpke-base/echo-own-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2", + "spec": "§7.2.2, §9.4.2", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -3448,7 +3463,7 @@ { "suite": "interop", "case": "rfa/hpke-base/answers-receiver-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2 (cross-derived)", + "spec": "§7.2.2, §9.4.2 (cross-derived)", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -3461,7 +3476,7 @@ { "suite": "interop", "case": "rfd/hpke-base", - "spec": "\u00a77.3, \u00a79.4.5", + "spec": "§7.3, §9.4.5", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -3474,7 +3489,7 @@ { "suite": "interop", "case": "rfi/hpke-base/padded", - "spec": "\u00a77.2.1 (Padding_Field excluded from the SAID)", + "spec": "§7.2.1 (Padding_Field excluded from the SAID)", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -3487,7 +3502,7 @@ { "suite": "interop", "case": "rfi/hpke-pq", - "spec": "\u00a77.2.1, \u00a78.2.3", + "spec": "§7.2.1, §8.2.3", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "skip", @@ -3496,7 +3511,7 @@ { "suite": "interop", "case": "rfa/sealed-box", - "spec": "\u00a77.2.2, \u00a78.3 (Blake2b-256)", + "spec": "§7.2.2, §8.3 (Blake2b-256)", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "skip", @@ -3505,7 +3520,7 @@ { "suite": "interop", "case": "rfd/sealed-box", - "spec": "\u00a77.3, \u00a78.3 (Blake2b-256)", + "spec": "§7.3, §8.3 (Blake2b-256)", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "skip", @@ -3514,7 +3529,7 @@ { "suite": "interop", "case": "hop/nested", - "spec": "\u00a74, \u00a79.4.15", + "spec": "§4, §9.4.15", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -3529,7 +3544,7 @@ { "suite": "interop", "case": "hop/nested/padded", - "spec": "\u00a74, \u00a79.4.15 (Padding_Field before the inner message)", + "spec": "§4, §9.4.15 (Padding_Field before the inner message)", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -3542,7 +3557,7 @@ { "suite": "interop", "case": "hop/nested/signed-only-inner", - "spec": "\u00a74 (a signed-only inner message is permitted)", + "spec": "§4 (a signed-only inner message is permitted)", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "skip", @@ -3551,7 +3566,7 @@ { "suite": "interop", "case": "hop/routed-2-hops", - "spec": "\u00a75.3, \u00a79.4.16", + "spec": "§5.3, §9.4.16", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -3566,7 +3581,7 @@ { "suite": "interop", "case": "hop/routed-long-hop-list", - "spec": "\u00a79.4.16 hop list over 4095 quadlets (--J#####)", + "spec": "§9.4.16 hop list over 4095 quadlets (--J#####)", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -3579,7 +3594,7 @@ { "suite": "interop", "case": "rfi/hpke-base/long-reply-path", - "spec": "\u00a79.4.1 Reply_Path over 4095 quadlets (--J#####)", + "spec": "§9.4.1 Reply_Path over 4095 quadlets (--J#####)", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -3592,29 +3607,37 @@ { "suite": "interop", "case": "hop/routed-12-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "affinidi-rust", "receiver": "tsp-js", - "status": "fail", - "detail": "tsp-js refused to open affinidi-rust's message: [malformed] tsp: too many hops", - "cause": "tsp-js refuses affinidi-rust's hpke-base/hop: [malformed] tsp: too many hops", - "finding": "hop-list-limits" + "status": "pass", + "detail": "", + "unreported": [ + "payload.padding", + "payload.payloadSender", + "payload.padding", + "payload.payloadSender" + ] }, { "suite": "interop", "case": "hop/routed-17-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "affinidi-rust", "receiver": "tsp-js", - "status": "fail", - "detail": "affinidi-rust refused to pack: [malformed] invalid message: route has 17 hops, exceeds maximum of 16", - "cause": "affinidi-rust refuses to pack hpke-base/hop: [malformed] invalid message: route has 17 hops, exceeds maximum of 16", - "finding": "hop-list-limits" + "status": "pass", + "detail": "", + "unreported": [ + "payload.padding", + "payload.payloadSender", + "payload.padding", + "payload.payloadSender" + ] }, { "suite": "interop", "case": "scs/hpke-base/small", - "spec": "\u00a73.5, \u00a78.2, \u00a79.2.3", + "spec": "§3.5, §8.2, §9.2.3", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3623,7 +3646,7 @@ { "suite": "interop", "case": "scs/hpke-base/empty", - "spec": "\u00a79.2.3", + "spec": "§9.2.3", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3632,7 +3655,7 @@ { "suite": "interop", "case": "scs/hpke-base/2mib", - "spec": "\u00a79.1 long count codes (--E, --Z, 7AAF)", + "spec": "§9.1 long count codes (--E, --Z, 7AAF)", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3641,7 +3664,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-0", - "spec": "\u00a79.2.4", + "spec": "§9.2.4", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3650,7 +3673,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-1", - "spec": "\u00a79.2.4 lead pad 2 (6B)", + "spec": "§9.2.4 lead pad 2 (6B)", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3659,7 +3682,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-2", - "spec": "\u00a79.2.4 lead pad 1 (5B)", + "spec": "§9.2.4 lead pad 1 (5B)", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3668,7 +3691,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-3", - "spec": "\u00a79.2.4 lead pad 0 (4B)", + "spec": "§9.2.4 lead pad 0 (4B)", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3677,7 +3700,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12285", - "spec": "\u00a79.2.4 short max (4B__)", + "spec": "§9.2.4 short max (4B__)", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3686,7 +3709,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12286", - "spec": "\u00a79.2.4 first long (9AAB)", + "spec": "§9.2.4 first long (9AAB)", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3695,7 +3718,7 @@ { "suite": "interop", "case": "scs/signed-only", - "spec": "\u00a73.5, \u00a79.2", + "spec": "§3.5, §9.2", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3704,7 +3727,7 @@ { "suite": "interop", "case": "scs/sealed-box", - "spec": "\u00a78.3, \u00a79.2.8", + "spec": "§8.3, §9.2.8", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3713,16 +3736,16 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-null", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR NULL)", + "spec": "§3.2, §8.2.2 (ESSR NULL)", "sender": "affinidi-rust", "receiver": "go", "status": "skip", - "detail": "affinidi-rust pack: unsupported \u2014 affinidi-tsp always carries the sender VID in the payload; NULL cannot be requested" + "detail": "affinidi-rust pack: unsupported — affinidi-tsp always carries the sender VID in the payload; NULL cannot be requested" }, { "suite": "interop", "case": "scs/hpke-base/payload-sender-present", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR present)", + "spec": "§3.2, §8.2.2 (ESSR present)", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3731,7 +3754,7 @@ { "suite": "interop", "case": "scs/hpke-base/long-vid", - "spec": "\u00a79.1 VID 7AAB####", + "spec": "§9.1 VID 7AAB####", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3740,7 +3763,7 @@ { "suite": "interop", "case": "scs/hpke-pq", - "spec": "\u00a78.2.3, \u00a79.5.2 (MLKEM768-X25519, ML-DSA-65)", + "spec": "§8.2.3, §9.5.2 (MLKEM768-X25519, ML-DSA-65)", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3749,7 +3772,7 @@ { "suite": "interop", "case": "ctl/hpke-base", - "spec": "\u00a79.3 XCTL", + "spec": "§9.3 XCTL", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3758,7 +3781,7 @@ { "suite": "interop", "case": "pad/hpke-base", - "spec": "\u00a77.5, \u00a79.4.7 XPAD", + "spec": "§7.5, §9.4.7 XPAD", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3767,7 +3790,7 @@ { "suite": "interop", "case": "pad/hpke-base/padded", - "spec": "\u00a77.5, \u00a79.4.7 XPAD with Padding_Field", + "spec": "§7.5, §9.4.7 XPAD with Padding_Field", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3776,7 +3799,7 @@ { "suite": "interop", "case": "rfi/hpke-base/direct", - "spec": "\u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "§7.2.1, §7.2.2, §9.4.1", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3785,7 +3808,7 @@ { "suite": "interop", "case": "rfi/hpke-base/reply-path", - "spec": "\u00a77.2.4, \u00a79.4.1 Reply_Path", + "spec": "§7.2.4, §9.4.1 Reply_Path", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3794,7 +3817,7 @@ { "suite": "interop", "case": "rfi/hpke-base/referral", - "spec": "\u00a77.2.5, \u00a79.4.1 Referral_Field and Signature_new", + "spec": "§7.2.5, §9.4.1 Referral_Field and Signature_new", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3803,7 +3826,7 @@ { "suite": "interop", "case": "rfi/sealed-box", - "spec": "\u00a77.2.1, \u00a78.3 (Blake2b-256 digest F)", + "spec": "§7.2.1, §8.3 (Blake2b-256 digest F)", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3812,7 +3835,7 @@ { "suite": "interop", "case": "rfa/hpke-base/echo-own-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2", + "spec": "§7.2.2, §9.4.2", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3821,7 +3844,7 @@ { "suite": "interop", "case": "rfa/hpke-base/answers-receiver-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2 (cross-derived)", + "spec": "§7.2.2, §9.4.2 (cross-derived)", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3830,7 +3853,7 @@ { "suite": "interop", "case": "rfd/hpke-base", - "spec": "\u00a77.3, \u00a79.4.5", + "spec": "§7.3, §9.4.5", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3839,7 +3862,7 @@ { "suite": "interop", "case": "rfi/hpke-base/padded", - "spec": "\u00a77.2.1 (Padding_Field excluded from the SAID)", + "spec": "§7.2.1 (Padding_Field excluded from the SAID)", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3848,7 +3871,7 @@ { "suite": "interop", "case": "rfi/hpke-pq", - "spec": "\u00a77.2.1, \u00a78.2.3", + "spec": "§7.2.1, §8.2.3", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3857,7 +3880,7 @@ { "suite": "interop", "case": "rfa/sealed-box", - "spec": "\u00a77.2.2, \u00a78.3 (Blake2b-256)", + "spec": "§7.2.2, §8.3 (Blake2b-256)", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3866,7 +3889,7 @@ { "suite": "interop", "case": "rfd/sealed-box", - "spec": "\u00a77.3, \u00a78.3 (Blake2b-256)", + "spec": "§7.3, §8.3 (Blake2b-256)", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3875,7 +3898,7 @@ { "suite": "interop", "case": "hop/nested", - "spec": "\u00a74, \u00a79.4.15", + "spec": "§4, §9.4.15", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3884,7 +3907,7 @@ { "suite": "interop", "case": "hop/nested/padded", - "spec": "\u00a74, \u00a79.4.15 (Padding_Field before the inner message)", + "spec": "§4, §9.4.15 (Padding_Field before the inner message)", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3893,7 +3916,7 @@ { "suite": "interop", "case": "hop/nested/signed-only-inner", - "spec": "\u00a74 (a signed-only inner message is permitted)", + "spec": "§4 (a signed-only inner message is permitted)", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3902,7 +3925,7 @@ { "suite": "interop", "case": "hop/routed-2-hops", - "spec": "\u00a75.3, \u00a79.4.16", + "spec": "§5.3, §9.4.16", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3911,7 +3934,7 @@ { "suite": "interop", "case": "hop/routed-long-hop-list", - "spec": "\u00a79.4.16 hop list over 4095 quadlets (--J#####)", + "spec": "§9.4.16 hop list over 4095 quadlets (--J#####)", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3920,7 +3943,7 @@ { "suite": "interop", "case": "rfi/hpke-base/long-reply-path", - "spec": "\u00a79.4.1 Reply_Path over 4095 quadlets (--J#####)", + "spec": "§9.4.1 Reply_Path over 4095 quadlets (--J#####)", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3929,7 +3952,7 @@ { "suite": "interop", "case": "hop/routed-12-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -3938,18 +3961,16 @@ { "suite": "interop", "case": "hop/routed-17-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "affinidi-rust", "receiver": "go", - "status": "fail", - "detail": "affinidi-rust refused to pack: [malformed] invalid message: route has 17 hops, exceeds maximum of 16", - "cause": "affinidi-rust refuses to pack hpke-base/hop: [malformed] invalid message: route has 17 hops, exceeds maximum of 16", - "finding": "hop-list-limits" + "status": "pass", + "detail": "" }, { "suite": "interop", "case": "scs/hpke-base/small", - "spec": "\u00a73.5, \u00a78.2, \u00a79.2.3", + "spec": "§3.5, §8.2, §9.2.3", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -3958,7 +3979,7 @@ { "suite": "interop", "case": "scs/hpke-base/empty", - "spec": "\u00a79.2.3", + "spec": "§9.2.3", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -3967,7 +3988,7 @@ { "suite": "interop", "case": "scs/hpke-base/2mib", - "spec": "\u00a79.1 long count codes (--E, --Z, 7AAF)", + "spec": "§9.1 long count codes (--E, --Z, 7AAF)", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -3976,7 +3997,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-0", - "spec": "\u00a79.2.4", + "spec": "§9.2.4", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -3985,7 +4006,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-1", - "spec": "\u00a79.2.4 lead pad 2 (6B)", + "spec": "§9.2.4 lead pad 2 (6B)", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -3994,7 +4015,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-2", - "spec": "\u00a79.2.4 lead pad 1 (5B)", + "spec": "§9.2.4 lead pad 1 (5B)", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4003,7 +4024,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-3", - "spec": "\u00a79.2.4 lead pad 0 (4B)", + "spec": "§9.2.4 lead pad 0 (4B)", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4012,7 +4033,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12285", - "spec": "\u00a79.2.4 short max (4B__)", + "spec": "§9.2.4 short max (4B__)", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4021,7 +4042,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12286", - "spec": "\u00a79.2.4 first long (9AAB)", + "spec": "§9.2.4 first long (9AAB)", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4030,7 +4051,7 @@ { "suite": "interop", "case": "scs/signed-only", - "spec": "\u00a73.5, \u00a79.2", + "spec": "§3.5, §9.2", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4039,7 +4060,7 @@ { "suite": "interop", "case": "scs/sealed-box", - "spec": "\u00a78.3, \u00a79.2.8", + "spec": "§8.3, §9.2.8", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4048,16 +4069,16 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-null", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR NULL)", + "spec": "§3.2, §8.2.2 (ESSR NULL)", "sender": "affinidi-rust", "receiver": "dart", "status": "skip", - "detail": "affinidi-rust pack: unsupported \u2014 affinidi-tsp always carries the sender VID in the payload; NULL cannot be requested" + "detail": "affinidi-rust pack: unsupported — affinidi-tsp always carries the sender VID in the payload; NULL cannot be requested" }, { "suite": "interop", "case": "scs/hpke-base/payload-sender-present", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR present)", + "spec": "§3.2, §8.2.2 (ESSR present)", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4066,7 +4087,7 @@ { "suite": "interop", "case": "scs/hpke-base/long-vid", - "spec": "\u00a79.1 VID 7AAB####", + "spec": "§9.1 VID 7AAB####", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4075,7 +4096,7 @@ { "suite": "interop", "case": "scs/hpke-pq", - "spec": "\u00a78.2.3, \u00a79.5.2 (MLKEM768-X25519, ML-DSA-65)", + "spec": "§8.2.3, §9.5.2 (MLKEM768-X25519, ML-DSA-65)", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4084,7 +4105,7 @@ { "suite": "interop", "case": "ctl/hpke-base", - "spec": "\u00a79.3 XCTL", + "spec": "§9.3 XCTL", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4093,7 +4114,7 @@ { "suite": "interop", "case": "pad/hpke-base", - "spec": "\u00a77.5, \u00a79.4.7 XPAD", + "spec": "§7.5, §9.4.7 XPAD", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4102,7 +4123,7 @@ { "suite": "interop", "case": "pad/hpke-base/padded", - "spec": "\u00a77.5, \u00a79.4.7 XPAD with Padding_Field", + "spec": "§7.5, §9.4.7 XPAD with Padding_Field", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4111,7 +4132,7 @@ { "suite": "interop", "case": "rfi/hpke-base/direct", - "spec": "\u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "§7.2.1, §7.2.2, §9.4.1", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4120,7 +4141,7 @@ { "suite": "interop", "case": "rfi/hpke-base/reply-path", - "spec": "\u00a77.2.4, \u00a79.4.1 Reply_Path", + "spec": "§7.2.4, §9.4.1 Reply_Path", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4129,7 +4150,7 @@ { "suite": "interop", "case": "rfi/hpke-base/referral", - "spec": "\u00a77.2.5, \u00a79.4.1 Referral_Field and Signature_new", + "spec": "§7.2.5, §9.4.1 Referral_Field and Signature_new", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4138,7 +4159,7 @@ { "suite": "interop", "case": "rfi/sealed-box", - "spec": "\u00a77.2.1, \u00a78.3 (Blake2b-256 digest F)", + "spec": "§7.2.1, §8.3 (Blake2b-256 digest F)", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4147,7 +4168,7 @@ { "suite": "interop", "case": "rfa/hpke-base/echo-own-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2", + "spec": "§7.2.2, §9.4.2", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4156,7 +4177,7 @@ { "suite": "interop", "case": "rfa/hpke-base/answers-receiver-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2 (cross-derived)", + "spec": "§7.2.2, §9.4.2 (cross-derived)", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4165,7 +4186,7 @@ { "suite": "interop", "case": "rfd/hpke-base", - "spec": "\u00a77.3, \u00a79.4.5", + "spec": "§7.3, §9.4.5", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4174,7 +4195,7 @@ { "suite": "interop", "case": "rfi/hpke-base/padded", - "spec": "\u00a77.2.1 (Padding_Field excluded from the SAID)", + "spec": "§7.2.1 (Padding_Field excluded from the SAID)", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4183,7 +4204,7 @@ { "suite": "interop", "case": "rfi/hpke-pq", - "spec": "\u00a77.2.1, \u00a78.2.3", + "spec": "§7.2.1, §8.2.3", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4192,7 +4213,7 @@ { "suite": "interop", "case": "rfa/sealed-box", - "spec": "\u00a77.2.2, \u00a78.3 (Blake2b-256)", + "spec": "§7.2.2, §8.3 (Blake2b-256)", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4201,7 +4222,7 @@ { "suite": "interop", "case": "rfd/sealed-box", - "spec": "\u00a77.3, \u00a78.3 (Blake2b-256)", + "spec": "§7.3, §8.3 (Blake2b-256)", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4210,7 +4231,7 @@ { "suite": "interop", "case": "hop/nested", - "spec": "\u00a74, \u00a79.4.15", + "spec": "§4, §9.4.15", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4219,7 +4240,7 @@ { "suite": "interop", "case": "hop/nested/padded", - "spec": "\u00a74, \u00a79.4.15 (Padding_Field before the inner message)", + "spec": "§4, §9.4.15 (Padding_Field before the inner message)", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4228,7 +4249,7 @@ { "suite": "interop", "case": "hop/nested/signed-only-inner", - "spec": "\u00a74 (a signed-only inner message is permitted)", + "spec": "§4 (a signed-only inner message is permitted)", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4237,7 +4258,7 @@ { "suite": "interop", "case": "hop/routed-2-hops", - "spec": "\u00a75.3, \u00a79.4.16", + "spec": "§5.3, §9.4.16", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4246,7 +4267,7 @@ { "suite": "interop", "case": "hop/routed-long-hop-list", - "spec": "\u00a79.4.16 hop list over 4095 quadlets (--J#####)", + "spec": "§9.4.16 hop list over 4095 quadlets (--J#####)", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4255,7 +4276,7 @@ { "suite": "interop", "case": "rfi/hpke-base/long-reply-path", - "spec": "\u00a79.4.1 Reply_Path over 4095 quadlets (--J#####)", + "spec": "§9.4.1 Reply_Path over 4095 quadlets (--J#####)", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4264,7 +4285,7 @@ { "suite": "interop", "case": "hop/routed-12-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -4273,18 +4294,16 @@ { "suite": "interop", "case": "hop/routed-17-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "affinidi-rust", "receiver": "dart", - "status": "fail", - "detail": "affinidi-rust refused to pack: [malformed] invalid message: route has 17 hops, exceeds maximum of 16", - "cause": "affinidi-rust refuses to pack hpke-base/hop: [malformed] invalid message: route has 17 hops, exceeds maximum of 16", - "finding": "hop-list-limits" + "status": "pass", + "detail": "" }, { "suite": "interop", "case": "scs/hpke-base/small", - "spec": "\u00a73.5, \u00a78.2, \u00a79.2.3", + "spec": "§3.5, §8.2, §9.2.3", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4297,7 +4316,7 @@ { "suite": "interop", "case": "scs/hpke-base/empty", - "spec": "\u00a79.2.3", + "spec": "§9.2.3", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4310,7 +4329,7 @@ { "suite": "interop", "case": "scs/hpke-base/2mib", - "spec": "\u00a79.1 long count codes (--E, --Z, 7AAF)", + "spec": "§9.1 long count codes (--E, --Z, 7AAF)", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4323,7 +4342,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-0", - "spec": "\u00a79.2.4", + "spec": "§9.2.4", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4336,7 +4355,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-1", - "spec": "\u00a79.2.4 lead pad 2 (6B)", + "spec": "§9.2.4 lead pad 2 (6B)", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4349,7 +4368,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-2", - "spec": "\u00a79.2.4 lead pad 1 (5B)", + "spec": "§9.2.4 lead pad 1 (5B)", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4362,7 +4381,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-3", - "spec": "\u00a79.2.4 lead pad 0 (4B)", + "spec": "§9.2.4 lead pad 0 (4B)", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4375,7 +4394,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12285", - "spec": "\u00a79.2.4 short max (4B__)", + "spec": "§9.2.4 short max (4B__)", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4388,7 +4407,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12286", - "spec": "\u00a79.2.4 first long (9AAB)", + "spec": "§9.2.4 first long (9AAB)", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4401,7 +4420,7 @@ { "suite": "interop", "case": "scs/signed-only", - "spec": "\u00a73.5, \u00a79.2", + "spec": "§3.5, §9.2", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4414,7 +4433,7 @@ { "suite": "interop", "case": "scs/sealed-box", - "spec": "\u00a78.3, \u00a79.2.8", + "spec": "§8.3, §9.2.8", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4427,7 +4446,7 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-null", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR NULL)", + "spec": "§3.2, §8.2.2 (ESSR NULL)", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4440,16 +4459,16 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-present", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR present)", + "spec": "§3.2, §8.2.2 (ESSR present)", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "skip", - "detail": "reference-rust pack: unsupported \u2014 tsp_sdk chooses the ESSR sender field by scheme (NULL under HPKE-Base and signed-only)" + "detail": "reference-rust pack: unsupported — tsp_sdk chooses the ESSR sender field by scheme (NULL under HPKE-Base and signed-only)" }, { "suite": "interop", "case": "scs/hpke-base/long-vid", - "spec": "\u00a79.1 VID 7AAB####", + "spec": "§9.1 VID 7AAB####", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4462,7 +4481,7 @@ { "suite": "interop", "case": "scs/hpke-pq", - "spec": "\u00a78.2.3, \u00a79.5.2 (MLKEM768-X25519, ML-DSA-65)", + "spec": "§8.2.3, §9.5.2 (MLKEM768-X25519, ML-DSA-65)", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4475,7 +4494,7 @@ { "suite": "interop", "case": "ctl/hpke-base", - "spec": "\u00a79.3 XCTL", + "spec": "§9.3 XCTL", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4488,7 +4507,7 @@ { "suite": "interop", "case": "pad/hpke-base", - "spec": "\u00a77.5, \u00a79.4.7 XPAD", + "spec": "§7.5, §9.4.7 XPAD", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4501,7 +4520,7 @@ { "suite": "interop", "case": "pad/hpke-base/padded", - "spec": "\u00a77.5, \u00a79.4.7 XPAD with Padding_Field", + "spec": "§7.5, §9.4.7 XPAD with Padding_Field", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4514,7 +4533,7 @@ { "suite": "interop", "case": "rfi/hpke-base/direct", - "spec": "\u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "§7.2.1, §7.2.2, §9.4.1", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4527,7 +4546,7 @@ { "suite": "interop", "case": "rfi/hpke-base/reply-path", - "spec": "\u00a77.2.4, \u00a79.4.1 Reply_Path", + "spec": "§7.2.4, §9.4.1 Reply_Path", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4540,7 +4559,7 @@ { "suite": "interop", "case": "rfi/hpke-base/referral", - "spec": "\u00a77.2.5, \u00a79.4.1 Referral_Field and Signature_new", + "spec": "§7.2.5, §9.4.1 Referral_Field and Signature_new", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "skip", @@ -4549,7 +4568,7 @@ { "suite": "interop", "case": "rfi/sealed-box", - "spec": "\u00a77.2.1, \u00a78.3 (Blake2b-256 digest F)", + "spec": "§7.2.1, §8.3 (Blake2b-256 digest F)", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4562,7 +4581,7 @@ { "suite": "interop", "case": "rfa/hpke-base/echo-own-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2", + "spec": "§7.2.2, §9.4.2", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4575,7 +4594,7 @@ { "suite": "interop", "case": "rfa/hpke-base/answers-receiver-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2 (cross-derived)", + "spec": "§7.2.2, §9.4.2 (cross-derived)", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4588,7 +4607,7 @@ { "suite": "interop", "case": "rfd/hpke-base", - "spec": "\u00a77.3, \u00a79.4.5", + "spec": "§7.3, §9.4.5", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4601,16 +4620,16 @@ { "suite": "interop", "case": "rfi/hpke-base/padded", - "spec": "\u00a77.2.1 (Padding_Field excluded from the SAID)", + "spec": "§7.2.1 (Padding_Field excluded from the SAID)", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "skip", - "detail": "reference-rust pack: unsupported \u2014 padding is reachable only for scs/ctl/pad (SecureStore SendOptions)" + "detail": "reference-rust pack: unsupported — padding is reachable only for scs/ctl/pad (SecureStore SendOptions)" }, { "suite": "interop", "case": "rfi/hpke-pq", - "spec": "\u00a77.2.1, \u00a78.2.3", + "spec": "§7.2.1, §8.2.3", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4623,7 +4642,7 @@ { "suite": "interop", "case": "rfa/sealed-box", - "spec": "\u00a77.2.2, \u00a78.3 (Blake2b-256)", + "spec": "§7.2.2, §8.3 (Blake2b-256)", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4636,7 +4655,7 @@ { "suite": "interop", "case": "rfd/sealed-box", - "spec": "\u00a77.3, \u00a78.3 (Blake2b-256)", + "spec": "§7.3, §8.3 (Blake2b-256)", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4649,7 +4668,7 @@ { "suite": "interop", "case": "hop/nested", - "spec": "\u00a74, \u00a79.4.15", + "spec": "§4, §9.4.15", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4664,16 +4683,16 @@ { "suite": "interop", "case": "hop/nested/padded", - "spec": "\u00a74, \u00a79.4.15 (Padding_Field before the inner message)", + "spec": "§4, §9.4.15 (Padding_Field before the inner message)", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "skip", - "detail": "reference-rust pack: unsupported \u2014 padding is reachable only for scs/ctl/pad (SecureStore SendOptions)" + "detail": "reference-rust pack: unsupported — padding is reachable only for scs/ctl/pad (SecureStore SendOptions)" }, { "suite": "interop", "case": "hop/nested/signed-only-inner", - "spec": "\u00a74 (a signed-only inner message is permitted)", + "spec": "§4 (a signed-only inner message is permitted)", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4688,7 +4707,7 @@ { "suite": "interop", "case": "hop/routed-2-hops", - "spec": "\u00a75.3, \u00a79.4.16", + "spec": "§5.3, §9.4.16", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4703,7 +4722,7 @@ { "suite": "interop", "case": "hop/routed-long-hop-list", - "spec": "\u00a79.4.16 hop list over 4095 quadlets (--J#####)", + "spec": "§9.4.16 hop list over 4095 quadlets (--J#####)", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4716,7 +4735,7 @@ { "suite": "interop", "case": "rfi/hpke-base/long-reply-path", - "spec": "\u00a79.4.1 Reply_Path over 4095 quadlets (--J#####)", + "spec": "§9.4.1 Reply_Path over 4095 quadlets (--J#####)", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4729,7 +4748,7 @@ { "suite": "interop", "case": "hop/routed-12-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -4744,18 +4763,22 @@ { "suite": "interop", "case": "hop/routed-17-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "reference-rust", "receiver": "affinidi-rust", - "status": "fail", - "detail": "affinidi-rust refused to open reference-rust's message: [malformed] invalid message: hop list too long", - "cause": "affinidi-rust refuses reference-rust's hpke-base/hop: [malformed] invalid message: hop list too long", - "finding": "hop-list-limits" + "status": "pass", + "detail": "", + "unreported": [ + "payload.padding", + "payload.payloadSender", + "payload.padding", + "payload.payloadSender" + ] }, { "suite": "interop", "case": "scs/hpke-base/small", - "spec": "\u00a73.5, \u00a78.2, \u00a79.2.3", + "spec": "§3.5, §8.2, §9.2.3", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -4769,7 +4792,7 @@ { "suite": "interop", "case": "scs/hpke-base/empty", - "spec": "\u00a79.2.3", + "spec": "§9.2.3", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -4783,7 +4806,7 @@ { "suite": "interop", "case": "scs/hpke-base/2mib", - "spec": "\u00a79.1 long count codes (--E, --Z, 7AAF)", + "spec": "§9.1 long count codes (--E, --Z, 7AAF)", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -4797,7 +4820,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-0", - "spec": "\u00a79.2.4", + "spec": "§9.2.4", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -4811,7 +4834,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-1", - "spec": "\u00a79.2.4 lead pad 2 (6B)", + "spec": "§9.2.4 lead pad 2 (6B)", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -4825,7 +4848,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-2", - "spec": "\u00a79.2.4 lead pad 1 (5B)", + "spec": "§9.2.4 lead pad 1 (5B)", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -4839,7 +4862,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-3", - "spec": "\u00a79.2.4 lead pad 0 (4B)", + "spec": "§9.2.4 lead pad 0 (4B)", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -4853,7 +4876,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12285", - "spec": "\u00a79.2.4 short max (4B__)", + "spec": "§9.2.4 short max (4B__)", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -4867,7 +4890,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12286", - "spec": "\u00a79.2.4 first long (9AAB)", + "spec": "§9.2.4 first long (9AAB)", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -4881,7 +4904,7 @@ { "suite": "interop", "case": "scs/signed-only", - "spec": "\u00a73.5, \u00a79.2", + "spec": "§3.5, §9.2", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -4895,7 +4918,7 @@ { "suite": "interop", "case": "scs/sealed-box", - "spec": "\u00a78.3, \u00a79.2.8", + "spec": "§8.3, §9.2.8", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -4909,7 +4932,7 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-null", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR NULL)", + "spec": "§3.2, §8.2.2 (ESSR NULL)", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -4923,16 +4946,16 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-present", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR present)", + "spec": "§3.2, §8.2.2 (ESSR present)", "sender": "reference-rust", "receiver": "reference-rust", "status": "skip", - "detail": "reference-rust pack: unsupported \u2014 tsp_sdk chooses the ESSR sender field by scheme (NULL under HPKE-Base and signed-only)" + "detail": "reference-rust pack: unsupported — tsp_sdk chooses the ESSR sender field by scheme (NULL under HPKE-Base and signed-only)" }, { "suite": "interop", "case": "scs/hpke-base/long-vid", - "spec": "\u00a79.1 VID 7AAB####", + "spec": "§9.1 VID 7AAB####", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -4946,7 +4969,7 @@ { "suite": "interop", "case": "scs/hpke-pq", - "spec": "\u00a78.2.3, \u00a79.5.2 (MLKEM768-X25519, ML-DSA-65)", + "spec": "§8.2.3, §9.5.2 (MLKEM768-X25519, ML-DSA-65)", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -4960,7 +4983,7 @@ { "suite": "interop", "case": "ctl/hpke-base", - "spec": "\u00a79.3 XCTL", + "spec": "§9.3 XCTL", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -4974,7 +4997,7 @@ { "suite": "interop", "case": "pad/hpke-base", - "spec": "\u00a77.5, \u00a79.4.7 XPAD", + "spec": "§7.5, §9.4.7 XPAD", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -4988,7 +5011,7 @@ { "suite": "interop", "case": "pad/hpke-base/padded", - "spec": "\u00a77.5, \u00a79.4.7 XPAD with Padding_Field", + "spec": "§7.5, §9.4.7 XPAD with Padding_Field", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -5002,7 +5025,7 @@ { "suite": "interop", "case": "rfi/hpke-base/direct", - "spec": "\u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "§7.2.1, §7.2.2, §9.4.1", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -5017,7 +5040,7 @@ { "suite": "interop", "case": "rfi/hpke-base/reply-path", - "spec": "\u00a77.2.4, \u00a79.4.1 Reply_Path", + "spec": "§7.2.4, §9.4.1 Reply_Path", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -5032,7 +5055,7 @@ { "suite": "interop", "case": "rfi/hpke-base/referral", - "spec": "\u00a77.2.5, \u00a79.4.1 Referral_Field and Signature_new", + "spec": "§7.2.5, §9.4.1 Referral_Field and Signature_new", "sender": "reference-rust", "receiver": "reference-rust", "status": "skip", @@ -5041,7 +5064,7 @@ { "suite": "interop", "case": "rfi/sealed-box", - "spec": "\u00a77.2.1, \u00a78.3 (Blake2b-256 digest F)", + "spec": "§7.2.1, §8.3 (Blake2b-256 digest F)", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -5056,7 +5079,7 @@ { "suite": "interop", "case": "rfa/hpke-base/echo-own-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2", + "spec": "§7.2.2, §9.4.2", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -5070,7 +5093,7 @@ { "suite": "interop", "case": "rfa/hpke-base/answers-receiver-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2 (cross-derived)", + "spec": "§7.2.2, §9.4.2 (cross-derived)", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -5084,7 +5107,7 @@ { "suite": "interop", "case": "rfd/hpke-base", - "spec": "\u00a77.3, \u00a79.4.5", + "spec": "§7.3, §9.4.5", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -5098,16 +5121,16 @@ { "suite": "interop", "case": "rfi/hpke-base/padded", - "spec": "\u00a77.2.1 (Padding_Field excluded from the SAID)", + "spec": "§7.2.1 (Padding_Field excluded from the SAID)", "sender": "reference-rust", "receiver": "reference-rust", "status": "skip", - "detail": "reference-rust pack: unsupported \u2014 padding is reachable only for scs/ctl/pad (SecureStore SendOptions)" + "detail": "reference-rust pack: unsupported — padding is reachable only for scs/ctl/pad (SecureStore SendOptions)" }, { "suite": "interop", "case": "rfi/hpke-pq", - "spec": "\u00a77.2.1, \u00a78.2.3", + "spec": "§7.2.1, §8.2.3", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -5122,7 +5145,7 @@ { "suite": "interop", "case": "rfa/sealed-box", - "spec": "\u00a77.2.2, \u00a78.3 (Blake2b-256)", + "spec": "§7.2.2, §8.3 (Blake2b-256)", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -5136,7 +5159,7 @@ { "suite": "interop", "case": "rfd/sealed-box", - "spec": "\u00a77.3, \u00a78.3 (Blake2b-256)", + "spec": "§7.3, §8.3 (Blake2b-256)", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -5150,7 +5173,7 @@ { "suite": "interop", "case": "hop/nested", - "spec": "\u00a74, \u00a79.4.15", + "spec": "§4, §9.4.15", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -5167,16 +5190,16 @@ { "suite": "interop", "case": "hop/nested/padded", - "spec": "\u00a74, \u00a79.4.15 (Padding_Field before the inner message)", + "spec": "§4, §9.4.15 (Padding_Field before the inner message)", "sender": "reference-rust", "receiver": "reference-rust", "status": "skip", - "detail": "reference-rust pack: unsupported \u2014 padding is reachable only for scs/ctl/pad (SecureStore SendOptions)" + "detail": "reference-rust pack: unsupported — padding is reachable only for scs/ctl/pad (SecureStore SendOptions)" }, { "suite": "interop", "case": "hop/nested/signed-only-inner", - "spec": "\u00a74 (a signed-only inner message is permitted)", + "spec": "§4 (a signed-only inner message is permitted)", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -5193,7 +5216,7 @@ { "suite": "interop", "case": "hop/routed-2-hops", - "spec": "\u00a75.3, \u00a79.4.16", + "spec": "§5.3, §9.4.16", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -5210,7 +5233,7 @@ { "suite": "interop", "case": "hop/routed-long-hop-list", - "spec": "\u00a79.4.16 hop list over 4095 quadlets (--J#####)", + "spec": "§9.4.16 hop list over 4095 quadlets (--J#####)", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -5224,7 +5247,7 @@ { "suite": "interop", "case": "rfi/hpke-base/long-reply-path", - "spec": "\u00a79.4.1 Reply_Path over 4095 quadlets (--J#####)", + "spec": "§9.4.1 Reply_Path over 4095 quadlets (--J#####)", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -5239,7 +5262,7 @@ { "suite": "interop", "case": "hop/routed-12-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -5256,7 +5279,7 @@ { "suite": "interop", "case": "hop/routed-17-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -5273,7 +5296,7 @@ { "suite": "interop", "case": "scs/hpke-base/small", - "spec": "\u00a73.5, \u00a78.2, \u00a79.2.3", + "spec": "§3.5, §8.2, §9.2.3", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -5286,7 +5309,7 @@ { "suite": "interop", "case": "scs/hpke-base/empty", - "spec": "\u00a79.2.3", + "spec": "§9.2.3", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -5299,7 +5322,7 @@ { "suite": "interop", "case": "scs/hpke-base/2mib", - "spec": "\u00a79.1 long count codes (--E, --Z, 7AAF)", + "spec": "§9.1 long count codes (--E, --Z, 7AAF)", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -5312,7 +5335,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-0", - "spec": "\u00a79.2.4", + "spec": "§9.2.4", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -5325,7 +5348,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-1", - "spec": "\u00a79.2.4 lead pad 2 (6B)", + "spec": "§9.2.4 lead pad 2 (6B)", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -5338,7 +5361,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-2", - "spec": "\u00a79.2.4 lead pad 1 (5B)", + "spec": "§9.2.4 lead pad 1 (5B)", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -5351,7 +5374,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-3", - "spec": "\u00a79.2.4 lead pad 0 (4B)", + "spec": "§9.2.4 lead pad 0 (4B)", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -5364,7 +5387,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12285", - "spec": "\u00a79.2.4 short max (4B__)", + "spec": "§9.2.4 short max (4B__)", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -5377,7 +5400,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12286", - "spec": "\u00a79.2.4 first long (9AAB)", + "spec": "§9.2.4 first long (9AAB)", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -5390,7 +5413,7 @@ { "suite": "interop", "case": "scs/signed-only", - "spec": "\u00a73.5, \u00a79.2", + "spec": "§3.5, §9.2", "sender": "reference-rust", "receiver": "tsp-js", "status": "skip", @@ -5399,7 +5422,7 @@ { "suite": "interop", "case": "scs/sealed-box", - "spec": "\u00a78.3, \u00a79.2.8", + "spec": "§8.3, §9.2.8", "sender": "reference-rust", "receiver": "tsp-js", "status": "skip", @@ -5408,7 +5431,7 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-null", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR NULL)", + "spec": "§3.2, §8.2.2 (ESSR NULL)", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -5421,16 +5444,16 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-present", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR present)", + "spec": "§3.2, §8.2.2 (ESSR present)", "sender": "reference-rust", "receiver": "tsp-js", "status": "skip", - "detail": "reference-rust pack: unsupported \u2014 tsp_sdk chooses the ESSR sender field by scheme (NULL under HPKE-Base and signed-only)" + "detail": "reference-rust pack: unsupported — tsp_sdk chooses the ESSR sender field by scheme (NULL under HPKE-Base and signed-only)" }, { "suite": "interop", "case": "scs/hpke-base/long-vid", - "spec": "\u00a79.1 VID 7AAB####", + "spec": "§9.1 VID 7AAB####", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -5443,7 +5466,7 @@ { "suite": "interop", "case": "scs/hpke-pq", - "spec": "\u00a78.2.3, \u00a79.5.2 (MLKEM768-X25519, ML-DSA-65)", + "spec": "§8.2.3, §9.5.2 (MLKEM768-X25519, ML-DSA-65)", "sender": "reference-rust", "receiver": "tsp-js", "status": "skip", @@ -5452,7 +5475,7 @@ { "suite": "interop", "case": "ctl/hpke-base", - "spec": "\u00a79.3 XCTL", + "spec": "§9.3 XCTL", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -5465,7 +5488,7 @@ { "suite": "interop", "case": "pad/hpke-base", - "spec": "\u00a77.5, \u00a79.4.7 XPAD", + "spec": "§7.5, §9.4.7 XPAD", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -5478,7 +5501,7 @@ { "suite": "interop", "case": "pad/hpke-base/padded", - "spec": "\u00a77.5, \u00a79.4.7 XPAD with Padding_Field", + "spec": "§7.5, §9.4.7 XPAD with Padding_Field", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -5491,7 +5514,7 @@ { "suite": "interop", "case": "rfi/hpke-base/direct", - "spec": "\u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "§7.2.1, §7.2.2, §9.4.1", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -5504,7 +5527,7 @@ { "suite": "interop", "case": "rfi/hpke-base/reply-path", - "spec": "\u00a77.2.4, \u00a79.4.1 Reply_Path", + "spec": "§7.2.4, §9.4.1 Reply_Path", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -5517,7 +5540,7 @@ { "suite": "interop", "case": "rfi/hpke-base/referral", - "spec": "\u00a77.2.5, \u00a79.4.1 Referral_Field and Signature_new", + "spec": "§7.2.5, §9.4.1 Referral_Field and Signature_new", "sender": "reference-rust", "receiver": "tsp-js", "status": "skip", @@ -5526,7 +5549,7 @@ { "suite": "interop", "case": "rfi/sealed-box", - "spec": "\u00a77.2.1, \u00a78.3 (Blake2b-256 digest F)", + "spec": "§7.2.1, §8.3 (Blake2b-256 digest F)", "sender": "reference-rust", "receiver": "tsp-js", "status": "skip", @@ -5535,7 +5558,7 @@ { "suite": "interop", "case": "rfa/hpke-base/echo-own-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2", + "spec": "§7.2.2, §9.4.2", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -5548,7 +5571,7 @@ { "suite": "interop", "case": "rfa/hpke-base/answers-receiver-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2 (cross-derived)", + "spec": "§7.2.2, §9.4.2 (cross-derived)", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -5561,7 +5584,7 @@ { "suite": "interop", "case": "rfd/hpke-base", - "spec": "\u00a77.3, \u00a79.4.5", + "spec": "§7.3, §9.4.5", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -5574,16 +5597,16 @@ { "suite": "interop", "case": "rfi/hpke-base/padded", - "spec": "\u00a77.2.1 (Padding_Field excluded from the SAID)", + "spec": "§7.2.1 (Padding_Field excluded from the SAID)", "sender": "reference-rust", "receiver": "tsp-js", "status": "skip", - "detail": "reference-rust pack: unsupported \u2014 padding is reachable only for scs/ctl/pad (SecureStore SendOptions)" + "detail": "reference-rust pack: unsupported — padding is reachable only for scs/ctl/pad (SecureStore SendOptions)" }, { "suite": "interop", "case": "rfi/hpke-pq", - "spec": "\u00a77.2.1, \u00a78.2.3", + "spec": "§7.2.1, §8.2.3", "sender": "reference-rust", "receiver": "tsp-js", "status": "skip", @@ -5592,7 +5615,7 @@ { "suite": "interop", "case": "rfa/sealed-box", - "spec": "\u00a77.2.2, \u00a78.3 (Blake2b-256)", + "spec": "§7.2.2, §8.3 (Blake2b-256)", "sender": "reference-rust", "receiver": "tsp-js", "status": "skip", @@ -5601,7 +5624,7 @@ { "suite": "interop", "case": "rfd/sealed-box", - "spec": "\u00a77.3, \u00a78.3 (Blake2b-256)", + "spec": "§7.3, §8.3 (Blake2b-256)", "sender": "reference-rust", "receiver": "tsp-js", "status": "skip", @@ -5610,7 +5633,7 @@ { "suite": "interop", "case": "hop/nested", - "spec": "\u00a74, \u00a79.4.15", + "spec": "§4, §9.4.15", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -5625,16 +5648,16 @@ { "suite": "interop", "case": "hop/nested/padded", - "spec": "\u00a74, \u00a79.4.15 (Padding_Field before the inner message)", + "spec": "§4, §9.4.15 (Padding_Field before the inner message)", "sender": "reference-rust", "receiver": "tsp-js", "status": "skip", - "detail": "reference-rust pack: unsupported \u2014 padding is reachable only for scs/ctl/pad (SecureStore SendOptions)" + "detail": "reference-rust pack: unsupported — padding is reachable only for scs/ctl/pad (SecureStore SendOptions)" }, { "suite": "interop", "case": "hop/nested/signed-only-inner", - "spec": "\u00a74 (a signed-only inner message is permitted)", + "spec": "§4 (a signed-only inner message is permitted)", "sender": "reference-rust", "receiver": "tsp-js", "status": "skip", @@ -5643,7 +5666,7 @@ { "suite": "interop", "case": "hop/routed-2-hops", - "spec": "\u00a75.3, \u00a79.4.16", + "spec": "§5.3, §9.4.16", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -5658,7 +5681,7 @@ { "suite": "interop", "case": "hop/routed-long-hop-list", - "spec": "\u00a79.4.16 hop list over 4095 quadlets (--J#####)", + "spec": "§9.4.16 hop list over 4095 quadlets (--J#####)", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -5671,7 +5694,7 @@ { "suite": "interop", "case": "rfi/hpke-base/long-reply-path", - "spec": "\u00a79.4.1 Reply_Path over 4095 quadlets (--J#####)", + "spec": "§9.4.1 Reply_Path over 4095 quadlets (--J#####)", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -5684,29 +5707,37 @@ { "suite": "interop", "case": "hop/routed-12-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "reference-rust", "receiver": "tsp-js", - "status": "fail", - "detail": "tsp-js refused to open reference-rust's message: [malformed] tsp: too many hops", - "cause": "tsp-js refuses reference-rust's hpke-base/hop: [malformed] tsp: too many hops", - "finding": "hop-list-limits" + "status": "pass", + "detail": "", + "unreported": [ + "payload.padding", + "payload.payloadSender", + "payload.padding", + "payload.payloadSender" + ] }, { "suite": "interop", "case": "hop/routed-17-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "reference-rust", "receiver": "tsp-js", - "status": "fail", - "detail": "tsp-js refused to open reference-rust's message: [malformed] tsp: too many hops", - "cause": "tsp-js refuses reference-rust's hpke-base/hop: [malformed] tsp: too many hops", - "finding": "hop-list-limits" + "status": "pass", + "detail": "", + "unreported": [ + "payload.padding", + "payload.payloadSender", + "payload.padding", + "payload.payloadSender" + ] }, { "suite": "interop", "case": "scs/hpke-base/small", - "spec": "\u00a73.5, \u00a78.2, \u00a79.2.3", + "spec": "§3.5, §8.2, §9.2.3", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -5715,7 +5746,7 @@ { "suite": "interop", "case": "scs/hpke-base/empty", - "spec": "\u00a79.2.3", + "spec": "§9.2.3", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -5724,7 +5755,7 @@ { "suite": "interop", "case": "scs/hpke-base/2mib", - "spec": "\u00a79.1 long count codes (--E, --Z, 7AAF)", + "spec": "§9.1 long count codes (--E, --Z, 7AAF)", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -5733,7 +5764,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-0", - "spec": "\u00a79.2.4", + "spec": "§9.2.4", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -5742,7 +5773,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-1", - "spec": "\u00a79.2.4 lead pad 2 (6B)", + "spec": "§9.2.4 lead pad 2 (6B)", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -5751,7 +5782,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-2", - "spec": "\u00a79.2.4 lead pad 1 (5B)", + "spec": "§9.2.4 lead pad 1 (5B)", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -5760,7 +5791,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-3", - "spec": "\u00a79.2.4 lead pad 0 (4B)", + "spec": "§9.2.4 lead pad 0 (4B)", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -5769,7 +5800,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12285", - "spec": "\u00a79.2.4 short max (4B__)", + "spec": "§9.2.4 short max (4B__)", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -5778,7 +5809,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12286", - "spec": "\u00a79.2.4 first long (9AAB)", + "spec": "§9.2.4 first long (9AAB)", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -5787,7 +5818,7 @@ { "suite": "interop", "case": "scs/signed-only", - "spec": "\u00a73.5, \u00a79.2", + "spec": "§3.5, §9.2", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -5796,7 +5827,7 @@ { "suite": "interop", "case": "scs/sealed-box", - "spec": "\u00a78.3, \u00a79.2.8", + "spec": "§8.3, §9.2.8", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -5805,7 +5836,7 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-null", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR NULL)", + "spec": "§3.2, §8.2.2 (ESSR NULL)", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -5814,16 +5845,16 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-present", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR present)", + "spec": "§3.2, §8.2.2 (ESSR present)", "sender": "reference-rust", "receiver": "go", "status": "skip", - "detail": "reference-rust pack: unsupported \u2014 tsp_sdk chooses the ESSR sender field by scheme (NULL under HPKE-Base and signed-only)" + "detail": "reference-rust pack: unsupported — tsp_sdk chooses the ESSR sender field by scheme (NULL under HPKE-Base and signed-only)" }, { "suite": "interop", "case": "scs/hpke-base/long-vid", - "spec": "\u00a79.1 VID 7AAB####", + "spec": "§9.1 VID 7AAB####", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -5832,7 +5863,7 @@ { "suite": "interop", "case": "scs/hpke-pq", - "spec": "\u00a78.2.3, \u00a79.5.2 (MLKEM768-X25519, ML-DSA-65)", + "spec": "§8.2.3, §9.5.2 (MLKEM768-X25519, ML-DSA-65)", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -5841,7 +5872,7 @@ { "suite": "interop", "case": "ctl/hpke-base", - "spec": "\u00a79.3 XCTL", + "spec": "§9.3 XCTL", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -5850,7 +5881,7 @@ { "suite": "interop", "case": "pad/hpke-base", - "spec": "\u00a77.5, \u00a79.4.7 XPAD", + "spec": "§7.5, §9.4.7 XPAD", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -5859,7 +5890,7 @@ { "suite": "interop", "case": "pad/hpke-base/padded", - "spec": "\u00a77.5, \u00a79.4.7 XPAD with Padding_Field", + "spec": "§7.5, §9.4.7 XPAD with Padding_Field", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -5868,7 +5899,7 @@ { "suite": "interop", "case": "rfi/hpke-base/direct", - "spec": "\u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "§7.2.1, §7.2.2, §9.4.1", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -5877,7 +5908,7 @@ { "suite": "interop", "case": "rfi/hpke-base/reply-path", - "spec": "\u00a77.2.4, \u00a79.4.1 Reply_Path", + "spec": "§7.2.4, §9.4.1 Reply_Path", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -5886,7 +5917,7 @@ { "suite": "interop", "case": "rfi/hpke-base/referral", - "spec": "\u00a77.2.5, \u00a79.4.1 Referral_Field and Signature_new", + "spec": "§7.2.5, §9.4.1 Referral_Field and Signature_new", "sender": "reference-rust", "receiver": "go", "status": "skip", @@ -5895,7 +5926,7 @@ { "suite": "interop", "case": "rfi/sealed-box", - "spec": "\u00a77.2.1, \u00a78.3 (Blake2b-256 digest F)", + "spec": "§7.2.1, §8.3 (Blake2b-256 digest F)", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -5904,7 +5935,7 @@ { "suite": "interop", "case": "rfa/hpke-base/echo-own-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2", + "spec": "§7.2.2, §9.4.2", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -5913,7 +5944,7 @@ { "suite": "interop", "case": "rfa/hpke-base/answers-receiver-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2 (cross-derived)", + "spec": "§7.2.2, §9.4.2 (cross-derived)", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -5922,7 +5953,7 @@ { "suite": "interop", "case": "rfd/hpke-base", - "spec": "\u00a77.3, \u00a79.4.5", + "spec": "§7.3, §9.4.5", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -5931,16 +5962,16 @@ { "suite": "interop", "case": "rfi/hpke-base/padded", - "spec": "\u00a77.2.1 (Padding_Field excluded from the SAID)", + "spec": "§7.2.1 (Padding_Field excluded from the SAID)", "sender": "reference-rust", "receiver": "go", "status": "skip", - "detail": "reference-rust pack: unsupported \u2014 padding is reachable only for scs/ctl/pad (SecureStore SendOptions)" + "detail": "reference-rust pack: unsupported — padding is reachable only for scs/ctl/pad (SecureStore SendOptions)" }, { "suite": "interop", "case": "rfi/hpke-pq", - "spec": "\u00a77.2.1, \u00a78.2.3", + "spec": "§7.2.1, §8.2.3", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -5949,7 +5980,7 @@ { "suite": "interop", "case": "rfa/sealed-box", - "spec": "\u00a77.2.2, \u00a78.3 (Blake2b-256)", + "spec": "§7.2.2, §8.3 (Blake2b-256)", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -5958,7 +5989,7 @@ { "suite": "interop", "case": "rfd/sealed-box", - "spec": "\u00a77.3, \u00a78.3 (Blake2b-256)", + "spec": "§7.3, §8.3 (Blake2b-256)", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -5967,7 +5998,7 @@ { "suite": "interop", "case": "hop/nested", - "spec": "\u00a74, \u00a79.4.15", + "spec": "§4, §9.4.15", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -5976,16 +6007,16 @@ { "suite": "interop", "case": "hop/nested/padded", - "spec": "\u00a74, \u00a79.4.15 (Padding_Field before the inner message)", + "spec": "§4, §9.4.15 (Padding_Field before the inner message)", "sender": "reference-rust", "receiver": "go", "status": "skip", - "detail": "reference-rust pack: unsupported \u2014 padding is reachable only for scs/ctl/pad (SecureStore SendOptions)" + "detail": "reference-rust pack: unsupported — padding is reachable only for scs/ctl/pad (SecureStore SendOptions)" }, { "suite": "interop", "case": "hop/nested/signed-only-inner", - "spec": "\u00a74 (a signed-only inner message is permitted)", + "spec": "§4 (a signed-only inner message is permitted)", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -5994,7 +6025,7 @@ { "suite": "interop", "case": "hop/routed-2-hops", - "spec": "\u00a75.3, \u00a79.4.16", + "spec": "§5.3, §9.4.16", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -6003,7 +6034,7 @@ { "suite": "interop", "case": "hop/routed-long-hop-list", - "spec": "\u00a79.4.16 hop list over 4095 quadlets (--J#####)", + "spec": "§9.4.16 hop list over 4095 quadlets (--J#####)", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -6012,7 +6043,7 @@ { "suite": "interop", "case": "rfi/hpke-base/long-reply-path", - "spec": "\u00a79.4.1 Reply_Path over 4095 quadlets (--J#####)", + "spec": "§9.4.1 Reply_Path over 4095 quadlets (--J#####)", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -6021,7 +6052,7 @@ { "suite": "interop", "case": "hop/routed-12-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -6030,7 +6061,7 @@ { "suite": "interop", "case": "hop/routed-17-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -6039,7 +6070,7 @@ { "suite": "interop", "case": "scs/hpke-base/small", - "spec": "\u00a73.5, \u00a78.2, \u00a79.2.3", + "spec": "§3.5, §8.2, §9.2.3", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6048,7 +6079,7 @@ { "suite": "interop", "case": "scs/hpke-base/empty", - "spec": "\u00a79.2.3", + "spec": "§9.2.3", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6057,7 +6088,7 @@ { "suite": "interop", "case": "scs/hpke-base/2mib", - "spec": "\u00a79.1 long count codes (--E, --Z, 7AAF)", + "spec": "§9.1 long count codes (--E, --Z, 7AAF)", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6066,7 +6097,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-0", - "spec": "\u00a79.2.4", + "spec": "§9.2.4", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6075,7 +6106,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-1", - "spec": "\u00a79.2.4 lead pad 2 (6B)", + "spec": "§9.2.4 lead pad 2 (6B)", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6084,7 +6115,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-2", - "spec": "\u00a79.2.4 lead pad 1 (5B)", + "spec": "§9.2.4 lead pad 1 (5B)", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6093,7 +6124,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-3", - "spec": "\u00a79.2.4 lead pad 0 (4B)", + "spec": "§9.2.4 lead pad 0 (4B)", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6102,7 +6133,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12285", - "spec": "\u00a79.2.4 short max (4B__)", + "spec": "§9.2.4 short max (4B__)", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6111,7 +6142,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12286", - "spec": "\u00a79.2.4 first long (9AAB)", + "spec": "§9.2.4 first long (9AAB)", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6120,7 +6151,7 @@ { "suite": "interop", "case": "scs/signed-only", - "spec": "\u00a73.5, \u00a79.2", + "spec": "§3.5, §9.2", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6129,7 +6160,7 @@ { "suite": "interop", "case": "scs/sealed-box", - "spec": "\u00a78.3, \u00a79.2.8", + "spec": "§8.3, §9.2.8", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6138,7 +6169,7 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-null", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR NULL)", + "spec": "§3.2, §8.2.2 (ESSR NULL)", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6147,16 +6178,16 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-present", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR present)", + "spec": "§3.2, §8.2.2 (ESSR present)", "sender": "reference-rust", "receiver": "dart", "status": "skip", - "detail": "reference-rust pack: unsupported \u2014 tsp_sdk chooses the ESSR sender field by scheme (NULL under HPKE-Base and signed-only)" + "detail": "reference-rust pack: unsupported — tsp_sdk chooses the ESSR sender field by scheme (NULL under HPKE-Base and signed-only)" }, { "suite": "interop", "case": "scs/hpke-base/long-vid", - "spec": "\u00a79.1 VID 7AAB####", + "spec": "§9.1 VID 7AAB####", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6165,7 +6196,7 @@ { "suite": "interop", "case": "scs/hpke-pq", - "spec": "\u00a78.2.3, \u00a79.5.2 (MLKEM768-X25519, ML-DSA-65)", + "spec": "§8.2.3, §9.5.2 (MLKEM768-X25519, ML-DSA-65)", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6174,7 +6205,7 @@ { "suite": "interop", "case": "ctl/hpke-base", - "spec": "\u00a79.3 XCTL", + "spec": "§9.3 XCTL", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6183,7 +6214,7 @@ { "suite": "interop", "case": "pad/hpke-base", - "spec": "\u00a77.5, \u00a79.4.7 XPAD", + "spec": "§7.5, §9.4.7 XPAD", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6192,7 +6223,7 @@ { "suite": "interop", "case": "pad/hpke-base/padded", - "spec": "\u00a77.5, \u00a79.4.7 XPAD with Padding_Field", + "spec": "§7.5, §9.4.7 XPAD with Padding_Field", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6201,7 +6232,7 @@ { "suite": "interop", "case": "rfi/hpke-base/direct", - "spec": "\u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "§7.2.1, §7.2.2, §9.4.1", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6210,7 +6241,7 @@ { "suite": "interop", "case": "rfi/hpke-base/reply-path", - "spec": "\u00a77.2.4, \u00a79.4.1 Reply_Path", + "spec": "§7.2.4, §9.4.1 Reply_Path", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6219,7 +6250,7 @@ { "suite": "interop", "case": "rfi/hpke-base/referral", - "spec": "\u00a77.2.5, \u00a79.4.1 Referral_Field and Signature_new", + "spec": "§7.2.5, §9.4.1 Referral_Field and Signature_new", "sender": "reference-rust", "receiver": "dart", "status": "skip", @@ -6228,7 +6259,7 @@ { "suite": "interop", "case": "rfi/sealed-box", - "spec": "\u00a77.2.1, \u00a78.3 (Blake2b-256 digest F)", + "spec": "§7.2.1, §8.3 (Blake2b-256 digest F)", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6237,7 +6268,7 @@ { "suite": "interop", "case": "rfa/hpke-base/echo-own-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2", + "spec": "§7.2.2, §9.4.2", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6246,7 +6277,7 @@ { "suite": "interop", "case": "rfa/hpke-base/answers-receiver-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2 (cross-derived)", + "spec": "§7.2.2, §9.4.2 (cross-derived)", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6255,7 +6286,7 @@ { "suite": "interop", "case": "rfd/hpke-base", - "spec": "\u00a77.3, \u00a79.4.5", + "spec": "§7.3, §9.4.5", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6264,16 +6295,16 @@ { "suite": "interop", "case": "rfi/hpke-base/padded", - "spec": "\u00a77.2.1 (Padding_Field excluded from the SAID)", + "spec": "§7.2.1 (Padding_Field excluded from the SAID)", "sender": "reference-rust", "receiver": "dart", "status": "skip", - "detail": "reference-rust pack: unsupported \u2014 padding is reachable only for scs/ctl/pad (SecureStore SendOptions)" + "detail": "reference-rust pack: unsupported — padding is reachable only for scs/ctl/pad (SecureStore SendOptions)" }, { "suite": "interop", "case": "rfi/hpke-pq", - "spec": "\u00a77.2.1, \u00a78.2.3", + "spec": "§7.2.1, §8.2.3", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6282,7 +6313,7 @@ { "suite": "interop", "case": "rfa/sealed-box", - "spec": "\u00a77.2.2, \u00a78.3 (Blake2b-256)", + "spec": "§7.2.2, §8.3 (Blake2b-256)", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6291,7 +6322,7 @@ { "suite": "interop", "case": "rfd/sealed-box", - "spec": "\u00a77.3, \u00a78.3 (Blake2b-256)", + "spec": "§7.3, §8.3 (Blake2b-256)", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6300,7 +6331,7 @@ { "suite": "interop", "case": "hop/nested", - "spec": "\u00a74, \u00a79.4.15", + "spec": "§4, §9.4.15", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6309,16 +6340,16 @@ { "suite": "interop", "case": "hop/nested/padded", - "spec": "\u00a74, \u00a79.4.15 (Padding_Field before the inner message)", + "spec": "§4, §9.4.15 (Padding_Field before the inner message)", "sender": "reference-rust", "receiver": "dart", "status": "skip", - "detail": "reference-rust pack: unsupported \u2014 padding is reachable only for scs/ctl/pad (SecureStore SendOptions)" + "detail": "reference-rust pack: unsupported — padding is reachable only for scs/ctl/pad (SecureStore SendOptions)" }, { "suite": "interop", "case": "hop/nested/signed-only-inner", - "spec": "\u00a74 (a signed-only inner message is permitted)", + "spec": "§4 (a signed-only inner message is permitted)", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6327,7 +6358,7 @@ { "suite": "interop", "case": "hop/routed-2-hops", - "spec": "\u00a75.3, \u00a79.4.16", + "spec": "§5.3, §9.4.16", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6336,7 +6367,7 @@ { "suite": "interop", "case": "hop/routed-long-hop-list", - "spec": "\u00a79.4.16 hop list over 4095 quadlets (--J#####)", + "spec": "§9.4.16 hop list over 4095 quadlets (--J#####)", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6345,7 +6376,7 @@ { "suite": "interop", "case": "rfi/hpke-base/long-reply-path", - "spec": "\u00a79.4.1 Reply_Path over 4095 quadlets (--J#####)", + "spec": "§9.4.1 Reply_Path over 4095 quadlets (--J#####)", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6354,7 +6385,7 @@ { "suite": "interop", "case": "hop/routed-12-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6363,7 +6394,7 @@ { "suite": "interop", "case": "hop/routed-17-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -6372,7 +6403,7 @@ { "suite": "interop", "case": "scs/hpke-base/small", - "spec": "\u00a73.5, \u00a78.2, \u00a79.2.3", + "spec": "§3.5, §8.2, §9.2.3", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", @@ -6385,7 +6416,7 @@ { "suite": "interop", "case": "scs/hpke-base/empty", - "spec": "\u00a79.2.3", + "spec": "§9.2.3", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", @@ -6398,7 +6429,7 @@ { "suite": "interop", "case": "scs/hpke-base/2mib", - "spec": "\u00a79.1 long count codes (--E, --Z, 7AAF)", + "spec": "§9.1 long count codes (--E, --Z, 7AAF)", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", @@ -6411,7 +6442,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-0", - "spec": "\u00a79.2.4", + "spec": "§9.2.4", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", @@ -6424,7 +6455,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-1", - "spec": "\u00a79.2.4 lead pad 2 (6B)", + "spec": "§9.2.4 lead pad 2 (6B)", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "skip", @@ -6433,7 +6464,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-2", - "spec": "\u00a79.2.4 lead pad 1 (5B)", + "spec": "§9.2.4 lead pad 1 (5B)", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "skip", @@ -6442,7 +6473,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-3", - "spec": "\u00a79.2.4 lead pad 0 (4B)", + "spec": "§9.2.4 lead pad 0 (4B)", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "skip", @@ -6451,7 +6482,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12285", - "spec": "\u00a79.2.4 short max (4B__)", + "spec": "§9.2.4 short max (4B__)", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "skip", @@ -6460,7 +6491,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12286", - "spec": "\u00a79.2.4 first long (9AAB)", + "spec": "§9.2.4 first long (9AAB)", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "skip", @@ -6469,7 +6500,7 @@ { "suite": "interop", "case": "scs/signed-only", - "spec": "\u00a73.5, \u00a79.2", + "spec": "§3.5, §9.2", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "skip", @@ -6478,7 +6509,7 @@ { "suite": "interop", "case": "scs/sealed-box", - "spec": "\u00a78.3, \u00a79.2.8", + "spec": "§8.3, §9.2.8", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "skip", @@ -6487,16 +6518,16 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-null", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR NULL)", + "spec": "§3.2, §8.2.2 (ESSR NULL)", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "skip", - "detail": "tsp-js pack: unsupported \u2014 tsp-js always writes the sender VID in the ESSR field" + "detail": "tsp-js pack: unsupported — tsp-js always writes the sender VID in the ESSR field" }, { "suite": "interop", "case": "scs/hpke-base/payload-sender-present", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR present)", + "spec": "§3.2, §8.2.2 (ESSR present)", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", @@ -6509,7 +6540,7 @@ { "suite": "interop", "case": "scs/hpke-base/long-vid", - "spec": "\u00a79.1 VID 7AAB####", + "spec": "§9.1 VID 7AAB####", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", @@ -6522,7 +6553,7 @@ { "suite": "interop", "case": "scs/hpke-pq", - "spec": "\u00a78.2.3, \u00a79.5.2 (MLKEM768-X25519, ML-DSA-65)", + "spec": "§8.2.3, §9.5.2 (MLKEM768-X25519, ML-DSA-65)", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "skip", @@ -6531,7 +6562,7 @@ { "suite": "interop", "case": "ctl/hpke-base", - "spec": "\u00a79.3 XCTL", + "spec": "§9.3 XCTL", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "skip", @@ -6540,7 +6571,7 @@ { "suite": "interop", "case": "pad/hpke-base", - "spec": "\u00a77.5, \u00a79.4.7 XPAD", + "spec": "§7.5, §9.4.7 XPAD", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "skip", @@ -6549,7 +6580,7 @@ { "suite": "interop", "case": "pad/hpke-base/padded", - "spec": "\u00a77.5, \u00a79.4.7 XPAD with Padding_Field", + "spec": "§7.5, §9.4.7 XPAD with Padding_Field", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "skip", @@ -6558,7 +6589,7 @@ { "suite": "interop", "case": "rfi/hpke-base/direct", - "spec": "\u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "§7.2.1, §7.2.2, §9.4.1", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", @@ -6571,7 +6602,7 @@ { "suite": "interop", "case": "rfi/hpke-base/reply-path", - "spec": "\u00a77.2.4, \u00a79.4.1 Reply_Path", + "spec": "§7.2.4, §9.4.1 Reply_Path", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", @@ -6584,7 +6615,7 @@ { "suite": "interop", "case": "rfi/hpke-base/referral", - "spec": "\u00a77.2.5, \u00a79.4.1 Referral_Field and Signature_new", + "spec": "§7.2.5, §9.4.1 Referral_Field and Signature_new", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "skip", @@ -6593,7 +6624,7 @@ { "suite": "interop", "case": "rfi/sealed-box", - "spec": "\u00a77.2.1, \u00a78.3 (Blake2b-256 digest F)", + "spec": "§7.2.1, §8.3 (Blake2b-256 digest F)", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "skip", @@ -6602,7 +6633,7 @@ { "suite": "interop", "case": "rfa/hpke-base/echo-own-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2", + "spec": "§7.2.2, §9.4.2", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", @@ -6615,7 +6646,7 @@ { "suite": "interop", "case": "rfa/hpke-base/answers-receiver-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2 (cross-derived)", + "spec": "§7.2.2, §9.4.2 (cross-derived)", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", @@ -6628,7 +6659,7 @@ { "suite": "interop", "case": "rfd/hpke-base", - "spec": "\u00a77.3, \u00a79.4.5", + "spec": "§7.3, §9.4.5", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", @@ -6641,7 +6672,7 @@ { "suite": "interop", "case": "rfi/hpke-base/padded", - "spec": "\u00a77.2.1 (Padding_Field excluded from the SAID)", + "spec": "§7.2.1 (Padding_Field excluded from the SAID)", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "skip", @@ -6650,7 +6681,7 @@ { "suite": "interop", "case": "rfi/hpke-pq", - "spec": "\u00a77.2.1, \u00a78.2.3", + "spec": "§7.2.1, §8.2.3", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "skip", @@ -6659,7 +6690,7 @@ { "suite": "interop", "case": "rfa/sealed-box", - "spec": "\u00a77.2.2, \u00a78.3 (Blake2b-256)", + "spec": "§7.2.2, §8.3 (Blake2b-256)", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "skip", @@ -6668,7 +6699,7 @@ { "suite": "interop", "case": "rfd/sealed-box", - "spec": "\u00a77.3, \u00a78.3 (Blake2b-256)", + "spec": "§7.3, §8.3 (Blake2b-256)", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "skip", @@ -6677,7 +6708,7 @@ { "suite": "interop", "case": "hop/nested", - "spec": "\u00a74, \u00a79.4.15", + "spec": "§4, §9.4.15", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", @@ -6692,7 +6723,7 @@ { "suite": "interop", "case": "hop/nested/padded", - "spec": "\u00a74, \u00a79.4.15 (Padding_Field before the inner message)", + "spec": "§4, §9.4.15 (Padding_Field before the inner message)", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "skip", @@ -6701,7 +6732,7 @@ { "suite": "interop", "case": "hop/nested/signed-only-inner", - "spec": "\u00a74 (a signed-only inner message is permitted)", + "spec": "§4 (a signed-only inner message is permitted)", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "skip", @@ -6710,7 +6741,7 @@ { "suite": "interop", "case": "hop/routed-2-hops", - "spec": "\u00a75.3, \u00a79.4.16", + "spec": "§5.3, §9.4.16", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", @@ -6725,7 +6756,7 @@ { "suite": "interop", "case": "hop/routed-long-hop-list", - "spec": "\u00a79.4.16 hop list over 4095 quadlets (--J#####)", + "spec": "§9.4.16 hop list over 4095 quadlets (--J#####)", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", @@ -6738,7 +6769,7 @@ { "suite": "interop", "case": "rfi/hpke-base/long-reply-path", - "spec": "\u00a79.4.1 Reply_Path over 4095 quadlets (--J#####)", + "spec": "§9.4.1 Reply_Path over 4095 quadlets (--J#####)", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", @@ -6751,29 +6782,37 @@ { "suite": "interop", "case": "hop/routed-12-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "tsp-js", "receiver": "affinidi-rust", - "status": "fail", - "detail": "tsp-js refused to pack: [malformed] tsp: route has 12 hops, exceeds max 10", - "cause": "tsp-js refuses to pack hpke-base/hop: [malformed] tsp: route has 12 hops, exceeds max 10", - "finding": "hop-list-limits" + "status": "pass", + "detail": "", + "unreported": [ + "payload.padding", + "payload.payloadSender", + "payload.padding", + "payload.payloadSender" + ] }, { "suite": "interop", "case": "hop/routed-17-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "tsp-js", "receiver": "affinidi-rust", - "status": "fail", - "detail": "tsp-js refused to pack: [malformed] tsp: route has 17 hops, exceeds max 10", - "cause": "tsp-js refuses to pack hpke-base/hop: [malformed] tsp: route has 17 hops, exceeds max 10", - "finding": "hop-list-limits" + "status": "pass", + "detail": "", + "unreported": [ + "payload.padding", + "payload.payloadSender", + "payload.padding", + "payload.payloadSender" + ] }, { "suite": "interop", "case": "scs/hpke-base/small", - "spec": "\u00a73.5, \u00a78.2, \u00a79.2.3", + "spec": "§3.5, §8.2, §9.2.3", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", @@ -6787,7 +6826,7 @@ { "suite": "interop", "case": "scs/hpke-base/empty", - "spec": "\u00a79.2.3", + "spec": "§9.2.3", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", @@ -6801,7 +6840,7 @@ { "suite": "interop", "case": "scs/hpke-base/2mib", - "spec": "\u00a79.1 long count codes (--E, --Z, 7AAF)", + "spec": "§9.1 long count codes (--E, --Z, 7AAF)", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", @@ -6815,7 +6854,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-0", - "spec": "\u00a79.2.4", + "spec": "§9.2.4", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", @@ -6829,7 +6868,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-1", - "spec": "\u00a79.2.4 lead pad 2 (6B)", + "spec": "§9.2.4 lead pad 2 (6B)", "sender": "tsp-js", "receiver": "reference-rust", "status": "skip", @@ -6838,7 +6877,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-2", - "spec": "\u00a79.2.4 lead pad 1 (5B)", + "spec": "§9.2.4 lead pad 1 (5B)", "sender": "tsp-js", "receiver": "reference-rust", "status": "skip", @@ -6847,7 +6886,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-3", - "spec": "\u00a79.2.4 lead pad 0 (4B)", + "spec": "§9.2.4 lead pad 0 (4B)", "sender": "tsp-js", "receiver": "reference-rust", "status": "skip", @@ -6856,7 +6895,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12285", - "spec": "\u00a79.2.4 short max (4B__)", + "spec": "§9.2.4 short max (4B__)", "sender": "tsp-js", "receiver": "reference-rust", "status": "skip", @@ -6865,7 +6904,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12286", - "spec": "\u00a79.2.4 first long (9AAB)", + "spec": "§9.2.4 first long (9AAB)", "sender": "tsp-js", "receiver": "reference-rust", "status": "skip", @@ -6874,7 +6913,7 @@ { "suite": "interop", "case": "scs/signed-only", - "spec": "\u00a73.5, \u00a79.2", + "spec": "§3.5, §9.2", "sender": "tsp-js", "receiver": "reference-rust", "status": "skip", @@ -6883,7 +6922,7 @@ { "suite": "interop", "case": "scs/sealed-box", - "spec": "\u00a78.3, \u00a79.2.8", + "spec": "§8.3, §9.2.8", "sender": "tsp-js", "receiver": "reference-rust", "status": "skip", @@ -6892,16 +6931,16 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-null", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR NULL)", + "spec": "§3.2, §8.2.2 (ESSR NULL)", "sender": "tsp-js", "receiver": "reference-rust", "status": "skip", - "detail": "tsp-js pack: unsupported \u2014 tsp-js always writes the sender VID in the ESSR field" + "detail": "tsp-js pack: unsupported — tsp-js always writes the sender VID in the ESSR field" }, { "suite": "interop", "case": "scs/hpke-base/payload-sender-present", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR present)", + "spec": "§3.2, §8.2.2 (ESSR present)", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", @@ -6915,7 +6954,7 @@ { "suite": "interop", "case": "scs/hpke-base/long-vid", - "spec": "\u00a79.1 VID 7AAB####", + "spec": "§9.1 VID 7AAB####", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", @@ -6929,7 +6968,7 @@ { "suite": "interop", "case": "scs/hpke-pq", - "spec": "\u00a78.2.3, \u00a79.5.2 (MLKEM768-X25519, ML-DSA-65)", + "spec": "§8.2.3, §9.5.2 (MLKEM768-X25519, ML-DSA-65)", "sender": "tsp-js", "receiver": "reference-rust", "status": "skip", @@ -6938,7 +6977,7 @@ { "suite": "interop", "case": "ctl/hpke-base", - "spec": "\u00a79.3 XCTL", + "spec": "§9.3 XCTL", "sender": "tsp-js", "receiver": "reference-rust", "status": "skip", @@ -6947,7 +6986,7 @@ { "suite": "interop", "case": "pad/hpke-base", - "spec": "\u00a77.5, \u00a79.4.7 XPAD", + "spec": "§7.5, §9.4.7 XPAD", "sender": "tsp-js", "receiver": "reference-rust", "status": "skip", @@ -6956,7 +6995,7 @@ { "suite": "interop", "case": "pad/hpke-base/padded", - "spec": "\u00a77.5, \u00a79.4.7 XPAD with Padding_Field", + "spec": "§7.5, §9.4.7 XPAD with Padding_Field", "sender": "tsp-js", "receiver": "reference-rust", "status": "skip", @@ -6965,7 +7004,7 @@ { "suite": "interop", "case": "rfi/hpke-base/direct", - "spec": "\u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "§7.2.1, §7.2.2, §9.4.1", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", @@ -6980,7 +7019,7 @@ { "suite": "interop", "case": "rfi/hpke-base/reply-path", - "spec": "\u00a77.2.4, \u00a79.4.1 Reply_Path", + "spec": "§7.2.4, §9.4.1 Reply_Path", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", @@ -6995,7 +7034,7 @@ { "suite": "interop", "case": "rfi/hpke-base/referral", - "spec": "\u00a77.2.5, \u00a79.4.1 Referral_Field and Signature_new", + "spec": "§7.2.5, §9.4.1 Referral_Field and Signature_new", "sender": "tsp-js", "receiver": "reference-rust", "status": "skip", @@ -7004,7 +7043,7 @@ { "suite": "interop", "case": "rfi/sealed-box", - "spec": "\u00a77.2.1, \u00a78.3 (Blake2b-256 digest F)", + "spec": "§7.2.1, §8.3 (Blake2b-256 digest F)", "sender": "tsp-js", "receiver": "reference-rust", "status": "skip", @@ -7013,7 +7052,7 @@ { "suite": "interop", "case": "rfa/hpke-base/echo-own-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2", + "spec": "§7.2.2, §9.4.2", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", @@ -7027,7 +7066,7 @@ { "suite": "interop", "case": "rfa/hpke-base/answers-receiver-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2 (cross-derived)", + "spec": "§7.2.2, §9.4.2 (cross-derived)", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", @@ -7041,7 +7080,7 @@ { "suite": "interop", "case": "rfd/hpke-base", - "spec": "\u00a77.3, \u00a79.4.5", + "spec": "§7.3, §9.4.5", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", @@ -7055,7 +7094,7 @@ { "suite": "interop", "case": "rfi/hpke-base/padded", - "spec": "\u00a77.2.1 (Padding_Field excluded from the SAID)", + "spec": "§7.2.1 (Padding_Field excluded from the SAID)", "sender": "tsp-js", "receiver": "reference-rust", "status": "skip", @@ -7064,7 +7103,7 @@ { "suite": "interop", "case": "rfi/hpke-pq", - "spec": "\u00a77.2.1, \u00a78.2.3", + "spec": "§7.2.1, §8.2.3", "sender": "tsp-js", "receiver": "reference-rust", "status": "skip", @@ -7073,7 +7112,7 @@ { "suite": "interop", "case": "rfa/sealed-box", - "spec": "\u00a77.2.2, \u00a78.3 (Blake2b-256)", + "spec": "§7.2.2, §8.3 (Blake2b-256)", "sender": "tsp-js", "receiver": "reference-rust", "status": "skip", @@ -7082,7 +7121,7 @@ { "suite": "interop", "case": "rfd/sealed-box", - "spec": "\u00a77.3, \u00a78.3 (Blake2b-256)", + "spec": "§7.3, §8.3 (Blake2b-256)", "sender": "tsp-js", "receiver": "reference-rust", "status": "skip", @@ -7091,7 +7130,7 @@ { "suite": "interop", "case": "hop/nested", - "spec": "\u00a74, \u00a79.4.15", + "spec": "§4, §9.4.15", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", @@ -7108,7 +7147,7 @@ { "suite": "interop", "case": "hop/nested/padded", - "spec": "\u00a74, \u00a79.4.15 (Padding_Field before the inner message)", + "spec": "§4, §9.4.15 (Padding_Field before the inner message)", "sender": "tsp-js", "receiver": "reference-rust", "status": "skip", @@ -7117,7 +7156,7 @@ { "suite": "interop", "case": "hop/nested/signed-only-inner", - "spec": "\u00a74 (a signed-only inner message is permitted)", + "spec": "§4 (a signed-only inner message is permitted)", "sender": "tsp-js", "receiver": "reference-rust", "status": "skip", @@ -7126,7 +7165,7 @@ { "suite": "interop", "case": "hop/routed-2-hops", - "spec": "\u00a75.3, \u00a79.4.16", + "spec": "§5.3, §9.4.16", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", @@ -7143,7 +7182,7 @@ { "suite": "interop", "case": "hop/routed-long-hop-list", - "spec": "\u00a79.4.16 hop list over 4095 quadlets (--J#####)", + "spec": "§9.4.16 hop list over 4095 quadlets (--J#####)", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", @@ -7157,7 +7196,7 @@ { "suite": "interop", "case": "rfi/hpke-base/long-reply-path", - "spec": "\u00a79.4.1 Reply_Path over 4095 quadlets (--J#####)", + "spec": "§9.4.1 Reply_Path over 4095 quadlets (--J#####)", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", @@ -7172,29 +7211,41 @@ { "suite": "interop", "case": "hop/routed-12-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "tsp-js", "receiver": "reference-rust", - "status": "fail", - "detail": "tsp-js refused to pack: [malformed] tsp: route has 12 hops, exceeds max 10", - "cause": "tsp-js refuses to pack hpke-base/hop: [malformed] tsp: route has 12 hops, exceeds max 10", - "finding": "hop-list-limits" + "status": "pass", + "detail": "", + "unreported": [ + "version", + "payload.padding", + "payload.payloadSender", + "version", + "payload.padding", + "payload.payloadSender" + ] }, { "suite": "interop", "case": "hop/routed-17-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "tsp-js", "receiver": "reference-rust", - "status": "fail", - "detail": "tsp-js refused to pack: [malformed] tsp: route has 17 hops, exceeds max 10", - "cause": "tsp-js refuses to pack hpke-base/hop: [malformed] tsp: route has 17 hops, exceeds max 10", - "finding": "hop-list-limits" + "status": "pass", + "detail": "", + "unreported": [ + "version", + "payload.padding", + "payload.payloadSender", + "version", + "payload.padding", + "payload.payloadSender" + ] }, { "suite": "interop", "case": "scs/hpke-base/small", - "spec": "\u00a73.5, \u00a78.2, \u00a79.2.3", + "spec": "§3.5, §8.2, §9.2.3", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", @@ -7207,7 +7258,7 @@ { "suite": "interop", "case": "scs/hpke-base/empty", - "spec": "\u00a79.2.3", + "spec": "§9.2.3", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", @@ -7220,7 +7271,7 @@ { "suite": "interop", "case": "scs/hpke-base/2mib", - "spec": "\u00a79.1 long count codes (--E, --Z, 7AAF)", + "spec": "§9.1 long count codes (--E, --Z, 7AAF)", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", @@ -7233,7 +7284,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-0", - "spec": "\u00a79.2.4", + "spec": "§9.2.4", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", @@ -7246,7 +7297,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-1", - "spec": "\u00a79.2.4 lead pad 2 (6B)", + "spec": "§9.2.4 lead pad 2 (6B)", "sender": "tsp-js", "receiver": "tsp-js", "status": "skip", @@ -7255,7 +7306,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-2", - "spec": "\u00a79.2.4 lead pad 1 (5B)", + "spec": "§9.2.4 lead pad 1 (5B)", "sender": "tsp-js", "receiver": "tsp-js", "status": "skip", @@ -7264,7 +7315,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-3", - "spec": "\u00a79.2.4 lead pad 0 (4B)", + "spec": "§9.2.4 lead pad 0 (4B)", "sender": "tsp-js", "receiver": "tsp-js", "status": "skip", @@ -7273,7 +7324,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12285", - "spec": "\u00a79.2.4 short max (4B__)", + "spec": "§9.2.4 short max (4B__)", "sender": "tsp-js", "receiver": "tsp-js", "status": "skip", @@ -7282,7 +7333,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12286", - "spec": "\u00a79.2.4 first long (9AAB)", + "spec": "§9.2.4 first long (9AAB)", "sender": "tsp-js", "receiver": "tsp-js", "status": "skip", @@ -7291,7 +7342,7 @@ { "suite": "interop", "case": "scs/signed-only", - "spec": "\u00a73.5, \u00a79.2", + "spec": "§3.5, §9.2", "sender": "tsp-js", "receiver": "tsp-js", "status": "skip", @@ -7300,7 +7351,7 @@ { "suite": "interop", "case": "scs/sealed-box", - "spec": "\u00a78.3, \u00a79.2.8", + "spec": "§8.3, §9.2.8", "sender": "tsp-js", "receiver": "tsp-js", "status": "skip", @@ -7309,16 +7360,16 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-null", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR NULL)", + "spec": "§3.2, §8.2.2 (ESSR NULL)", "sender": "tsp-js", "receiver": "tsp-js", "status": "skip", - "detail": "tsp-js pack: unsupported \u2014 tsp-js always writes the sender VID in the ESSR field" + "detail": "tsp-js pack: unsupported — tsp-js always writes the sender VID in the ESSR field" }, { "suite": "interop", "case": "scs/hpke-base/payload-sender-present", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR present)", + "spec": "§3.2, §8.2.2 (ESSR present)", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", @@ -7331,7 +7382,7 @@ { "suite": "interop", "case": "scs/hpke-base/long-vid", - "spec": "\u00a79.1 VID 7AAB####", + "spec": "§9.1 VID 7AAB####", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", @@ -7344,7 +7395,7 @@ { "suite": "interop", "case": "scs/hpke-pq", - "spec": "\u00a78.2.3, \u00a79.5.2 (MLKEM768-X25519, ML-DSA-65)", + "spec": "§8.2.3, §9.5.2 (MLKEM768-X25519, ML-DSA-65)", "sender": "tsp-js", "receiver": "tsp-js", "status": "skip", @@ -7353,7 +7404,7 @@ { "suite": "interop", "case": "ctl/hpke-base", - "spec": "\u00a79.3 XCTL", + "spec": "§9.3 XCTL", "sender": "tsp-js", "receiver": "tsp-js", "status": "skip", @@ -7362,7 +7413,7 @@ { "suite": "interop", "case": "pad/hpke-base", - "spec": "\u00a77.5, \u00a79.4.7 XPAD", + "spec": "§7.5, §9.4.7 XPAD", "sender": "tsp-js", "receiver": "tsp-js", "status": "skip", @@ -7371,7 +7422,7 @@ { "suite": "interop", "case": "pad/hpke-base/padded", - "spec": "\u00a77.5, \u00a79.4.7 XPAD with Padding_Field", + "spec": "§7.5, §9.4.7 XPAD with Padding_Field", "sender": "tsp-js", "receiver": "tsp-js", "status": "skip", @@ -7380,7 +7431,7 @@ { "suite": "interop", "case": "rfi/hpke-base/direct", - "spec": "\u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "§7.2.1, §7.2.2, §9.4.1", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", @@ -7393,7 +7444,7 @@ { "suite": "interop", "case": "rfi/hpke-base/reply-path", - "spec": "\u00a77.2.4, \u00a79.4.1 Reply_Path", + "spec": "§7.2.4, §9.4.1 Reply_Path", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", @@ -7406,7 +7457,7 @@ { "suite": "interop", "case": "rfi/hpke-base/referral", - "spec": "\u00a77.2.5, \u00a79.4.1 Referral_Field and Signature_new", + "spec": "§7.2.5, §9.4.1 Referral_Field and Signature_new", "sender": "tsp-js", "receiver": "tsp-js", "status": "skip", @@ -7415,7 +7466,7 @@ { "suite": "interop", "case": "rfi/sealed-box", - "spec": "\u00a77.2.1, \u00a78.3 (Blake2b-256 digest F)", + "spec": "§7.2.1, §8.3 (Blake2b-256 digest F)", "sender": "tsp-js", "receiver": "tsp-js", "status": "skip", @@ -7424,7 +7475,7 @@ { "suite": "interop", "case": "rfa/hpke-base/echo-own-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2", + "spec": "§7.2.2, §9.4.2", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", @@ -7437,7 +7488,7 @@ { "suite": "interop", "case": "rfa/hpke-base/answers-receiver-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2 (cross-derived)", + "spec": "§7.2.2, §9.4.2 (cross-derived)", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", @@ -7450,7 +7501,7 @@ { "suite": "interop", "case": "rfd/hpke-base", - "spec": "\u00a77.3, \u00a79.4.5", + "spec": "§7.3, §9.4.5", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", @@ -7463,7 +7514,7 @@ { "suite": "interop", "case": "rfi/hpke-base/padded", - "spec": "\u00a77.2.1 (Padding_Field excluded from the SAID)", + "spec": "§7.2.1 (Padding_Field excluded from the SAID)", "sender": "tsp-js", "receiver": "tsp-js", "status": "skip", @@ -7472,7 +7523,7 @@ { "suite": "interop", "case": "rfi/hpke-pq", - "spec": "\u00a77.2.1, \u00a78.2.3", + "spec": "§7.2.1, §8.2.3", "sender": "tsp-js", "receiver": "tsp-js", "status": "skip", @@ -7481,7 +7532,7 @@ { "suite": "interop", "case": "rfa/sealed-box", - "spec": "\u00a77.2.2, \u00a78.3 (Blake2b-256)", + "spec": "§7.2.2, §8.3 (Blake2b-256)", "sender": "tsp-js", "receiver": "tsp-js", "status": "skip", @@ -7490,7 +7541,7 @@ { "suite": "interop", "case": "rfd/sealed-box", - "spec": "\u00a77.3, \u00a78.3 (Blake2b-256)", + "spec": "§7.3, §8.3 (Blake2b-256)", "sender": "tsp-js", "receiver": "tsp-js", "status": "skip", @@ -7499,7 +7550,7 @@ { "suite": "interop", "case": "hop/nested", - "spec": "\u00a74, \u00a79.4.15", + "spec": "§4, §9.4.15", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", @@ -7514,7 +7565,7 @@ { "suite": "interop", "case": "hop/nested/padded", - "spec": "\u00a74, \u00a79.4.15 (Padding_Field before the inner message)", + "spec": "§4, §9.4.15 (Padding_Field before the inner message)", "sender": "tsp-js", "receiver": "tsp-js", "status": "skip", @@ -7523,7 +7574,7 @@ { "suite": "interop", "case": "hop/nested/signed-only-inner", - "spec": "\u00a74 (a signed-only inner message is permitted)", + "spec": "§4 (a signed-only inner message is permitted)", "sender": "tsp-js", "receiver": "tsp-js", "status": "skip", @@ -7532,7 +7583,7 @@ { "suite": "interop", "case": "hop/routed-2-hops", - "spec": "\u00a75.3, \u00a79.4.16", + "spec": "§5.3, §9.4.16", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", @@ -7547,7 +7598,7 @@ { "suite": "interop", "case": "hop/routed-long-hop-list", - "spec": "\u00a79.4.16 hop list over 4095 quadlets (--J#####)", + "spec": "§9.4.16 hop list over 4095 quadlets (--J#####)", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", @@ -7560,7 +7611,7 @@ { "suite": "interop", "case": "rfi/hpke-base/long-reply-path", - "spec": "\u00a79.4.1 Reply_Path over 4095 quadlets (--J#####)", + "spec": "§9.4.1 Reply_Path over 4095 quadlets (--J#####)", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", @@ -7573,29 +7624,37 @@ { "suite": "interop", "case": "hop/routed-12-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "tsp-js", "receiver": "tsp-js", - "status": "fail", - "detail": "tsp-js refused to pack: [malformed] tsp: route has 12 hops, exceeds max 10", - "cause": "tsp-js refuses to pack hpke-base/hop: [malformed] tsp: route has 12 hops, exceeds max 10", - "finding": "hop-list-limits" + "status": "pass", + "detail": "", + "unreported": [ + "payload.padding", + "payload.payloadSender", + "payload.padding", + "payload.payloadSender" + ] }, { "suite": "interop", "case": "hop/routed-17-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "tsp-js", "receiver": "tsp-js", - "status": "fail", - "detail": "tsp-js refused to pack: [malformed] tsp: route has 17 hops, exceeds max 10", - "cause": "tsp-js refuses to pack hpke-base/hop: [malformed] tsp: route has 17 hops, exceeds max 10", - "finding": "hop-list-limits" + "status": "pass", + "detail": "", + "unreported": [ + "payload.padding", + "payload.payloadSender", + "payload.padding", + "payload.payloadSender" + ] }, { "suite": "interop", "case": "scs/hpke-base/small", - "spec": "\u00a73.5, \u00a78.2, \u00a79.2.3", + "spec": "§3.5, §8.2, §9.2.3", "sender": "tsp-js", "receiver": "go", "status": "pass", @@ -7604,7 +7663,7 @@ { "suite": "interop", "case": "scs/hpke-base/empty", - "spec": "\u00a79.2.3", + "spec": "§9.2.3", "sender": "tsp-js", "receiver": "go", "status": "pass", @@ -7613,7 +7672,7 @@ { "suite": "interop", "case": "scs/hpke-base/2mib", - "spec": "\u00a79.1 long count codes (--E, --Z, 7AAF)", + "spec": "§9.1 long count codes (--E, --Z, 7AAF)", "sender": "tsp-js", "receiver": "go", "status": "pass", @@ -7622,7 +7681,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-0", - "spec": "\u00a79.2.4", + "spec": "§9.2.4", "sender": "tsp-js", "receiver": "go", "status": "pass", @@ -7631,7 +7690,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-1", - "spec": "\u00a79.2.4 lead pad 2 (6B)", + "spec": "§9.2.4 lead pad 2 (6B)", "sender": "tsp-js", "receiver": "go", "status": "skip", @@ -7640,7 +7699,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-2", - "spec": "\u00a79.2.4 lead pad 1 (5B)", + "spec": "§9.2.4 lead pad 1 (5B)", "sender": "tsp-js", "receiver": "go", "status": "skip", @@ -7649,7 +7708,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-3", - "spec": "\u00a79.2.4 lead pad 0 (4B)", + "spec": "§9.2.4 lead pad 0 (4B)", "sender": "tsp-js", "receiver": "go", "status": "skip", @@ -7658,7 +7717,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12285", - "spec": "\u00a79.2.4 short max (4B__)", + "spec": "§9.2.4 short max (4B__)", "sender": "tsp-js", "receiver": "go", "status": "skip", @@ -7667,7 +7726,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12286", - "spec": "\u00a79.2.4 first long (9AAB)", + "spec": "§9.2.4 first long (9AAB)", "sender": "tsp-js", "receiver": "go", "status": "skip", @@ -7676,7 +7735,7 @@ { "suite": "interop", "case": "scs/signed-only", - "spec": "\u00a73.5, \u00a79.2", + "spec": "§3.5, §9.2", "sender": "tsp-js", "receiver": "go", "status": "skip", @@ -7685,7 +7744,7 @@ { "suite": "interop", "case": "scs/sealed-box", - "spec": "\u00a78.3, \u00a79.2.8", + "spec": "§8.3, §9.2.8", "sender": "tsp-js", "receiver": "go", "status": "skip", @@ -7694,16 +7753,16 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-null", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR NULL)", + "spec": "§3.2, §8.2.2 (ESSR NULL)", "sender": "tsp-js", "receiver": "go", "status": "skip", - "detail": "tsp-js pack: unsupported \u2014 tsp-js always writes the sender VID in the ESSR field" + "detail": "tsp-js pack: unsupported — tsp-js always writes the sender VID in the ESSR field" }, { "suite": "interop", "case": "scs/hpke-base/payload-sender-present", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR present)", + "spec": "§3.2, §8.2.2 (ESSR present)", "sender": "tsp-js", "receiver": "go", "status": "pass", @@ -7712,7 +7771,7 @@ { "suite": "interop", "case": "scs/hpke-base/long-vid", - "spec": "\u00a79.1 VID 7AAB####", + "spec": "§9.1 VID 7AAB####", "sender": "tsp-js", "receiver": "go", "status": "pass", @@ -7721,7 +7780,7 @@ { "suite": "interop", "case": "scs/hpke-pq", - "spec": "\u00a78.2.3, \u00a79.5.2 (MLKEM768-X25519, ML-DSA-65)", + "spec": "§8.2.3, §9.5.2 (MLKEM768-X25519, ML-DSA-65)", "sender": "tsp-js", "receiver": "go", "status": "skip", @@ -7730,7 +7789,7 @@ { "suite": "interop", "case": "ctl/hpke-base", - "spec": "\u00a79.3 XCTL", + "spec": "§9.3 XCTL", "sender": "tsp-js", "receiver": "go", "status": "skip", @@ -7739,7 +7798,7 @@ { "suite": "interop", "case": "pad/hpke-base", - "spec": "\u00a77.5, \u00a79.4.7 XPAD", + "spec": "§7.5, §9.4.7 XPAD", "sender": "tsp-js", "receiver": "go", "status": "skip", @@ -7748,7 +7807,7 @@ { "suite": "interop", "case": "pad/hpke-base/padded", - "spec": "\u00a77.5, \u00a79.4.7 XPAD with Padding_Field", + "spec": "§7.5, §9.4.7 XPAD with Padding_Field", "sender": "tsp-js", "receiver": "go", "status": "skip", @@ -7757,7 +7816,7 @@ { "suite": "interop", "case": "rfi/hpke-base/direct", - "spec": "\u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "§7.2.1, §7.2.2, §9.4.1", "sender": "tsp-js", "receiver": "go", "status": "pass", @@ -7766,7 +7825,7 @@ { "suite": "interop", "case": "rfi/hpke-base/reply-path", - "spec": "\u00a77.2.4, \u00a79.4.1 Reply_Path", + "spec": "§7.2.4, §9.4.1 Reply_Path", "sender": "tsp-js", "receiver": "go", "status": "pass", @@ -7775,7 +7834,7 @@ { "suite": "interop", "case": "rfi/hpke-base/referral", - "spec": "\u00a77.2.5, \u00a79.4.1 Referral_Field and Signature_new", + "spec": "§7.2.5, §9.4.1 Referral_Field and Signature_new", "sender": "tsp-js", "receiver": "go", "status": "skip", @@ -7784,7 +7843,7 @@ { "suite": "interop", "case": "rfi/sealed-box", - "spec": "\u00a77.2.1, \u00a78.3 (Blake2b-256 digest F)", + "spec": "§7.2.1, §8.3 (Blake2b-256 digest F)", "sender": "tsp-js", "receiver": "go", "status": "skip", @@ -7793,7 +7852,7 @@ { "suite": "interop", "case": "rfa/hpke-base/echo-own-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2", + "spec": "§7.2.2, §9.4.2", "sender": "tsp-js", "receiver": "go", "status": "pass", @@ -7802,7 +7861,7 @@ { "suite": "interop", "case": "rfa/hpke-base/answers-receiver-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2 (cross-derived)", + "spec": "§7.2.2, §9.4.2 (cross-derived)", "sender": "tsp-js", "receiver": "go", "status": "pass", @@ -7811,7 +7870,7 @@ { "suite": "interop", "case": "rfd/hpke-base", - "spec": "\u00a77.3, \u00a79.4.5", + "spec": "§7.3, §9.4.5", "sender": "tsp-js", "receiver": "go", "status": "pass", @@ -7820,7 +7879,7 @@ { "suite": "interop", "case": "rfi/hpke-base/padded", - "spec": "\u00a77.2.1 (Padding_Field excluded from the SAID)", + "spec": "§7.2.1 (Padding_Field excluded from the SAID)", "sender": "tsp-js", "receiver": "go", "status": "skip", @@ -7829,7 +7888,7 @@ { "suite": "interop", "case": "rfi/hpke-pq", - "spec": "\u00a77.2.1, \u00a78.2.3", + "spec": "§7.2.1, §8.2.3", "sender": "tsp-js", "receiver": "go", "status": "skip", @@ -7838,7 +7897,7 @@ { "suite": "interop", "case": "rfa/sealed-box", - "spec": "\u00a77.2.2, \u00a78.3 (Blake2b-256)", + "spec": "§7.2.2, §8.3 (Blake2b-256)", "sender": "tsp-js", "receiver": "go", "status": "skip", @@ -7847,7 +7906,7 @@ { "suite": "interop", "case": "rfd/sealed-box", - "spec": "\u00a77.3, \u00a78.3 (Blake2b-256)", + "spec": "§7.3, §8.3 (Blake2b-256)", "sender": "tsp-js", "receiver": "go", "status": "skip", @@ -7856,7 +7915,7 @@ { "suite": "interop", "case": "hop/nested", - "spec": "\u00a74, \u00a79.4.15", + "spec": "§4, §9.4.15", "sender": "tsp-js", "receiver": "go", "status": "pass", @@ -7865,7 +7924,7 @@ { "suite": "interop", "case": "hop/nested/padded", - "spec": "\u00a74, \u00a79.4.15 (Padding_Field before the inner message)", + "spec": "§4, §9.4.15 (Padding_Field before the inner message)", "sender": "tsp-js", "receiver": "go", "status": "skip", @@ -7874,7 +7933,7 @@ { "suite": "interop", "case": "hop/nested/signed-only-inner", - "spec": "\u00a74 (a signed-only inner message is permitted)", + "spec": "§4 (a signed-only inner message is permitted)", "sender": "tsp-js", "receiver": "go", "status": "skip", @@ -7883,7 +7942,7 @@ { "suite": "interop", "case": "hop/routed-2-hops", - "spec": "\u00a75.3, \u00a79.4.16", + "spec": "§5.3, §9.4.16", "sender": "tsp-js", "receiver": "go", "status": "pass", @@ -7892,7 +7951,7 @@ { "suite": "interop", "case": "hop/routed-long-hop-list", - "spec": "\u00a79.4.16 hop list over 4095 quadlets (--J#####)", + "spec": "§9.4.16 hop list over 4095 quadlets (--J#####)", "sender": "tsp-js", "receiver": "go", "status": "pass", @@ -7901,7 +7960,7 @@ { "suite": "interop", "case": "rfi/hpke-base/long-reply-path", - "spec": "\u00a79.4.1 Reply_Path over 4095 quadlets (--J#####)", + "spec": "§9.4.1 Reply_Path over 4095 quadlets (--J#####)", "sender": "tsp-js", "receiver": "go", "status": "pass", @@ -7910,29 +7969,25 @@ { "suite": "interop", "case": "hop/routed-12-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "tsp-js", "receiver": "go", - "status": "fail", - "detail": "tsp-js refused to pack: [malformed] tsp: route has 12 hops, exceeds max 10", - "cause": "tsp-js refuses to pack hpke-base/hop: [malformed] tsp: route has 12 hops, exceeds max 10", - "finding": "hop-list-limits" + "status": "pass", + "detail": "" }, { "suite": "interop", "case": "hop/routed-17-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "tsp-js", "receiver": "go", - "status": "fail", - "detail": "tsp-js refused to pack: [malformed] tsp: route has 17 hops, exceeds max 10", - "cause": "tsp-js refuses to pack hpke-base/hop: [malformed] tsp: route has 17 hops, exceeds max 10", - "finding": "hop-list-limits" + "status": "pass", + "detail": "" }, { "suite": "interop", "case": "scs/hpke-base/small", - "spec": "\u00a73.5, \u00a78.2, \u00a79.2.3", + "spec": "§3.5, §8.2, §9.2.3", "sender": "tsp-js", "receiver": "dart", "status": "pass", @@ -7941,7 +7996,7 @@ { "suite": "interop", "case": "scs/hpke-base/empty", - "spec": "\u00a79.2.3", + "spec": "§9.2.3", "sender": "tsp-js", "receiver": "dart", "status": "pass", @@ -7950,7 +8005,7 @@ { "suite": "interop", "case": "scs/hpke-base/2mib", - "spec": "\u00a79.1 long count codes (--E, --Z, 7AAF)", + "spec": "§9.1 long count codes (--E, --Z, 7AAF)", "sender": "tsp-js", "receiver": "dart", "status": "pass", @@ -7959,7 +8014,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-0", - "spec": "\u00a79.2.4", + "spec": "§9.2.4", "sender": "tsp-js", "receiver": "dart", "status": "pass", @@ -7968,7 +8023,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-1", - "spec": "\u00a79.2.4 lead pad 2 (6B)", + "spec": "§9.2.4 lead pad 2 (6B)", "sender": "tsp-js", "receiver": "dart", "status": "skip", @@ -7977,7 +8032,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-2", - "spec": "\u00a79.2.4 lead pad 1 (5B)", + "spec": "§9.2.4 lead pad 1 (5B)", "sender": "tsp-js", "receiver": "dart", "status": "skip", @@ -7986,7 +8041,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-3", - "spec": "\u00a79.2.4 lead pad 0 (4B)", + "spec": "§9.2.4 lead pad 0 (4B)", "sender": "tsp-js", "receiver": "dart", "status": "skip", @@ -7995,7 +8050,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12285", - "spec": "\u00a79.2.4 short max (4B__)", + "spec": "§9.2.4 short max (4B__)", "sender": "tsp-js", "receiver": "dart", "status": "skip", @@ -8004,7 +8059,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12286", - "spec": "\u00a79.2.4 first long (9AAB)", + "spec": "§9.2.4 first long (9AAB)", "sender": "tsp-js", "receiver": "dart", "status": "skip", @@ -8013,7 +8068,7 @@ { "suite": "interop", "case": "scs/signed-only", - "spec": "\u00a73.5, \u00a79.2", + "spec": "§3.5, §9.2", "sender": "tsp-js", "receiver": "dart", "status": "skip", @@ -8022,7 +8077,7 @@ { "suite": "interop", "case": "scs/sealed-box", - "spec": "\u00a78.3, \u00a79.2.8", + "spec": "§8.3, §9.2.8", "sender": "tsp-js", "receiver": "dart", "status": "skip", @@ -8031,16 +8086,16 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-null", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR NULL)", + "spec": "§3.2, §8.2.2 (ESSR NULL)", "sender": "tsp-js", "receiver": "dart", "status": "skip", - "detail": "tsp-js pack: unsupported \u2014 tsp-js always writes the sender VID in the ESSR field" + "detail": "tsp-js pack: unsupported — tsp-js always writes the sender VID in the ESSR field" }, { "suite": "interop", "case": "scs/hpke-base/payload-sender-present", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR present)", + "spec": "§3.2, §8.2.2 (ESSR present)", "sender": "tsp-js", "receiver": "dart", "status": "pass", @@ -8049,7 +8104,7 @@ { "suite": "interop", "case": "scs/hpke-base/long-vid", - "spec": "\u00a79.1 VID 7AAB####", + "spec": "§9.1 VID 7AAB####", "sender": "tsp-js", "receiver": "dart", "status": "pass", @@ -8058,7 +8113,7 @@ { "suite": "interop", "case": "scs/hpke-pq", - "spec": "\u00a78.2.3, \u00a79.5.2 (MLKEM768-X25519, ML-DSA-65)", + "spec": "§8.2.3, §9.5.2 (MLKEM768-X25519, ML-DSA-65)", "sender": "tsp-js", "receiver": "dart", "status": "skip", @@ -8067,7 +8122,7 @@ { "suite": "interop", "case": "ctl/hpke-base", - "spec": "\u00a79.3 XCTL", + "spec": "§9.3 XCTL", "sender": "tsp-js", "receiver": "dart", "status": "skip", @@ -8076,7 +8131,7 @@ { "suite": "interop", "case": "pad/hpke-base", - "spec": "\u00a77.5, \u00a79.4.7 XPAD", + "spec": "§7.5, §9.4.7 XPAD", "sender": "tsp-js", "receiver": "dart", "status": "skip", @@ -8085,7 +8140,7 @@ { "suite": "interop", "case": "pad/hpke-base/padded", - "spec": "\u00a77.5, \u00a79.4.7 XPAD with Padding_Field", + "spec": "§7.5, §9.4.7 XPAD with Padding_Field", "sender": "tsp-js", "receiver": "dart", "status": "skip", @@ -8094,7 +8149,7 @@ { "suite": "interop", "case": "rfi/hpke-base/direct", - "spec": "\u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "§7.2.1, §7.2.2, §9.4.1", "sender": "tsp-js", "receiver": "dart", "status": "pass", @@ -8103,7 +8158,7 @@ { "suite": "interop", "case": "rfi/hpke-base/reply-path", - "spec": "\u00a77.2.4, \u00a79.4.1 Reply_Path", + "spec": "§7.2.4, §9.4.1 Reply_Path", "sender": "tsp-js", "receiver": "dart", "status": "pass", @@ -8112,7 +8167,7 @@ { "suite": "interop", "case": "rfi/hpke-base/referral", - "spec": "\u00a77.2.5, \u00a79.4.1 Referral_Field and Signature_new", + "spec": "§7.2.5, §9.4.1 Referral_Field and Signature_new", "sender": "tsp-js", "receiver": "dart", "status": "skip", @@ -8121,7 +8176,7 @@ { "suite": "interop", "case": "rfi/sealed-box", - "spec": "\u00a77.2.1, \u00a78.3 (Blake2b-256 digest F)", + "spec": "§7.2.1, §8.3 (Blake2b-256 digest F)", "sender": "tsp-js", "receiver": "dart", "status": "skip", @@ -8130,7 +8185,7 @@ { "suite": "interop", "case": "rfa/hpke-base/echo-own-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2", + "spec": "§7.2.2, §9.4.2", "sender": "tsp-js", "receiver": "dart", "status": "pass", @@ -8139,7 +8194,7 @@ { "suite": "interop", "case": "rfa/hpke-base/answers-receiver-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2 (cross-derived)", + "spec": "§7.2.2, §9.4.2 (cross-derived)", "sender": "tsp-js", "receiver": "dart", "status": "pass", @@ -8148,7 +8203,7 @@ { "suite": "interop", "case": "rfd/hpke-base", - "spec": "\u00a77.3, \u00a79.4.5", + "spec": "§7.3, §9.4.5", "sender": "tsp-js", "receiver": "dart", "status": "pass", @@ -8157,7 +8212,7 @@ { "suite": "interop", "case": "rfi/hpke-base/padded", - "spec": "\u00a77.2.1 (Padding_Field excluded from the SAID)", + "spec": "§7.2.1 (Padding_Field excluded from the SAID)", "sender": "tsp-js", "receiver": "dart", "status": "skip", @@ -8166,7 +8221,7 @@ { "suite": "interop", "case": "rfi/hpke-pq", - "spec": "\u00a77.2.1, \u00a78.2.3", + "spec": "§7.2.1, §8.2.3", "sender": "tsp-js", "receiver": "dart", "status": "skip", @@ -8175,7 +8230,7 @@ { "suite": "interop", "case": "rfa/sealed-box", - "spec": "\u00a77.2.2, \u00a78.3 (Blake2b-256)", + "spec": "§7.2.2, §8.3 (Blake2b-256)", "sender": "tsp-js", "receiver": "dart", "status": "skip", @@ -8184,7 +8239,7 @@ { "suite": "interop", "case": "rfd/sealed-box", - "spec": "\u00a77.3, \u00a78.3 (Blake2b-256)", + "spec": "§7.3, §8.3 (Blake2b-256)", "sender": "tsp-js", "receiver": "dart", "status": "skip", @@ -8193,7 +8248,7 @@ { "suite": "interop", "case": "hop/nested", - "spec": "\u00a74, \u00a79.4.15", + "spec": "§4, §9.4.15", "sender": "tsp-js", "receiver": "dart", "status": "pass", @@ -8202,7 +8257,7 @@ { "suite": "interop", "case": "hop/nested/padded", - "spec": "\u00a74, \u00a79.4.15 (Padding_Field before the inner message)", + "spec": "§4, §9.4.15 (Padding_Field before the inner message)", "sender": "tsp-js", "receiver": "dart", "status": "skip", @@ -8211,7 +8266,7 @@ { "suite": "interop", "case": "hop/nested/signed-only-inner", - "spec": "\u00a74 (a signed-only inner message is permitted)", + "spec": "§4 (a signed-only inner message is permitted)", "sender": "tsp-js", "receiver": "dart", "status": "skip", @@ -8220,7 +8275,7 @@ { "suite": "interop", "case": "hop/routed-2-hops", - "spec": "\u00a75.3, \u00a79.4.16", + "spec": "§5.3, §9.4.16", "sender": "tsp-js", "receiver": "dart", "status": "pass", @@ -8229,7 +8284,7 @@ { "suite": "interop", "case": "hop/routed-long-hop-list", - "spec": "\u00a79.4.16 hop list over 4095 quadlets (--J#####)", + "spec": "§9.4.16 hop list over 4095 quadlets (--J#####)", "sender": "tsp-js", "receiver": "dart", "status": "pass", @@ -8238,7 +8293,7 @@ { "suite": "interop", "case": "rfi/hpke-base/long-reply-path", - "spec": "\u00a79.4.1 Reply_Path over 4095 quadlets (--J#####)", + "spec": "§9.4.1 Reply_Path over 4095 quadlets (--J#####)", "sender": "tsp-js", "receiver": "dart", "status": "pass", @@ -8247,29 +8302,25 @@ { "suite": "interop", "case": "hop/routed-12-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "tsp-js", "receiver": "dart", - "status": "fail", - "detail": "tsp-js refused to pack: [malformed] tsp: route has 12 hops, exceeds max 10", - "cause": "tsp-js refuses to pack hpke-base/hop: [malformed] tsp: route has 12 hops, exceeds max 10", - "finding": "hop-list-limits" + "status": "pass", + "detail": "" }, { "suite": "interop", "case": "hop/routed-17-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "tsp-js", "receiver": "dart", - "status": "fail", - "detail": "tsp-js refused to pack: [malformed] tsp: route has 17 hops, exceeds max 10", - "cause": "tsp-js refuses to pack hpke-base/hop: [malformed] tsp: route has 17 hops, exceeds max 10", - "finding": "hop-list-limits" + "status": "pass", + "detail": "" }, { "suite": "interop", "case": "scs/hpke-base/small", - "spec": "\u00a73.5, \u00a78.2, \u00a79.2.3", + "spec": "§3.5, §8.2, §9.2.3", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8282,7 +8333,7 @@ { "suite": "interop", "case": "scs/hpke-base/empty", - "spec": "\u00a79.2.3", + "spec": "§9.2.3", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8295,7 +8346,7 @@ { "suite": "interop", "case": "scs/hpke-base/2mib", - "spec": "\u00a79.1 long count codes (--E, --Z, 7AAF)", + "spec": "§9.1 long count codes (--E, --Z, 7AAF)", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8308,7 +8359,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-0", - "spec": "\u00a79.2.4", + "spec": "§9.2.4", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8321,7 +8372,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-1", - "spec": "\u00a79.2.4 lead pad 2 (6B)", + "spec": "§9.2.4 lead pad 2 (6B)", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8334,7 +8385,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-2", - "spec": "\u00a79.2.4 lead pad 1 (5B)", + "spec": "§9.2.4 lead pad 1 (5B)", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8347,7 +8398,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-3", - "spec": "\u00a79.2.4 lead pad 0 (4B)", + "spec": "§9.2.4 lead pad 0 (4B)", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8360,7 +8411,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12285", - "spec": "\u00a79.2.4 short max (4B__)", + "spec": "§9.2.4 short max (4B__)", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8373,7 +8424,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12286", - "spec": "\u00a79.2.4 first long (9AAB)", + "spec": "§9.2.4 first long (9AAB)", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8386,7 +8437,7 @@ { "suite": "interop", "case": "scs/signed-only", - "spec": "\u00a73.5, \u00a79.2", + "spec": "§3.5, §9.2", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8399,7 +8450,7 @@ { "suite": "interop", "case": "scs/sealed-box", - "spec": "\u00a78.3, \u00a79.2.8", + "spec": "§8.3, §9.2.8", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8412,7 +8463,7 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-null", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR NULL)", + "spec": "§3.2, §8.2.2 (ESSR NULL)", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8425,7 +8476,7 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-present", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR present)", + "spec": "§3.2, §8.2.2 (ESSR present)", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8438,7 +8489,7 @@ { "suite": "interop", "case": "scs/hpke-base/long-vid", - "spec": "\u00a79.1 VID 7AAB####", + "spec": "§9.1 VID 7AAB####", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8451,7 +8502,7 @@ { "suite": "interop", "case": "scs/hpke-pq", - "spec": "\u00a78.2.3, \u00a79.5.2 (MLKEM768-X25519, ML-DSA-65)", + "spec": "§8.2.3, §9.5.2 (MLKEM768-X25519, ML-DSA-65)", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8464,7 +8515,7 @@ { "suite": "interop", "case": "ctl/hpke-base", - "spec": "\u00a79.3 XCTL", + "spec": "§9.3 XCTL", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8477,7 +8528,7 @@ { "suite": "interop", "case": "pad/hpke-base", - "spec": "\u00a77.5, \u00a79.4.7 XPAD", + "spec": "§7.5, §9.4.7 XPAD", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8490,7 +8541,7 @@ { "suite": "interop", "case": "pad/hpke-base/padded", - "spec": "\u00a77.5, \u00a79.4.7 XPAD with Padding_Field", + "spec": "§7.5, §9.4.7 XPAD with Padding_Field", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8503,7 +8554,7 @@ { "suite": "interop", "case": "rfi/hpke-base/direct", - "spec": "\u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "§7.2.1, §7.2.2, §9.4.1", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8516,7 +8567,7 @@ { "suite": "interop", "case": "rfi/hpke-base/reply-path", - "spec": "\u00a77.2.4, \u00a79.4.1 Reply_Path", + "spec": "§7.2.4, §9.4.1 Reply_Path", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8529,7 +8580,7 @@ { "suite": "interop", "case": "rfi/hpke-base/referral", - "spec": "\u00a77.2.5, \u00a79.4.1 Referral_Field and Signature_new", + "spec": "§7.2.5, §9.4.1 Referral_Field and Signature_new", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8542,7 +8593,7 @@ { "suite": "interop", "case": "rfi/sealed-box", - "spec": "\u00a77.2.1, \u00a78.3 (Blake2b-256 digest F)", + "spec": "§7.2.1, §8.3 (Blake2b-256 digest F)", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8555,7 +8606,7 @@ { "suite": "interop", "case": "rfa/hpke-base/echo-own-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2", + "spec": "§7.2.2, §9.4.2", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8568,7 +8619,7 @@ { "suite": "interop", "case": "rfa/hpke-base/answers-receiver-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2 (cross-derived)", + "spec": "§7.2.2, §9.4.2 (cross-derived)", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8581,7 +8632,7 @@ { "suite": "interop", "case": "rfd/hpke-base", - "spec": "\u00a77.3, \u00a79.4.5", + "spec": "§7.3, §9.4.5", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8594,7 +8645,7 @@ { "suite": "interop", "case": "rfi/hpke-base/padded", - "spec": "\u00a77.2.1 (Padding_Field excluded from the SAID)", + "spec": "§7.2.1 (Padding_Field excluded from the SAID)", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8607,7 +8658,7 @@ { "suite": "interop", "case": "rfi/hpke-pq", - "spec": "\u00a77.2.1, \u00a78.2.3", + "spec": "§7.2.1, §8.2.3", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8620,7 +8671,7 @@ { "suite": "interop", "case": "rfa/sealed-box", - "spec": "\u00a77.2.2, \u00a78.3 (Blake2b-256)", + "spec": "§7.2.2, §8.3 (Blake2b-256)", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8633,7 +8684,7 @@ { "suite": "interop", "case": "rfd/sealed-box", - "spec": "\u00a77.3, \u00a78.3 (Blake2b-256)", + "spec": "§7.3, §8.3 (Blake2b-256)", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8646,7 +8697,7 @@ { "suite": "interop", "case": "hop/nested", - "spec": "\u00a74, \u00a79.4.15", + "spec": "§4, §9.4.15", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8661,7 +8712,7 @@ { "suite": "interop", "case": "hop/nested/padded", - "spec": "\u00a74, \u00a79.4.15 (Padding_Field before the inner message)", + "spec": "§4, §9.4.15 (Padding_Field before the inner message)", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8674,7 +8725,7 @@ { "suite": "interop", "case": "hop/nested/signed-only-inner", - "spec": "\u00a74 (a signed-only inner message is permitted)", + "spec": "§4 (a signed-only inner message is permitted)", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8689,7 +8740,7 @@ { "suite": "interop", "case": "hop/routed-2-hops", - "spec": "\u00a75.3, \u00a79.4.16", + "spec": "§5.3, §9.4.16", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8704,7 +8755,7 @@ { "suite": "interop", "case": "hop/routed-long-hop-list", - "spec": "\u00a79.4.16 hop list over 4095 quadlets (--J#####)", + "spec": "§9.4.16 hop list over 4095 quadlets (--J#####)", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8717,7 +8768,7 @@ { "suite": "interop", "case": "rfi/hpke-base/long-reply-path", - "spec": "\u00a79.4.1 Reply_Path over 4095 quadlets (--J#####)", + "spec": "§9.4.1 Reply_Path over 4095 quadlets (--J#####)", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8730,7 +8781,7 @@ { "suite": "interop", "case": "hop/routed-12-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -8745,18 +8796,22 @@ { "suite": "interop", "case": "hop/routed-17-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "go", "receiver": "affinidi-rust", - "status": "fail", - "detail": "affinidi-rust refused to open go's message: [malformed] invalid message: hop list too long", - "cause": "affinidi-rust refuses go's hpke-base/hop: [malformed] invalid message: hop list too long", - "finding": "hop-list-limits" + "status": "pass", + "detail": "", + "unreported": [ + "payload.padding", + "payload.payloadSender", + "payload.padding", + "payload.payloadSender" + ] }, { "suite": "interop", "case": "scs/hpke-base/small", - "spec": "\u00a73.5, \u00a78.2, \u00a79.2.3", + "spec": "§3.5, §8.2, §9.2.3", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -8770,7 +8825,7 @@ { "suite": "interop", "case": "scs/hpke-base/empty", - "spec": "\u00a79.2.3", + "spec": "§9.2.3", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -8784,7 +8839,7 @@ { "suite": "interop", "case": "scs/hpke-base/2mib", - "spec": "\u00a79.1 long count codes (--E, --Z, 7AAF)", + "spec": "§9.1 long count codes (--E, --Z, 7AAF)", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -8798,7 +8853,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-0", - "spec": "\u00a79.2.4", + "spec": "§9.2.4", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -8812,7 +8867,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-1", - "spec": "\u00a79.2.4 lead pad 2 (6B)", + "spec": "§9.2.4 lead pad 2 (6B)", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -8826,7 +8881,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-2", - "spec": "\u00a79.2.4 lead pad 1 (5B)", + "spec": "§9.2.4 lead pad 1 (5B)", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -8840,7 +8895,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-3", - "spec": "\u00a79.2.4 lead pad 0 (4B)", + "spec": "§9.2.4 lead pad 0 (4B)", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -8854,7 +8909,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12285", - "spec": "\u00a79.2.4 short max (4B__)", + "spec": "§9.2.4 short max (4B__)", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -8868,7 +8923,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12286", - "spec": "\u00a79.2.4 first long (9AAB)", + "spec": "§9.2.4 first long (9AAB)", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -8882,7 +8937,7 @@ { "suite": "interop", "case": "scs/signed-only", - "spec": "\u00a73.5, \u00a79.2", + "spec": "§3.5, §9.2", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -8896,7 +8951,7 @@ { "suite": "interop", "case": "scs/sealed-box", - "spec": "\u00a78.3, \u00a79.2.8", + "spec": "§8.3, §9.2.8", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -8910,7 +8965,7 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-null", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR NULL)", + "spec": "§3.2, §8.2.2 (ESSR NULL)", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -8924,7 +8979,7 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-present", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR present)", + "spec": "§3.2, §8.2.2 (ESSR present)", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -8938,7 +8993,7 @@ { "suite": "interop", "case": "scs/hpke-base/long-vid", - "spec": "\u00a79.1 VID 7AAB####", + "spec": "§9.1 VID 7AAB####", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -8952,7 +9007,7 @@ { "suite": "interop", "case": "scs/hpke-pq", - "spec": "\u00a78.2.3, \u00a79.5.2 (MLKEM768-X25519, ML-DSA-65)", + "spec": "§8.2.3, §9.5.2 (MLKEM768-X25519, ML-DSA-65)", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -8966,7 +9021,7 @@ { "suite": "interop", "case": "ctl/hpke-base", - "spec": "\u00a79.3 XCTL", + "spec": "§9.3 XCTL", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -8980,7 +9035,7 @@ { "suite": "interop", "case": "pad/hpke-base", - "spec": "\u00a77.5, \u00a79.4.7 XPAD", + "spec": "§7.5, §9.4.7 XPAD", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -8994,7 +9049,7 @@ { "suite": "interop", "case": "pad/hpke-base/padded", - "spec": "\u00a77.5, \u00a79.4.7 XPAD with Padding_Field", + "spec": "§7.5, §9.4.7 XPAD with Padding_Field", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -9008,7 +9063,7 @@ { "suite": "interop", "case": "rfi/hpke-base/direct", - "spec": "\u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "§7.2.1, §7.2.2, §9.4.1", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -9023,7 +9078,7 @@ { "suite": "interop", "case": "rfi/hpke-base/reply-path", - "spec": "\u00a77.2.4, \u00a79.4.1 Reply_Path", + "spec": "§7.2.4, §9.4.1 Reply_Path", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -9038,7 +9093,7 @@ { "suite": "interop", "case": "rfi/hpke-base/referral", - "spec": "\u00a77.2.5, \u00a79.4.1 Referral_Field and Signature_new", + "spec": "§7.2.5, §9.4.1 Referral_Field and Signature_new", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -9053,7 +9108,7 @@ { "suite": "interop", "case": "rfi/sealed-box", - "spec": "\u00a77.2.1, \u00a78.3 (Blake2b-256 digest F)", + "spec": "§7.2.1, §8.3 (Blake2b-256 digest F)", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -9068,7 +9123,7 @@ { "suite": "interop", "case": "rfa/hpke-base/echo-own-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2", + "spec": "§7.2.2, §9.4.2", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -9082,7 +9137,7 @@ { "suite": "interop", "case": "rfa/hpke-base/answers-receiver-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2 (cross-derived)", + "spec": "§7.2.2, §9.4.2 (cross-derived)", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -9096,7 +9151,7 @@ { "suite": "interop", "case": "rfd/hpke-base", - "spec": "\u00a77.3, \u00a79.4.5", + "spec": "§7.3, §9.4.5", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -9110,7 +9165,7 @@ { "suite": "interop", "case": "rfi/hpke-base/padded", - "spec": "\u00a77.2.1 (Padding_Field excluded from the SAID)", + "spec": "§7.2.1 (Padding_Field excluded from the SAID)", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -9125,7 +9180,7 @@ { "suite": "interop", "case": "rfi/hpke-pq", - "spec": "\u00a77.2.1, \u00a78.2.3", + "spec": "§7.2.1, §8.2.3", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -9140,7 +9195,7 @@ { "suite": "interop", "case": "rfa/sealed-box", - "spec": "\u00a77.2.2, \u00a78.3 (Blake2b-256)", + "spec": "§7.2.2, §8.3 (Blake2b-256)", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -9154,7 +9209,7 @@ { "suite": "interop", "case": "rfd/sealed-box", - "spec": "\u00a77.3, \u00a78.3 (Blake2b-256)", + "spec": "§7.3, §8.3 (Blake2b-256)", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -9168,7 +9223,7 @@ { "suite": "interop", "case": "hop/nested", - "spec": "\u00a74, \u00a79.4.15", + "spec": "§4, §9.4.15", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -9185,7 +9240,7 @@ { "suite": "interop", "case": "hop/nested/padded", - "spec": "\u00a74, \u00a79.4.15 (Padding_Field before the inner message)", + "spec": "§4, §9.4.15 (Padding_Field before the inner message)", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -9199,7 +9254,7 @@ { "suite": "interop", "case": "hop/nested/signed-only-inner", - "spec": "\u00a74 (a signed-only inner message is permitted)", + "spec": "§4 (a signed-only inner message is permitted)", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -9216,7 +9271,7 @@ { "suite": "interop", "case": "hop/routed-2-hops", - "spec": "\u00a75.3, \u00a79.4.16", + "spec": "§5.3, §9.4.16", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -9233,7 +9288,7 @@ { "suite": "interop", "case": "hop/routed-long-hop-list", - "spec": "\u00a79.4.16 hop list over 4095 quadlets (--J#####)", + "spec": "§9.4.16 hop list over 4095 quadlets (--J#####)", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -9247,7 +9302,7 @@ { "suite": "interop", "case": "rfi/hpke-base/long-reply-path", - "spec": "\u00a79.4.1 Reply_Path over 4095 quadlets (--J#####)", + "spec": "§9.4.1 Reply_Path over 4095 quadlets (--J#####)", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -9262,7 +9317,7 @@ { "suite": "interop", "case": "hop/routed-12-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -9279,7 +9334,7 @@ { "suite": "interop", "case": "hop/routed-17-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -9296,7 +9351,7 @@ { "suite": "interop", "case": "scs/hpke-base/small", - "spec": "\u00a73.5, \u00a78.2, \u00a79.2.3", + "spec": "§3.5, §8.2, §9.2.3", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -9309,7 +9364,7 @@ { "suite": "interop", "case": "scs/hpke-base/empty", - "spec": "\u00a79.2.3", + "spec": "§9.2.3", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -9322,7 +9377,7 @@ { "suite": "interop", "case": "scs/hpke-base/2mib", - "spec": "\u00a79.1 long count codes (--E, --Z, 7AAF)", + "spec": "§9.1 long count codes (--E, --Z, 7AAF)", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -9335,7 +9390,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-0", - "spec": "\u00a79.2.4", + "spec": "§9.2.4", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -9348,7 +9403,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-1", - "spec": "\u00a79.2.4 lead pad 2 (6B)", + "spec": "§9.2.4 lead pad 2 (6B)", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -9361,7 +9416,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-2", - "spec": "\u00a79.2.4 lead pad 1 (5B)", + "spec": "§9.2.4 lead pad 1 (5B)", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -9374,7 +9429,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-3", - "spec": "\u00a79.2.4 lead pad 0 (4B)", + "spec": "§9.2.4 lead pad 0 (4B)", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -9387,7 +9442,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12285", - "spec": "\u00a79.2.4 short max (4B__)", + "spec": "§9.2.4 short max (4B__)", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -9400,7 +9455,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12286", - "spec": "\u00a79.2.4 first long (9AAB)", + "spec": "§9.2.4 first long (9AAB)", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -9413,7 +9468,7 @@ { "suite": "interop", "case": "scs/signed-only", - "spec": "\u00a73.5, \u00a79.2", + "spec": "§3.5, §9.2", "sender": "go", "receiver": "tsp-js", "status": "skip", @@ -9422,7 +9477,7 @@ { "suite": "interop", "case": "scs/sealed-box", - "spec": "\u00a78.3, \u00a79.2.8", + "spec": "§8.3, §9.2.8", "sender": "go", "receiver": "tsp-js", "status": "skip", @@ -9431,7 +9486,7 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-null", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR NULL)", + "spec": "§3.2, §8.2.2 (ESSR NULL)", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -9444,7 +9499,7 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-present", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR present)", + "spec": "§3.2, §8.2.2 (ESSR present)", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -9457,7 +9512,7 @@ { "suite": "interop", "case": "scs/hpke-base/long-vid", - "spec": "\u00a79.1 VID 7AAB####", + "spec": "§9.1 VID 7AAB####", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -9470,7 +9525,7 @@ { "suite": "interop", "case": "scs/hpke-pq", - "spec": "\u00a78.2.3, \u00a79.5.2 (MLKEM768-X25519, ML-DSA-65)", + "spec": "§8.2.3, §9.5.2 (MLKEM768-X25519, ML-DSA-65)", "sender": "go", "receiver": "tsp-js", "status": "skip", @@ -9479,7 +9534,7 @@ { "suite": "interop", "case": "ctl/hpke-base", - "spec": "\u00a79.3 XCTL", + "spec": "§9.3 XCTL", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -9492,7 +9547,7 @@ { "suite": "interop", "case": "pad/hpke-base", - "spec": "\u00a77.5, \u00a79.4.7 XPAD", + "spec": "§7.5, §9.4.7 XPAD", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -9505,7 +9560,7 @@ { "suite": "interop", "case": "pad/hpke-base/padded", - "spec": "\u00a77.5, \u00a79.4.7 XPAD with Padding_Field", + "spec": "§7.5, §9.4.7 XPAD with Padding_Field", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -9518,7 +9573,7 @@ { "suite": "interop", "case": "rfi/hpke-base/direct", - "spec": "\u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "§7.2.1, §7.2.2, §9.4.1", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -9531,7 +9586,7 @@ { "suite": "interop", "case": "rfi/hpke-base/reply-path", - "spec": "\u00a77.2.4, \u00a79.4.1 Reply_Path", + "spec": "§7.2.4, §9.4.1 Reply_Path", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -9544,7 +9599,7 @@ { "suite": "interop", "case": "rfi/hpke-base/referral", - "spec": "\u00a77.2.5, \u00a79.4.1 Referral_Field and Signature_new", + "spec": "§7.2.5, §9.4.1 Referral_Field and Signature_new", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -9557,7 +9612,7 @@ { "suite": "interop", "case": "rfi/sealed-box", - "spec": "\u00a77.2.1, \u00a78.3 (Blake2b-256 digest F)", + "spec": "§7.2.1, §8.3 (Blake2b-256 digest F)", "sender": "go", "receiver": "tsp-js", "status": "skip", @@ -9566,7 +9621,7 @@ { "suite": "interop", "case": "rfa/hpke-base/echo-own-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2", + "spec": "§7.2.2, §9.4.2", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -9579,7 +9634,7 @@ { "suite": "interop", "case": "rfa/hpke-base/answers-receiver-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2 (cross-derived)", + "spec": "§7.2.2, §9.4.2 (cross-derived)", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -9592,7 +9647,7 @@ { "suite": "interop", "case": "rfd/hpke-base", - "spec": "\u00a77.3, \u00a79.4.5", + "spec": "§7.3, §9.4.5", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -9605,7 +9660,7 @@ { "suite": "interop", "case": "rfi/hpke-base/padded", - "spec": "\u00a77.2.1 (Padding_Field excluded from the SAID)", + "spec": "§7.2.1 (Padding_Field excluded from the SAID)", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -9618,7 +9673,7 @@ { "suite": "interop", "case": "rfi/hpke-pq", - "spec": "\u00a77.2.1, \u00a78.2.3", + "spec": "§7.2.1, §8.2.3", "sender": "go", "receiver": "tsp-js", "status": "skip", @@ -9627,7 +9682,7 @@ { "suite": "interop", "case": "rfa/sealed-box", - "spec": "\u00a77.2.2, \u00a78.3 (Blake2b-256)", + "spec": "§7.2.2, §8.3 (Blake2b-256)", "sender": "go", "receiver": "tsp-js", "status": "skip", @@ -9636,7 +9691,7 @@ { "suite": "interop", "case": "rfd/sealed-box", - "spec": "\u00a77.3, \u00a78.3 (Blake2b-256)", + "spec": "§7.3, §8.3 (Blake2b-256)", "sender": "go", "receiver": "tsp-js", "status": "skip", @@ -9645,7 +9700,7 @@ { "suite": "interop", "case": "hop/nested", - "spec": "\u00a74, \u00a79.4.15", + "spec": "§4, §9.4.15", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -9660,7 +9715,7 @@ { "suite": "interop", "case": "hop/nested/padded", - "spec": "\u00a74, \u00a79.4.15 (Padding_Field before the inner message)", + "spec": "§4, §9.4.15 (Padding_Field before the inner message)", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -9673,7 +9728,7 @@ { "suite": "interop", "case": "hop/nested/signed-only-inner", - "spec": "\u00a74 (a signed-only inner message is permitted)", + "spec": "§4 (a signed-only inner message is permitted)", "sender": "go", "receiver": "tsp-js", "status": "skip", @@ -9682,7 +9737,7 @@ { "suite": "interop", "case": "hop/routed-2-hops", - "spec": "\u00a75.3, \u00a79.4.16", + "spec": "§5.3, §9.4.16", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -9697,7 +9752,7 @@ { "suite": "interop", "case": "hop/routed-long-hop-list", - "spec": "\u00a79.4.16 hop list over 4095 quadlets (--J#####)", + "spec": "§9.4.16 hop list over 4095 quadlets (--J#####)", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -9710,7 +9765,7 @@ { "suite": "interop", "case": "rfi/hpke-base/long-reply-path", - "spec": "\u00a79.4.1 Reply_Path over 4095 quadlets (--J#####)", + "spec": "§9.4.1 Reply_Path over 4095 quadlets (--J#####)", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -9723,29 +9778,37 @@ { "suite": "interop", "case": "hop/routed-12-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "go", "receiver": "tsp-js", - "status": "fail", - "detail": "tsp-js refused to open go's message: [malformed] tsp: too many hops", - "cause": "tsp-js refuses go's hpke-base/hop: [malformed] tsp: too many hops", - "finding": "hop-list-limits" + "status": "pass", + "detail": "", + "unreported": [ + "payload.padding", + "payload.payloadSender", + "payload.padding", + "payload.payloadSender" + ] }, { "suite": "interop", "case": "hop/routed-17-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "go", "receiver": "tsp-js", - "status": "fail", - "detail": "tsp-js refused to open go's message: [malformed] tsp: too many hops", - "cause": "tsp-js refuses go's hpke-base/hop: [malformed] tsp: too many hops", - "finding": "hop-list-limits" + "status": "pass", + "detail": "", + "unreported": [ + "payload.padding", + "payload.payloadSender", + "payload.padding", + "payload.payloadSender" + ] }, { "suite": "interop", "case": "scs/hpke-base/small", - "spec": "\u00a73.5, \u00a78.2, \u00a79.2.3", + "spec": "§3.5, §8.2, §9.2.3", "sender": "go", "receiver": "go", "status": "pass", @@ -9754,7 +9817,7 @@ { "suite": "interop", "case": "scs/hpke-base/empty", - "spec": "\u00a79.2.3", + "spec": "§9.2.3", "sender": "go", "receiver": "go", "status": "pass", @@ -9763,7 +9826,7 @@ { "suite": "interop", "case": "scs/hpke-base/2mib", - "spec": "\u00a79.1 long count codes (--E, --Z, 7AAF)", + "spec": "§9.1 long count codes (--E, --Z, 7AAF)", "sender": "go", "receiver": "go", "status": "pass", @@ -9772,7 +9835,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-0", - "spec": "\u00a79.2.4", + "spec": "§9.2.4", "sender": "go", "receiver": "go", "status": "pass", @@ -9781,7 +9844,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-1", - "spec": "\u00a79.2.4 lead pad 2 (6B)", + "spec": "§9.2.4 lead pad 2 (6B)", "sender": "go", "receiver": "go", "status": "pass", @@ -9790,7 +9853,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-2", - "spec": "\u00a79.2.4 lead pad 1 (5B)", + "spec": "§9.2.4 lead pad 1 (5B)", "sender": "go", "receiver": "go", "status": "pass", @@ -9799,7 +9862,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-3", - "spec": "\u00a79.2.4 lead pad 0 (4B)", + "spec": "§9.2.4 lead pad 0 (4B)", "sender": "go", "receiver": "go", "status": "pass", @@ -9808,7 +9871,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12285", - "spec": "\u00a79.2.4 short max (4B__)", + "spec": "§9.2.4 short max (4B__)", "sender": "go", "receiver": "go", "status": "pass", @@ -9817,7 +9880,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12286", - "spec": "\u00a79.2.4 first long (9AAB)", + "spec": "§9.2.4 first long (9AAB)", "sender": "go", "receiver": "go", "status": "pass", @@ -9826,7 +9889,7 @@ { "suite": "interop", "case": "scs/signed-only", - "spec": "\u00a73.5, \u00a79.2", + "spec": "§3.5, §9.2", "sender": "go", "receiver": "go", "status": "pass", @@ -9835,7 +9898,7 @@ { "suite": "interop", "case": "scs/sealed-box", - "spec": "\u00a78.3, \u00a79.2.8", + "spec": "§8.3, §9.2.8", "sender": "go", "receiver": "go", "status": "pass", @@ -9844,7 +9907,7 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-null", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR NULL)", + "spec": "§3.2, §8.2.2 (ESSR NULL)", "sender": "go", "receiver": "go", "status": "pass", @@ -9853,7 +9916,7 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-present", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR present)", + "spec": "§3.2, §8.2.2 (ESSR present)", "sender": "go", "receiver": "go", "status": "pass", @@ -9862,7 +9925,7 @@ { "suite": "interop", "case": "scs/hpke-base/long-vid", - "spec": "\u00a79.1 VID 7AAB####", + "spec": "§9.1 VID 7AAB####", "sender": "go", "receiver": "go", "status": "pass", @@ -9871,7 +9934,7 @@ { "suite": "interop", "case": "scs/hpke-pq", - "spec": "\u00a78.2.3, \u00a79.5.2 (MLKEM768-X25519, ML-DSA-65)", + "spec": "§8.2.3, §9.5.2 (MLKEM768-X25519, ML-DSA-65)", "sender": "go", "receiver": "go", "status": "pass", @@ -9880,7 +9943,7 @@ { "suite": "interop", "case": "ctl/hpke-base", - "spec": "\u00a79.3 XCTL", + "spec": "§9.3 XCTL", "sender": "go", "receiver": "go", "status": "pass", @@ -9889,7 +9952,7 @@ { "suite": "interop", "case": "pad/hpke-base", - "spec": "\u00a77.5, \u00a79.4.7 XPAD", + "spec": "§7.5, §9.4.7 XPAD", "sender": "go", "receiver": "go", "status": "pass", @@ -9898,7 +9961,7 @@ { "suite": "interop", "case": "pad/hpke-base/padded", - "spec": "\u00a77.5, \u00a79.4.7 XPAD with Padding_Field", + "spec": "§7.5, §9.4.7 XPAD with Padding_Field", "sender": "go", "receiver": "go", "status": "pass", @@ -9907,7 +9970,7 @@ { "suite": "interop", "case": "rfi/hpke-base/direct", - "spec": "\u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "§7.2.1, §7.2.2, §9.4.1", "sender": "go", "receiver": "go", "status": "pass", @@ -9916,7 +9979,7 @@ { "suite": "interop", "case": "rfi/hpke-base/reply-path", - "spec": "\u00a77.2.4, \u00a79.4.1 Reply_Path", + "spec": "§7.2.4, §9.4.1 Reply_Path", "sender": "go", "receiver": "go", "status": "pass", @@ -9925,7 +9988,7 @@ { "suite": "interop", "case": "rfi/hpke-base/referral", - "spec": "\u00a77.2.5, \u00a79.4.1 Referral_Field and Signature_new", + "spec": "§7.2.5, §9.4.1 Referral_Field and Signature_new", "sender": "go", "receiver": "go", "status": "pass", @@ -9934,7 +9997,7 @@ { "suite": "interop", "case": "rfi/sealed-box", - "spec": "\u00a77.2.1, \u00a78.3 (Blake2b-256 digest F)", + "spec": "§7.2.1, §8.3 (Blake2b-256 digest F)", "sender": "go", "receiver": "go", "status": "pass", @@ -9943,7 +10006,7 @@ { "suite": "interop", "case": "rfa/hpke-base/echo-own-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2", + "spec": "§7.2.2, §9.4.2", "sender": "go", "receiver": "go", "status": "pass", @@ -9952,7 +10015,7 @@ { "suite": "interop", "case": "rfa/hpke-base/answers-receiver-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2 (cross-derived)", + "spec": "§7.2.2, §9.4.2 (cross-derived)", "sender": "go", "receiver": "go", "status": "pass", @@ -9961,7 +10024,7 @@ { "suite": "interop", "case": "rfd/hpke-base", - "spec": "\u00a77.3, \u00a79.4.5", + "spec": "§7.3, §9.4.5", "sender": "go", "receiver": "go", "status": "pass", @@ -9970,7 +10033,7 @@ { "suite": "interop", "case": "rfi/hpke-base/padded", - "spec": "\u00a77.2.1 (Padding_Field excluded from the SAID)", + "spec": "§7.2.1 (Padding_Field excluded from the SAID)", "sender": "go", "receiver": "go", "status": "pass", @@ -9979,7 +10042,7 @@ { "suite": "interop", "case": "rfi/hpke-pq", - "spec": "\u00a77.2.1, \u00a78.2.3", + "spec": "§7.2.1, §8.2.3", "sender": "go", "receiver": "go", "status": "pass", @@ -9988,7 +10051,7 @@ { "suite": "interop", "case": "rfa/sealed-box", - "spec": "\u00a77.2.2, \u00a78.3 (Blake2b-256)", + "spec": "§7.2.2, §8.3 (Blake2b-256)", "sender": "go", "receiver": "go", "status": "pass", @@ -9997,7 +10060,7 @@ { "suite": "interop", "case": "rfd/sealed-box", - "spec": "\u00a77.3, \u00a78.3 (Blake2b-256)", + "spec": "§7.3, §8.3 (Blake2b-256)", "sender": "go", "receiver": "go", "status": "pass", @@ -10006,7 +10069,7 @@ { "suite": "interop", "case": "hop/nested", - "spec": "\u00a74, \u00a79.4.15", + "spec": "§4, §9.4.15", "sender": "go", "receiver": "go", "status": "pass", @@ -10015,7 +10078,7 @@ { "suite": "interop", "case": "hop/nested/padded", - "spec": "\u00a74, \u00a79.4.15 (Padding_Field before the inner message)", + "spec": "§4, §9.4.15 (Padding_Field before the inner message)", "sender": "go", "receiver": "go", "status": "pass", @@ -10024,7 +10087,7 @@ { "suite": "interop", "case": "hop/nested/signed-only-inner", - "spec": "\u00a74 (a signed-only inner message is permitted)", + "spec": "§4 (a signed-only inner message is permitted)", "sender": "go", "receiver": "go", "status": "pass", @@ -10033,7 +10096,7 @@ { "suite": "interop", "case": "hop/routed-2-hops", - "spec": "\u00a75.3, \u00a79.4.16", + "spec": "§5.3, §9.4.16", "sender": "go", "receiver": "go", "status": "pass", @@ -10042,7 +10105,7 @@ { "suite": "interop", "case": "hop/routed-long-hop-list", - "spec": "\u00a79.4.16 hop list over 4095 quadlets (--J#####)", + "spec": "§9.4.16 hop list over 4095 quadlets (--J#####)", "sender": "go", "receiver": "go", "status": "pass", @@ -10051,7 +10114,7 @@ { "suite": "interop", "case": "rfi/hpke-base/long-reply-path", - "spec": "\u00a79.4.1 Reply_Path over 4095 quadlets (--J#####)", + "spec": "§9.4.1 Reply_Path over 4095 quadlets (--J#####)", "sender": "go", "receiver": "go", "status": "pass", @@ -10060,7 +10123,7 @@ { "suite": "interop", "case": "hop/routed-12-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "go", "receiver": "go", "status": "pass", @@ -10069,7 +10132,7 @@ { "suite": "interop", "case": "hop/routed-17-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "go", "receiver": "go", "status": "pass", @@ -10078,7 +10141,7 @@ { "suite": "interop", "case": "scs/hpke-base/small", - "spec": "\u00a73.5, \u00a78.2, \u00a79.2.3", + "spec": "§3.5, §8.2, §9.2.3", "sender": "go", "receiver": "dart", "status": "pass", @@ -10087,7 +10150,7 @@ { "suite": "interop", "case": "scs/hpke-base/empty", - "spec": "\u00a79.2.3", + "spec": "§9.2.3", "sender": "go", "receiver": "dart", "status": "pass", @@ -10096,7 +10159,7 @@ { "suite": "interop", "case": "scs/hpke-base/2mib", - "spec": "\u00a79.1 long count codes (--E, --Z, 7AAF)", + "spec": "§9.1 long count codes (--E, --Z, 7AAF)", "sender": "go", "receiver": "dart", "status": "pass", @@ -10105,7 +10168,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-0", - "spec": "\u00a79.2.4", + "spec": "§9.2.4", "sender": "go", "receiver": "dart", "status": "pass", @@ -10114,7 +10177,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-1", - "spec": "\u00a79.2.4 lead pad 2 (6B)", + "spec": "§9.2.4 lead pad 2 (6B)", "sender": "go", "receiver": "dart", "status": "pass", @@ -10123,7 +10186,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-2", - "spec": "\u00a79.2.4 lead pad 1 (5B)", + "spec": "§9.2.4 lead pad 1 (5B)", "sender": "go", "receiver": "dart", "status": "pass", @@ -10132,7 +10195,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-3", - "spec": "\u00a79.2.4 lead pad 0 (4B)", + "spec": "§9.2.4 lead pad 0 (4B)", "sender": "go", "receiver": "dart", "status": "pass", @@ -10141,7 +10204,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12285", - "spec": "\u00a79.2.4 short max (4B__)", + "spec": "§9.2.4 short max (4B__)", "sender": "go", "receiver": "dart", "status": "pass", @@ -10150,7 +10213,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12286", - "spec": "\u00a79.2.4 first long (9AAB)", + "spec": "§9.2.4 first long (9AAB)", "sender": "go", "receiver": "dart", "status": "pass", @@ -10159,7 +10222,7 @@ { "suite": "interop", "case": "scs/signed-only", - "spec": "\u00a73.5, \u00a79.2", + "spec": "§3.5, §9.2", "sender": "go", "receiver": "dart", "status": "pass", @@ -10168,7 +10231,7 @@ { "suite": "interop", "case": "scs/sealed-box", - "spec": "\u00a78.3, \u00a79.2.8", + "spec": "§8.3, §9.2.8", "sender": "go", "receiver": "dart", "status": "pass", @@ -10177,7 +10240,7 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-null", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR NULL)", + "spec": "§3.2, §8.2.2 (ESSR NULL)", "sender": "go", "receiver": "dart", "status": "pass", @@ -10186,7 +10249,7 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-present", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR present)", + "spec": "§3.2, §8.2.2 (ESSR present)", "sender": "go", "receiver": "dart", "status": "pass", @@ -10195,7 +10258,7 @@ { "suite": "interop", "case": "scs/hpke-base/long-vid", - "spec": "\u00a79.1 VID 7AAB####", + "spec": "§9.1 VID 7AAB####", "sender": "go", "receiver": "dart", "status": "pass", @@ -10204,7 +10267,7 @@ { "suite": "interop", "case": "scs/hpke-pq", - "spec": "\u00a78.2.3, \u00a79.5.2 (MLKEM768-X25519, ML-DSA-65)", + "spec": "§8.2.3, §9.5.2 (MLKEM768-X25519, ML-DSA-65)", "sender": "go", "receiver": "dart", "status": "pass", @@ -10213,7 +10276,7 @@ { "suite": "interop", "case": "ctl/hpke-base", - "spec": "\u00a79.3 XCTL", + "spec": "§9.3 XCTL", "sender": "go", "receiver": "dart", "status": "pass", @@ -10222,7 +10285,7 @@ { "suite": "interop", "case": "pad/hpke-base", - "spec": "\u00a77.5, \u00a79.4.7 XPAD", + "spec": "§7.5, §9.4.7 XPAD", "sender": "go", "receiver": "dart", "status": "pass", @@ -10231,7 +10294,7 @@ { "suite": "interop", "case": "pad/hpke-base/padded", - "spec": "\u00a77.5, \u00a79.4.7 XPAD with Padding_Field", + "spec": "§7.5, §9.4.7 XPAD with Padding_Field", "sender": "go", "receiver": "dart", "status": "pass", @@ -10240,7 +10303,7 @@ { "suite": "interop", "case": "rfi/hpke-base/direct", - "spec": "\u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "§7.2.1, §7.2.2, §9.4.1", "sender": "go", "receiver": "dart", "status": "pass", @@ -10249,7 +10312,7 @@ { "suite": "interop", "case": "rfi/hpke-base/reply-path", - "spec": "\u00a77.2.4, \u00a79.4.1 Reply_Path", + "spec": "§7.2.4, §9.4.1 Reply_Path", "sender": "go", "receiver": "dart", "status": "pass", @@ -10258,7 +10321,7 @@ { "suite": "interop", "case": "rfi/hpke-base/referral", - "spec": "\u00a77.2.5, \u00a79.4.1 Referral_Field and Signature_new", + "spec": "§7.2.5, §9.4.1 Referral_Field and Signature_new", "sender": "go", "receiver": "dart", "status": "pass", @@ -10267,7 +10330,7 @@ { "suite": "interop", "case": "rfi/sealed-box", - "spec": "\u00a77.2.1, \u00a78.3 (Blake2b-256 digest F)", + "spec": "§7.2.1, §8.3 (Blake2b-256 digest F)", "sender": "go", "receiver": "dart", "status": "pass", @@ -10276,7 +10339,7 @@ { "suite": "interop", "case": "rfa/hpke-base/echo-own-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2", + "spec": "§7.2.2, §9.4.2", "sender": "go", "receiver": "dart", "status": "pass", @@ -10285,7 +10348,7 @@ { "suite": "interop", "case": "rfa/hpke-base/answers-receiver-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2 (cross-derived)", + "spec": "§7.2.2, §9.4.2 (cross-derived)", "sender": "go", "receiver": "dart", "status": "pass", @@ -10294,7 +10357,7 @@ { "suite": "interop", "case": "rfd/hpke-base", - "spec": "\u00a77.3, \u00a79.4.5", + "spec": "§7.3, §9.4.5", "sender": "go", "receiver": "dart", "status": "pass", @@ -10303,7 +10366,7 @@ { "suite": "interop", "case": "rfi/hpke-base/padded", - "spec": "\u00a77.2.1 (Padding_Field excluded from the SAID)", + "spec": "§7.2.1 (Padding_Field excluded from the SAID)", "sender": "go", "receiver": "dart", "status": "pass", @@ -10312,7 +10375,7 @@ { "suite": "interop", "case": "rfi/hpke-pq", - "spec": "\u00a77.2.1, \u00a78.2.3", + "spec": "§7.2.1, §8.2.3", "sender": "go", "receiver": "dart", "status": "pass", @@ -10321,7 +10384,7 @@ { "suite": "interop", "case": "rfa/sealed-box", - "spec": "\u00a77.2.2, \u00a78.3 (Blake2b-256)", + "spec": "§7.2.2, §8.3 (Blake2b-256)", "sender": "go", "receiver": "dart", "status": "pass", @@ -10330,7 +10393,7 @@ { "suite": "interop", "case": "rfd/sealed-box", - "spec": "\u00a77.3, \u00a78.3 (Blake2b-256)", + "spec": "§7.3, §8.3 (Blake2b-256)", "sender": "go", "receiver": "dart", "status": "pass", @@ -10339,7 +10402,7 @@ { "suite": "interop", "case": "hop/nested", - "spec": "\u00a74, \u00a79.4.15", + "spec": "§4, §9.4.15", "sender": "go", "receiver": "dart", "status": "pass", @@ -10348,7 +10411,7 @@ { "suite": "interop", "case": "hop/nested/padded", - "spec": "\u00a74, \u00a79.4.15 (Padding_Field before the inner message)", + "spec": "§4, §9.4.15 (Padding_Field before the inner message)", "sender": "go", "receiver": "dart", "status": "pass", @@ -10357,7 +10420,7 @@ { "suite": "interop", "case": "hop/nested/signed-only-inner", - "spec": "\u00a74 (a signed-only inner message is permitted)", + "spec": "§4 (a signed-only inner message is permitted)", "sender": "go", "receiver": "dart", "status": "pass", @@ -10366,7 +10429,7 @@ { "suite": "interop", "case": "hop/routed-2-hops", - "spec": "\u00a75.3, \u00a79.4.16", + "spec": "§5.3, §9.4.16", "sender": "go", "receiver": "dart", "status": "pass", @@ -10375,7 +10438,7 @@ { "suite": "interop", "case": "hop/routed-long-hop-list", - "spec": "\u00a79.4.16 hop list over 4095 quadlets (--J#####)", + "spec": "§9.4.16 hop list over 4095 quadlets (--J#####)", "sender": "go", "receiver": "dart", "status": "pass", @@ -10384,7 +10447,7 @@ { "suite": "interop", "case": "rfi/hpke-base/long-reply-path", - "spec": "\u00a79.4.1 Reply_Path over 4095 quadlets (--J#####)", + "spec": "§9.4.1 Reply_Path over 4095 quadlets (--J#####)", "sender": "go", "receiver": "dart", "status": "pass", @@ -10393,7 +10456,7 @@ { "suite": "interop", "case": "hop/routed-12-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "go", "receiver": "dart", "status": "pass", @@ -10402,7 +10465,7 @@ { "suite": "interop", "case": "hop/routed-17-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "go", "receiver": "dart", "status": "pass", @@ -10411,7 +10474,7 @@ { "suite": "interop", "case": "scs/hpke-base/small", - "spec": "\u00a73.5, \u00a78.2, \u00a79.2.3", + "spec": "§3.5, §8.2, §9.2.3", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10424,7 +10487,7 @@ { "suite": "interop", "case": "scs/hpke-base/empty", - "spec": "\u00a79.2.3", + "spec": "§9.2.3", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10437,7 +10500,7 @@ { "suite": "interop", "case": "scs/hpke-base/2mib", - "spec": "\u00a79.1 long count codes (--E, --Z, 7AAF)", + "spec": "§9.1 long count codes (--E, --Z, 7AAF)", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10450,7 +10513,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-0", - "spec": "\u00a79.2.4", + "spec": "§9.2.4", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10463,7 +10526,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-1", - "spec": "\u00a79.2.4 lead pad 2 (6B)", + "spec": "§9.2.4 lead pad 2 (6B)", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10476,7 +10539,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-2", - "spec": "\u00a79.2.4 lead pad 1 (5B)", + "spec": "§9.2.4 lead pad 1 (5B)", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10489,7 +10552,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-3", - "spec": "\u00a79.2.4 lead pad 0 (4B)", + "spec": "§9.2.4 lead pad 0 (4B)", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10502,7 +10565,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12285", - "spec": "\u00a79.2.4 short max (4B__)", + "spec": "§9.2.4 short max (4B__)", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10515,7 +10578,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12286", - "spec": "\u00a79.2.4 first long (9AAB)", + "spec": "§9.2.4 first long (9AAB)", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10528,7 +10591,7 @@ { "suite": "interop", "case": "scs/signed-only", - "spec": "\u00a73.5, \u00a79.2", + "spec": "§3.5, §9.2", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10541,7 +10604,7 @@ { "suite": "interop", "case": "scs/sealed-box", - "spec": "\u00a78.3, \u00a79.2.8", + "spec": "§8.3, §9.2.8", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10554,7 +10617,7 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-null", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR NULL)", + "spec": "§3.2, §8.2.2 (ESSR NULL)", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10567,7 +10630,7 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-present", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR present)", + "spec": "§3.2, §8.2.2 (ESSR present)", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10580,7 +10643,7 @@ { "suite": "interop", "case": "scs/hpke-base/long-vid", - "spec": "\u00a79.1 VID 7AAB####", + "spec": "§9.1 VID 7AAB####", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10593,7 +10656,7 @@ { "suite": "interop", "case": "scs/hpke-pq", - "spec": "\u00a78.2.3, \u00a79.5.2 (MLKEM768-X25519, ML-DSA-65)", + "spec": "§8.2.3, §9.5.2 (MLKEM768-X25519, ML-DSA-65)", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10606,7 +10669,7 @@ { "suite": "interop", "case": "ctl/hpke-base", - "spec": "\u00a79.3 XCTL", + "spec": "§9.3 XCTL", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10619,7 +10682,7 @@ { "suite": "interop", "case": "pad/hpke-base", - "spec": "\u00a77.5, \u00a79.4.7 XPAD", + "spec": "§7.5, §9.4.7 XPAD", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10632,7 +10695,7 @@ { "suite": "interop", "case": "pad/hpke-base/padded", - "spec": "\u00a77.5, \u00a79.4.7 XPAD with Padding_Field", + "spec": "§7.5, §9.4.7 XPAD with Padding_Field", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10645,7 +10708,7 @@ { "suite": "interop", "case": "rfi/hpke-base/direct", - "spec": "\u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "§7.2.1, §7.2.2, §9.4.1", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10658,7 +10721,7 @@ { "suite": "interop", "case": "rfi/hpke-base/reply-path", - "spec": "\u00a77.2.4, \u00a79.4.1 Reply_Path", + "spec": "§7.2.4, §9.4.1 Reply_Path", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10671,7 +10734,7 @@ { "suite": "interop", "case": "rfi/hpke-base/referral", - "spec": "\u00a77.2.5, \u00a79.4.1 Referral_Field and Signature_new", + "spec": "§7.2.5, §9.4.1 Referral_Field and Signature_new", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10684,7 +10747,7 @@ { "suite": "interop", "case": "rfi/sealed-box", - "spec": "\u00a77.2.1, \u00a78.3 (Blake2b-256 digest F)", + "spec": "§7.2.1, §8.3 (Blake2b-256 digest F)", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10697,7 +10760,7 @@ { "suite": "interop", "case": "rfa/hpke-base/echo-own-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2", + "spec": "§7.2.2, §9.4.2", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10710,7 +10773,7 @@ { "suite": "interop", "case": "rfa/hpke-base/answers-receiver-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2 (cross-derived)", + "spec": "§7.2.2, §9.4.2 (cross-derived)", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10723,7 +10786,7 @@ { "suite": "interop", "case": "rfd/hpke-base", - "spec": "\u00a77.3, \u00a79.4.5", + "spec": "§7.3, §9.4.5", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10736,7 +10799,7 @@ { "suite": "interop", "case": "rfi/hpke-base/padded", - "spec": "\u00a77.2.1 (Padding_Field excluded from the SAID)", + "spec": "§7.2.1 (Padding_Field excluded from the SAID)", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10749,7 +10812,7 @@ { "suite": "interop", "case": "rfi/hpke-pq", - "spec": "\u00a77.2.1, \u00a78.2.3", + "spec": "§7.2.1, §8.2.3", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10762,7 +10825,7 @@ { "suite": "interop", "case": "rfa/sealed-box", - "spec": "\u00a77.2.2, \u00a78.3 (Blake2b-256)", + "spec": "§7.2.2, §8.3 (Blake2b-256)", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10775,7 +10838,7 @@ { "suite": "interop", "case": "rfd/sealed-box", - "spec": "\u00a77.3, \u00a78.3 (Blake2b-256)", + "spec": "§7.3, §8.3 (Blake2b-256)", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10788,7 +10851,7 @@ { "suite": "interop", "case": "hop/nested", - "spec": "\u00a74, \u00a79.4.15", + "spec": "§4, §9.4.15", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10803,7 +10866,7 @@ { "suite": "interop", "case": "hop/nested/padded", - "spec": "\u00a74, \u00a79.4.15 (Padding_Field before the inner message)", + "spec": "§4, §9.4.15 (Padding_Field before the inner message)", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10816,7 +10879,7 @@ { "suite": "interop", "case": "hop/nested/signed-only-inner", - "spec": "\u00a74 (a signed-only inner message is permitted)", + "spec": "§4 (a signed-only inner message is permitted)", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10831,7 +10894,7 @@ { "suite": "interop", "case": "hop/routed-2-hops", - "spec": "\u00a75.3, \u00a79.4.16", + "spec": "§5.3, §9.4.16", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10846,7 +10909,7 @@ { "suite": "interop", "case": "hop/routed-long-hop-list", - "spec": "\u00a79.4.16 hop list over 4095 quadlets (--J#####)", + "spec": "§9.4.16 hop list over 4095 quadlets (--J#####)", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10859,7 +10922,7 @@ { "suite": "interop", "case": "rfi/hpke-base/long-reply-path", - "spec": "\u00a79.4.1 Reply_Path over 4095 quadlets (--J#####)", + "spec": "§9.4.1 Reply_Path over 4095 quadlets (--J#####)", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10872,7 +10935,7 @@ { "suite": "interop", "case": "hop/routed-12-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -10887,18 +10950,22 @@ { "suite": "interop", "case": "hop/routed-17-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "dart", "receiver": "affinidi-rust", - "status": "fail", - "detail": "affinidi-rust refused to open dart's message: [malformed] invalid message: hop list too long", - "cause": "affinidi-rust refuses dart's hpke-base/hop: [malformed] invalid message: hop list too long", - "finding": "hop-list-limits" + "status": "pass", + "detail": "", + "unreported": [ + "payload.padding", + "payload.payloadSender", + "payload.padding", + "payload.payloadSender" + ] }, { "suite": "interop", "case": "scs/hpke-base/small", - "spec": "\u00a73.5, \u00a78.2, \u00a79.2.3", + "spec": "§3.5, §8.2, §9.2.3", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -10912,7 +10979,7 @@ { "suite": "interop", "case": "scs/hpke-base/empty", - "spec": "\u00a79.2.3", + "spec": "§9.2.3", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -10926,7 +10993,7 @@ { "suite": "interop", "case": "scs/hpke-base/2mib", - "spec": "\u00a79.1 long count codes (--E, --Z, 7AAF)", + "spec": "§9.1 long count codes (--E, --Z, 7AAF)", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -10940,7 +11007,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-0", - "spec": "\u00a79.2.4", + "spec": "§9.2.4", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -10954,7 +11021,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-1", - "spec": "\u00a79.2.4 lead pad 2 (6B)", + "spec": "§9.2.4 lead pad 2 (6B)", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -10968,7 +11035,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-2", - "spec": "\u00a79.2.4 lead pad 1 (5B)", + "spec": "§9.2.4 lead pad 1 (5B)", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -10982,7 +11049,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-3", - "spec": "\u00a79.2.4 lead pad 0 (4B)", + "spec": "§9.2.4 lead pad 0 (4B)", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -10996,7 +11063,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12285", - "spec": "\u00a79.2.4 short max (4B__)", + "spec": "§9.2.4 short max (4B__)", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11010,7 +11077,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12286", - "spec": "\u00a79.2.4 first long (9AAB)", + "spec": "§9.2.4 first long (9AAB)", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11024,7 +11091,7 @@ { "suite": "interop", "case": "scs/signed-only", - "spec": "\u00a73.5, \u00a79.2", + "spec": "§3.5, §9.2", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11038,7 +11105,7 @@ { "suite": "interop", "case": "scs/sealed-box", - "spec": "\u00a78.3, \u00a79.2.8", + "spec": "§8.3, §9.2.8", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11052,7 +11119,7 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-null", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR NULL)", + "spec": "§3.2, §8.2.2 (ESSR NULL)", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11066,7 +11133,7 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-present", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR present)", + "spec": "§3.2, §8.2.2 (ESSR present)", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11080,7 +11147,7 @@ { "suite": "interop", "case": "scs/hpke-base/long-vid", - "spec": "\u00a79.1 VID 7AAB####", + "spec": "§9.1 VID 7AAB####", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11094,7 +11161,7 @@ { "suite": "interop", "case": "scs/hpke-pq", - "spec": "\u00a78.2.3, \u00a79.5.2 (MLKEM768-X25519, ML-DSA-65)", + "spec": "§8.2.3, §9.5.2 (MLKEM768-X25519, ML-DSA-65)", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11108,7 +11175,7 @@ { "suite": "interop", "case": "ctl/hpke-base", - "spec": "\u00a79.3 XCTL", + "spec": "§9.3 XCTL", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11122,7 +11189,7 @@ { "suite": "interop", "case": "pad/hpke-base", - "spec": "\u00a77.5, \u00a79.4.7 XPAD", + "spec": "§7.5, §9.4.7 XPAD", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11136,7 +11203,7 @@ { "suite": "interop", "case": "pad/hpke-base/padded", - "spec": "\u00a77.5, \u00a79.4.7 XPAD with Padding_Field", + "spec": "§7.5, §9.4.7 XPAD with Padding_Field", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11150,7 +11217,7 @@ { "suite": "interop", "case": "rfi/hpke-base/direct", - "spec": "\u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "§7.2.1, §7.2.2, §9.4.1", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11165,7 +11232,7 @@ { "suite": "interop", "case": "rfi/hpke-base/reply-path", - "spec": "\u00a77.2.4, \u00a79.4.1 Reply_Path", + "spec": "§7.2.4, §9.4.1 Reply_Path", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11180,7 +11247,7 @@ { "suite": "interop", "case": "rfi/hpke-base/referral", - "spec": "\u00a77.2.5, \u00a79.4.1 Referral_Field and Signature_new", + "spec": "§7.2.5, §9.4.1 Referral_Field and Signature_new", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11195,7 +11262,7 @@ { "suite": "interop", "case": "rfi/sealed-box", - "spec": "\u00a77.2.1, \u00a78.3 (Blake2b-256 digest F)", + "spec": "§7.2.1, §8.3 (Blake2b-256 digest F)", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11210,7 +11277,7 @@ { "suite": "interop", "case": "rfa/hpke-base/echo-own-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2", + "spec": "§7.2.2, §9.4.2", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11224,7 +11291,7 @@ { "suite": "interop", "case": "rfa/hpke-base/answers-receiver-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2 (cross-derived)", + "spec": "§7.2.2, §9.4.2 (cross-derived)", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11238,7 +11305,7 @@ { "suite": "interop", "case": "rfd/hpke-base", - "spec": "\u00a77.3, \u00a79.4.5", + "spec": "§7.3, §9.4.5", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11252,7 +11319,7 @@ { "suite": "interop", "case": "rfi/hpke-base/padded", - "spec": "\u00a77.2.1 (Padding_Field excluded from the SAID)", + "spec": "§7.2.1 (Padding_Field excluded from the SAID)", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11267,7 +11334,7 @@ { "suite": "interop", "case": "rfi/hpke-pq", - "spec": "\u00a77.2.1, \u00a78.2.3", + "spec": "§7.2.1, §8.2.3", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11282,7 +11349,7 @@ { "suite": "interop", "case": "rfa/sealed-box", - "spec": "\u00a77.2.2, \u00a78.3 (Blake2b-256)", + "spec": "§7.2.2, §8.3 (Blake2b-256)", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11296,7 +11363,7 @@ { "suite": "interop", "case": "rfd/sealed-box", - "spec": "\u00a77.3, \u00a78.3 (Blake2b-256)", + "spec": "§7.3, §8.3 (Blake2b-256)", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11310,7 +11377,7 @@ { "suite": "interop", "case": "hop/nested", - "spec": "\u00a74, \u00a79.4.15", + "spec": "§4, §9.4.15", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11327,7 +11394,7 @@ { "suite": "interop", "case": "hop/nested/padded", - "spec": "\u00a74, \u00a79.4.15 (Padding_Field before the inner message)", + "spec": "§4, §9.4.15 (Padding_Field before the inner message)", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11341,7 +11408,7 @@ { "suite": "interop", "case": "hop/nested/signed-only-inner", - "spec": "\u00a74 (a signed-only inner message is permitted)", + "spec": "§4 (a signed-only inner message is permitted)", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11358,7 +11425,7 @@ { "suite": "interop", "case": "hop/routed-2-hops", - "spec": "\u00a75.3, \u00a79.4.16", + "spec": "§5.3, §9.4.16", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11375,7 +11442,7 @@ { "suite": "interop", "case": "hop/routed-long-hop-list", - "spec": "\u00a79.4.16 hop list over 4095 quadlets (--J#####)", + "spec": "§9.4.16 hop list over 4095 quadlets (--J#####)", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11389,7 +11456,7 @@ { "suite": "interop", "case": "rfi/hpke-base/long-reply-path", - "spec": "\u00a79.4.1 Reply_Path over 4095 quadlets (--J#####)", + "spec": "§9.4.1 Reply_Path over 4095 quadlets (--J#####)", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11404,7 +11471,7 @@ { "suite": "interop", "case": "hop/routed-12-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11421,7 +11488,7 @@ { "suite": "interop", "case": "hop/routed-17-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -11438,7 +11505,7 @@ { "suite": "interop", "case": "scs/hpke-base/small", - "spec": "\u00a73.5, \u00a78.2, \u00a79.2.3", + "spec": "§3.5, §8.2, §9.2.3", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -11451,7 +11518,7 @@ { "suite": "interop", "case": "scs/hpke-base/empty", - "spec": "\u00a79.2.3", + "spec": "§9.2.3", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -11464,7 +11531,7 @@ { "suite": "interop", "case": "scs/hpke-base/2mib", - "spec": "\u00a79.1 long count codes (--E, --Z, 7AAF)", + "spec": "§9.1 long count codes (--E, --Z, 7AAF)", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -11477,7 +11544,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-0", - "spec": "\u00a79.2.4", + "spec": "§9.2.4", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -11490,7 +11557,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-1", - "spec": "\u00a79.2.4 lead pad 2 (6B)", + "spec": "§9.2.4 lead pad 2 (6B)", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -11503,7 +11570,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-2", - "spec": "\u00a79.2.4 lead pad 1 (5B)", + "spec": "§9.2.4 lead pad 1 (5B)", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -11516,7 +11583,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-3", - "spec": "\u00a79.2.4 lead pad 0 (4B)", + "spec": "§9.2.4 lead pad 0 (4B)", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -11529,7 +11596,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12285", - "spec": "\u00a79.2.4 short max (4B__)", + "spec": "§9.2.4 short max (4B__)", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -11542,7 +11609,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12286", - "spec": "\u00a79.2.4 first long (9AAB)", + "spec": "§9.2.4 first long (9AAB)", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -11555,7 +11622,7 @@ { "suite": "interop", "case": "scs/signed-only", - "spec": "\u00a73.5, \u00a79.2", + "spec": "§3.5, §9.2", "sender": "dart", "receiver": "tsp-js", "status": "skip", @@ -11564,7 +11631,7 @@ { "suite": "interop", "case": "scs/sealed-box", - "spec": "\u00a78.3, \u00a79.2.8", + "spec": "§8.3, §9.2.8", "sender": "dart", "receiver": "tsp-js", "status": "skip", @@ -11573,7 +11640,7 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-null", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR NULL)", + "spec": "§3.2, §8.2.2 (ESSR NULL)", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -11586,7 +11653,7 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-present", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR present)", + "spec": "§3.2, §8.2.2 (ESSR present)", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -11599,7 +11666,7 @@ { "suite": "interop", "case": "scs/hpke-base/long-vid", - "spec": "\u00a79.1 VID 7AAB####", + "spec": "§9.1 VID 7AAB####", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -11612,7 +11679,7 @@ { "suite": "interop", "case": "scs/hpke-pq", - "spec": "\u00a78.2.3, \u00a79.5.2 (MLKEM768-X25519, ML-DSA-65)", + "spec": "§8.2.3, §9.5.2 (MLKEM768-X25519, ML-DSA-65)", "sender": "dart", "receiver": "tsp-js", "status": "skip", @@ -11621,7 +11688,7 @@ { "suite": "interop", "case": "ctl/hpke-base", - "spec": "\u00a79.3 XCTL", + "spec": "§9.3 XCTL", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -11634,7 +11701,7 @@ { "suite": "interop", "case": "pad/hpke-base", - "spec": "\u00a77.5, \u00a79.4.7 XPAD", + "spec": "§7.5, §9.4.7 XPAD", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -11647,7 +11714,7 @@ { "suite": "interop", "case": "pad/hpke-base/padded", - "spec": "\u00a77.5, \u00a79.4.7 XPAD with Padding_Field", + "spec": "§7.5, §9.4.7 XPAD with Padding_Field", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -11660,7 +11727,7 @@ { "suite": "interop", "case": "rfi/hpke-base/direct", - "spec": "\u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "§7.2.1, §7.2.2, §9.4.1", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -11673,7 +11740,7 @@ { "suite": "interop", "case": "rfi/hpke-base/reply-path", - "spec": "\u00a77.2.4, \u00a79.4.1 Reply_Path", + "spec": "§7.2.4, §9.4.1 Reply_Path", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -11686,7 +11753,7 @@ { "suite": "interop", "case": "rfi/hpke-base/referral", - "spec": "\u00a77.2.5, \u00a79.4.1 Referral_Field and Signature_new", + "spec": "§7.2.5, §9.4.1 Referral_Field and Signature_new", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -11699,7 +11766,7 @@ { "suite": "interop", "case": "rfi/sealed-box", - "spec": "\u00a77.2.1, \u00a78.3 (Blake2b-256 digest F)", + "spec": "§7.2.1, §8.3 (Blake2b-256 digest F)", "sender": "dart", "receiver": "tsp-js", "status": "skip", @@ -11708,7 +11775,7 @@ { "suite": "interop", "case": "rfa/hpke-base/echo-own-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2", + "spec": "§7.2.2, §9.4.2", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -11721,7 +11788,7 @@ { "suite": "interop", "case": "rfa/hpke-base/answers-receiver-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2 (cross-derived)", + "spec": "§7.2.2, §9.4.2 (cross-derived)", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -11734,7 +11801,7 @@ { "suite": "interop", "case": "rfd/hpke-base", - "spec": "\u00a77.3, \u00a79.4.5", + "spec": "§7.3, §9.4.5", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -11747,7 +11814,7 @@ { "suite": "interop", "case": "rfi/hpke-base/padded", - "spec": "\u00a77.2.1 (Padding_Field excluded from the SAID)", + "spec": "§7.2.1 (Padding_Field excluded from the SAID)", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -11760,7 +11827,7 @@ { "suite": "interop", "case": "rfi/hpke-pq", - "spec": "\u00a77.2.1, \u00a78.2.3", + "spec": "§7.2.1, §8.2.3", "sender": "dart", "receiver": "tsp-js", "status": "skip", @@ -11769,7 +11836,7 @@ { "suite": "interop", "case": "rfa/sealed-box", - "spec": "\u00a77.2.2, \u00a78.3 (Blake2b-256)", + "spec": "§7.2.2, §8.3 (Blake2b-256)", "sender": "dart", "receiver": "tsp-js", "status": "skip", @@ -11778,7 +11845,7 @@ { "suite": "interop", "case": "rfd/sealed-box", - "spec": "\u00a77.3, \u00a78.3 (Blake2b-256)", + "spec": "§7.3, §8.3 (Blake2b-256)", "sender": "dart", "receiver": "tsp-js", "status": "skip", @@ -11787,7 +11854,7 @@ { "suite": "interop", "case": "hop/nested", - "spec": "\u00a74, \u00a79.4.15", + "spec": "§4, §9.4.15", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -11802,7 +11869,7 @@ { "suite": "interop", "case": "hop/nested/padded", - "spec": "\u00a74, \u00a79.4.15 (Padding_Field before the inner message)", + "spec": "§4, §9.4.15 (Padding_Field before the inner message)", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -11815,7 +11882,7 @@ { "suite": "interop", "case": "hop/nested/signed-only-inner", - "spec": "\u00a74 (a signed-only inner message is permitted)", + "spec": "§4 (a signed-only inner message is permitted)", "sender": "dart", "receiver": "tsp-js", "status": "skip", @@ -11824,7 +11891,7 @@ { "suite": "interop", "case": "hop/routed-2-hops", - "spec": "\u00a75.3, \u00a79.4.16", + "spec": "§5.3, §9.4.16", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -11839,7 +11906,7 @@ { "suite": "interop", "case": "hop/routed-long-hop-list", - "spec": "\u00a79.4.16 hop list over 4095 quadlets (--J#####)", + "spec": "§9.4.16 hop list over 4095 quadlets (--J#####)", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -11852,7 +11919,7 @@ { "suite": "interop", "case": "rfi/hpke-base/long-reply-path", - "spec": "\u00a79.4.1 Reply_Path over 4095 quadlets (--J#####)", + "spec": "§9.4.1 Reply_Path over 4095 quadlets (--J#####)", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -11865,29 +11932,37 @@ { "suite": "interop", "case": "hop/routed-12-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "dart", "receiver": "tsp-js", - "status": "fail", - "detail": "tsp-js refused to open dart's message: [malformed] tsp: too many hops", - "cause": "tsp-js refuses dart's hpke-base/hop: [malformed] tsp: too many hops", - "finding": "hop-list-limits" + "status": "pass", + "detail": "", + "unreported": [ + "payload.padding", + "payload.payloadSender", + "payload.padding", + "payload.payloadSender" + ] }, { "suite": "interop", "case": "hop/routed-17-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "dart", "receiver": "tsp-js", - "status": "fail", - "detail": "tsp-js refused to open dart's message: [malformed] tsp: too many hops", - "cause": "tsp-js refuses dart's hpke-base/hop: [malformed] tsp: too many hops", - "finding": "hop-list-limits" + "status": "pass", + "detail": "", + "unreported": [ + "payload.padding", + "payload.payloadSender", + "payload.padding", + "payload.payloadSender" + ] }, { "suite": "interop", "case": "scs/hpke-base/small", - "spec": "\u00a73.5, \u00a78.2, \u00a79.2.3", + "spec": "§3.5, §8.2, §9.2.3", "sender": "dart", "receiver": "go", "status": "pass", @@ -11896,7 +11971,7 @@ { "suite": "interop", "case": "scs/hpke-base/empty", - "spec": "\u00a79.2.3", + "spec": "§9.2.3", "sender": "dart", "receiver": "go", "status": "pass", @@ -11905,7 +11980,7 @@ { "suite": "interop", "case": "scs/hpke-base/2mib", - "spec": "\u00a79.1 long count codes (--E, --Z, 7AAF)", + "spec": "§9.1 long count codes (--E, --Z, 7AAF)", "sender": "dart", "receiver": "go", "status": "pass", @@ -11914,7 +11989,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-0", - "spec": "\u00a79.2.4", + "spec": "§9.2.4", "sender": "dart", "receiver": "go", "status": "pass", @@ -11923,7 +11998,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-1", - "spec": "\u00a79.2.4 lead pad 2 (6B)", + "spec": "§9.2.4 lead pad 2 (6B)", "sender": "dart", "receiver": "go", "status": "pass", @@ -11932,7 +12007,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-2", - "spec": "\u00a79.2.4 lead pad 1 (5B)", + "spec": "§9.2.4 lead pad 1 (5B)", "sender": "dart", "receiver": "go", "status": "pass", @@ -11941,7 +12016,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-3", - "spec": "\u00a79.2.4 lead pad 0 (4B)", + "spec": "§9.2.4 lead pad 0 (4B)", "sender": "dart", "receiver": "go", "status": "pass", @@ -11950,7 +12025,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12285", - "spec": "\u00a79.2.4 short max (4B__)", + "spec": "§9.2.4 short max (4B__)", "sender": "dart", "receiver": "go", "status": "pass", @@ -11959,7 +12034,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12286", - "spec": "\u00a79.2.4 first long (9AAB)", + "spec": "§9.2.4 first long (9AAB)", "sender": "dart", "receiver": "go", "status": "pass", @@ -11968,7 +12043,7 @@ { "suite": "interop", "case": "scs/signed-only", - "spec": "\u00a73.5, \u00a79.2", + "spec": "§3.5, §9.2", "sender": "dart", "receiver": "go", "status": "pass", @@ -11977,7 +12052,7 @@ { "suite": "interop", "case": "scs/sealed-box", - "spec": "\u00a78.3, \u00a79.2.8", + "spec": "§8.3, §9.2.8", "sender": "dart", "receiver": "go", "status": "pass", @@ -11986,7 +12061,7 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-null", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR NULL)", + "spec": "§3.2, §8.2.2 (ESSR NULL)", "sender": "dart", "receiver": "go", "status": "pass", @@ -11995,7 +12070,7 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-present", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR present)", + "spec": "§3.2, §8.2.2 (ESSR present)", "sender": "dart", "receiver": "go", "status": "pass", @@ -12004,7 +12079,7 @@ { "suite": "interop", "case": "scs/hpke-base/long-vid", - "spec": "\u00a79.1 VID 7AAB####", + "spec": "§9.1 VID 7AAB####", "sender": "dart", "receiver": "go", "status": "pass", @@ -12013,7 +12088,7 @@ { "suite": "interop", "case": "scs/hpke-pq", - "spec": "\u00a78.2.3, \u00a79.5.2 (MLKEM768-X25519, ML-DSA-65)", + "spec": "§8.2.3, §9.5.2 (MLKEM768-X25519, ML-DSA-65)", "sender": "dart", "receiver": "go", "status": "pass", @@ -12022,7 +12097,7 @@ { "suite": "interop", "case": "ctl/hpke-base", - "spec": "\u00a79.3 XCTL", + "spec": "§9.3 XCTL", "sender": "dart", "receiver": "go", "status": "pass", @@ -12031,7 +12106,7 @@ { "suite": "interop", "case": "pad/hpke-base", - "spec": "\u00a77.5, \u00a79.4.7 XPAD", + "spec": "§7.5, §9.4.7 XPAD", "sender": "dart", "receiver": "go", "status": "pass", @@ -12040,7 +12115,7 @@ { "suite": "interop", "case": "pad/hpke-base/padded", - "spec": "\u00a77.5, \u00a79.4.7 XPAD with Padding_Field", + "spec": "§7.5, §9.4.7 XPAD with Padding_Field", "sender": "dart", "receiver": "go", "status": "pass", @@ -12049,7 +12124,7 @@ { "suite": "interop", "case": "rfi/hpke-base/direct", - "spec": "\u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "§7.2.1, §7.2.2, §9.4.1", "sender": "dart", "receiver": "go", "status": "pass", @@ -12058,7 +12133,7 @@ { "suite": "interop", "case": "rfi/hpke-base/reply-path", - "spec": "\u00a77.2.4, \u00a79.4.1 Reply_Path", + "spec": "§7.2.4, §9.4.1 Reply_Path", "sender": "dart", "receiver": "go", "status": "pass", @@ -12067,7 +12142,7 @@ { "suite": "interop", "case": "rfi/hpke-base/referral", - "spec": "\u00a77.2.5, \u00a79.4.1 Referral_Field and Signature_new", + "spec": "§7.2.5, §9.4.1 Referral_Field and Signature_new", "sender": "dart", "receiver": "go", "status": "pass", @@ -12076,7 +12151,7 @@ { "suite": "interop", "case": "rfi/sealed-box", - "spec": "\u00a77.2.1, \u00a78.3 (Blake2b-256 digest F)", + "spec": "§7.2.1, §8.3 (Blake2b-256 digest F)", "sender": "dart", "receiver": "go", "status": "pass", @@ -12085,7 +12160,7 @@ { "suite": "interop", "case": "rfa/hpke-base/echo-own-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2", + "spec": "§7.2.2, §9.4.2", "sender": "dart", "receiver": "go", "status": "pass", @@ -12094,7 +12169,7 @@ { "suite": "interop", "case": "rfa/hpke-base/answers-receiver-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2 (cross-derived)", + "spec": "§7.2.2, §9.4.2 (cross-derived)", "sender": "dart", "receiver": "go", "status": "pass", @@ -12103,7 +12178,7 @@ { "suite": "interop", "case": "rfd/hpke-base", - "spec": "\u00a77.3, \u00a79.4.5", + "spec": "§7.3, §9.4.5", "sender": "dart", "receiver": "go", "status": "pass", @@ -12112,7 +12187,7 @@ { "suite": "interop", "case": "rfi/hpke-base/padded", - "spec": "\u00a77.2.1 (Padding_Field excluded from the SAID)", + "spec": "§7.2.1 (Padding_Field excluded from the SAID)", "sender": "dart", "receiver": "go", "status": "pass", @@ -12121,7 +12196,7 @@ { "suite": "interop", "case": "rfi/hpke-pq", - "spec": "\u00a77.2.1, \u00a78.2.3", + "spec": "§7.2.1, §8.2.3", "sender": "dart", "receiver": "go", "status": "pass", @@ -12130,7 +12205,7 @@ { "suite": "interop", "case": "rfa/sealed-box", - "spec": "\u00a77.2.2, \u00a78.3 (Blake2b-256)", + "spec": "§7.2.2, §8.3 (Blake2b-256)", "sender": "dart", "receiver": "go", "status": "pass", @@ -12139,7 +12214,7 @@ { "suite": "interop", "case": "rfd/sealed-box", - "spec": "\u00a77.3, \u00a78.3 (Blake2b-256)", + "spec": "§7.3, §8.3 (Blake2b-256)", "sender": "dart", "receiver": "go", "status": "pass", @@ -12148,7 +12223,7 @@ { "suite": "interop", "case": "hop/nested", - "spec": "\u00a74, \u00a79.4.15", + "spec": "§4, §9.4.15", "sender": "dart", "receiver": "go", "status": "pass", @@ -12157,7 +12232,7 @@ { "suite": "interop", "case": "hop/nested/padded", - "spec": "\u00a74, \u00a79.4.15 (Padding_Field before the inner message)", + "spec": "§4, §9.4.15 (Padding_Field before the inner message)", "sender": "dart", "receiver": "go", "status": "pass", @@ -12166,7 +12241,7 @@ { "suite": "interop", "case": "hop/nested/signed-only-inner", - "spec": "\u00a74 (a signed-only inner message is permitted)", + "spec": "§4 (a signed-only inner message is permitted)", "sender": "dart", "receiver": "go", "status": "pass", @@ -12175,7 +12250,7 @@ { "suite": "interop", "case": "hop/routed-2-hops", - "spec": "\u00a75.3, \u00a79.4.16", + "spec": "§5.3, §9.4.16", "sender": "dart", "receiver": "go", "status": "pass", @@ -12184,7 +12259,7 @@ { "suite": "interop", "case": "hop/routed-long-hop-list", - "spec": "\u00a79.4.16 hop list over 4095 quadlets (--J#####)", + "spec": "§9.4.16 hop list over 4095 quadlets (--J#####)", "sender": "dart", "receiver": "go", "status": "pass", @@ -12193,7 +12268,7 @@ { "suite": "interop", "case": "rfi/hpke-base/long-reply-path", - "spec": "\u00a79.4.1 Reply_Path over 4095 quadlets (--J#####)", + "spec": "§9.4.1 Reply_Path over 4095 quadlets (--J#####)", "sender": "dart", "receiver": "go", "status": "pass", @@ -12202,7 +12277,7 @@ { "suite": "interop", "case": "hop/routed-12-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "dart", "receiver": "go", "status": "pass", @@ -12211,7 +12286,7 @@ { "suite": "interop", "case": "hop/routed-17-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "dart", "receiver": "go", "status": "pass", @@ -12220,7 +12295,7 @@ { "suite": "interop", "case": "scs/hpke-base/small", - "spec": "\u00a73.5, \u00a78.2, \u00a79.2.3", + "spec": "§3.5, §8.2, §9.2.3", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12229,7 +12304,7 @@ { "suite": "interop", "case": "scs/hpke-base/empty", - "spec": "\u00a79.2.3", + "spec": "§9.2.3", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12238,7 +12313,7 @@ { "suite": "interop", "case": "scs/hpke-base/2mib", - "spec": "\u00a79.1 long count codes (--E, --Z, 7AAF)", + "spec": "§9.1 long count codes (--E, --Z, 7AAF)", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12247,7 +12322,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-0", - "spec": "\u00a79.2.4", + "spec": "§9.2.4", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12256,7 +12331,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-1", - "spec": "\u00a79.2.4 lead pad 2 (6B)", + "spec": "§9.2.4 lead pad 2 (6B)", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12265,7 +12340,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-2", - "spec": "\u00a79.2.4 lead pad 1 (5B)", + "spec": "§9.2.4 lead pad 1 (5B)", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12274,7 +12349,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-3", - "spec": "\u00a79.2.4 lead pad 0 (4B)", + "spec": "§9.2.4 lead pad 0 (4B)", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12283,7 +12358,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12285", - "spec": "\u00a79.2.4 short max (4B__)", + "spec": "§9.2.4 short max (4B__)", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12292,7 +12367,7 @@ { "suite": "interop", "case": "scs/hpke-base/padding-12286", - "spec": "\u00a79.2.4 first long (9AAB)", + "spec": "§9.2.4 first long (9AAB)", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12301,7 +12376,7 @@ { "suite": "interop", "case": "scs/signed-only", - "spec": "\u00a73.5, \u00a79.2", + "spec": "§3.5, §9.2", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12310,7 +12385,7 @@ { "suite": "interop", "case": "scs/sealed-box", - "spec": "\u00a78.3, \u00a79.2.8", + "spec": "§8.3, §9.2.8", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12319,7 +12394,7 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-null", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR NULL)", + "spec": "§3.2, §8.2.2 (ESSR NULL)", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12328,7 +12403,7 @@ { "suite": "interop", "case": "scs/hpke-base/payload-sender-present", - "spec": "\u00a73.2, \u00a78.2.2 (ESSR present)", + "spec": "§3.2, §8.2.2 (ESSR present)", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12337,7 +12412,7 @@ { "suite": "interop", "case": "scs/hpke-base/long-vid", - "spec": "\u00a79.1 VID 7AAB####", + "spec": "§9.1 VID 7AAB####", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12346,7 +12421,7 @@ { "suite": "interop", "case": "scs/hpke-pq", - "spec": "\u00a78.2.3, \u00a79.5.2 (MLKEM768-X25519, ML-DSA-65)", + "spec": "§8.2.3, §9.5.2 (MLKEM768-X25519, ML-DSA-65)", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12355,7 +12430,7 @@ { "suite": "interop", "case": "ctl/hpke-base", - "spec": "\u00a79.3 XCTL", + "spec": "§9.3 XCTL", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12364,7 +12439,7 @@ { "suite": "interop", "case": "pad/hpke-base", - "spec": "\u00a77.5, \u00a79.4.7 XPAD", + "spec": "§7.5, §9.4.7 XPAD", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12373,7 +12448,7 @@ { "suite": "interop", "case": "pad/hpke-base/padded", - "spec": "\u00a77.5, \u00a79.4.7 XPAD with Padding_Field", + "spec": "§7.5, §9.4.7 XPAD with Padding_Field", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12382,7 +12457,7 @@ { "suite": "interop", "case": "rfi/hpke-base/direct", - "spec": "\u00a77.2.1, \u00a77.2.2, \u00a79.4.1", + "spec": "§7.2.1, §7.2.2, §9.4.1", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12391,7 +12466,7 @@ { "suite": "interop", "case": "rfi/hpke-base/reply-path", - "spec": "\u00a77.2.4, \u00a79.4.1 Reply_Path", + "spec": "§7.2.4, §9.4.1 Reply_Path", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12400,7 +12475,7 @@ { "suite": "interop", "case": "rfi/hpke-base/referral", - "spec": "\u00a77.2.5, \u00a79.4.1 Referral_Field and Signature_new", + "spec": "§7.2.5, §9.4.1 Referral_Field and Signature_new", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12409,7 +12484,7 @@ { "suite": "interop", "case": "rfi/sealed-box", - "spec": "\u00a77.2.1, \u00a78.3 (Blake2b-256 digest F)", + "spec": "§7.2.1, §8.3 (Blake2b-256 digest F)", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12418,7 +12493,7 @@ { "suite": "interop", "case": "rfa/hpke-base/echo-own-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2", + "spec": "§7.2.2, §9.4.2", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12427,7 +12502,7 @@ { "suite": "interop", "case": "rfa/hpke-base/answers-receiver-rfi", - "spec": "\u00a77.2.2, \u00a79.4.2 (cross-derived)", + "spec": "§7.2.2, §9.4.2 (cross-derived)", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12436,7 +12511,7 @@ { "suite": "interop", "case": "rfd/hpke-base", - "spec": "\u00a77.3, \u00a79.4.5", + "spec": "§7.3, §9.4.5", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12445,7 +12520,7 @@ { "suite": "interop", "case": "rfi/hpke-base/padded", - "spec": "\u00a77.2.1 (Padding_Field excluded from the SAID)", + "spec": "§7.2.1 (Padding_Field excluded from the SAID)", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12454,7 +12529,7 @@ { "suite": "interop", "case": "rfi/hpke-pq", - "spec": "\u00a77.2.1, \u00a78.2.3", + "spec": "§7.2.1, §8.2.3", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12463,7 +12538,7 @@ { "suite": "interop", "case": "rfa/sealed-box", - "spec": "\u00a77.2.2, \u00a78.3 (Blake2b-256)", + "spec": "§7.2.2, §8.3 (Blake2b-256)", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12472,7 +12547,7 @@ { "suite": "interop", "case": "rfd/sealed-box", - "spec": "\u00a77.3, \u00a78.3 (Blake2b-256)", + "spec": "§7.3, §8.3 (Blake2b-256)", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12481,7 +12556,7 @@ { "suite": "interop", "case": "hop/nested", - "spec": "\u00a74, \u00a79.4.15", + "spec": "§4, §9.4.15", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12490,7 +12565,7 @@ { "suite": "interop", "case": "hop/nested/padded", - "spec": "\u00a74, \u00a79.4.15 (Padding_Field before the inner message)", + "spec": "§4, §9.4.15 (Padding_Field before the inner message)", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12499,7 +12574,7 @@ { "suite": "interop", "case": "hop/nested/signed-only-inner", - "spec": "\u00a74 (a signed-only inner message is permitted)", + "spec": "§4 (a signed-only inner message is permitted)", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12508,7 +12583,7 @@ { "suite": "interop", "case": "hop/routed-2-hops", - "spec": "\u00a75.3, \u00a79.4.16", + "spec": "§5.3, §9.4.16", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12517,7 +12592,7 @@ { "suite": "interop", "case": "hop/routed-long-hop-list", - "spec": "\u00a79.4.16 hop list over 4095 quadlets (--J#####)", + "spec": "§9.4.16 hop list over 4095 quadlets (--J#####)", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12526,7 +12601,7 @@ { "suite": "interop", "case": "rfi/hpke-base/long-reply-path", - "spec": "\u00a79.4.1 Reply_Path over 4095 quadlets (--J#####)", + "spec": "§9.4.1 Reply_Path over 4095 quadlets (--J#####)", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12535,7 +12610,7 @@ { "suite": "interop", "case": "hop/routed-12-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12544,7 +12619,7 @@ { "suite": "interop", "case": "hop/routed-17-hops", - "spec": "\u00a75.3, \u00a79.4.16 (the spec sets no hop limit)", + "spec": "§5.3, §9.4.16 (the spec sets no hop limit)", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12553,7 +12628,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-affinidi-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -12568,7 +12643,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-affinidi-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -12585,7 +12660,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-affinidi-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -12600,7 +12675,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-affinidi-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -12609,7 +12684,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-affinidi-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -12618,7 +12693,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-affinidi-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -12633,7 +12708,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-affinidi-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -12650,7 +12725,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-affinidi-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -12665,7 +12740,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-affinidi-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -12674,7 +12749,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-affinidi-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -12683,7 +12758,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-affinidi-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", @@ -12698,7 +12773,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-affinidi-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", @@ -12715,7 +12790,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-affinidi-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", @@ -12730,7 +12805,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-affinidi-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "tsp-js", "receiver": "go", "status": "pass", @@ -12739,7 +12814,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-affinidi-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "tsp-js", "receiver": "dart", "status": "pass", @@ -12748,7 +12823,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-affinidi-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -12763,7 +12838,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-affinidi-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -12780,7 +12855,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-affinidi-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -12795,7 +12870,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-affinidi-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "go", "receiver": "go", "status": "pass", @@ -12804,7 +12879,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-affinidi-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "go", "receiver": "dart", "status": "pass", @@ -12813,7 +12888,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-affinidi-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -12828,7 +12903,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-affinidi-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -12845,7 +12920,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-affinidi-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -12860,7 +12935,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-affinidi-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "dart", "receiver": "go", "status": "pass", @@ -12869,7 +12944,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-affinidi-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "dart", "receiver": "dart", "status": "pass", @@ -12878,7 +12953,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-reference-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -12893,7 +12968,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-reference-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -12910,7 +12985,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-reference-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -12925,7 +13000,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-reference-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -12934,7 +13009,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-reference-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -12943,7 +13018,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-reference-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -12958,7 +13033,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-reference-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -12975,7 +13050,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-reference-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -12990,7 +13065,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-reference-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -12999,7 +13074,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-reference-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -13008,7 +13083,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-reference-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", @@ -13023,7 +13098,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-reference-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", @@ -13040,7 +13115,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-reference-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", @@ -13055,7 +13130,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-reference-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "tsp-js", "receiver": "go", "status": "pass", @@ -13064,7 +13139,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-reference-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "tsp-js", "receiver": "dart", "status": "pass", @@ -13073,7 +13148,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-reference-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -13088,7 +13163,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-reference-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -13105,7 +13180,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-reference-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -13120,7 +13195,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-reference-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "go", "receiver": "go", "status": "pass", @@ -13129,7 +13204,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-reference-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "go", "receiver": "dart", "status": "pass", @@ -13138,7 +13213,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-reference-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -13153,7 +13228,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-reference-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -13170,7 +13245,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-reference-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -13185,7 +13260,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-reference-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "dart", "receiver": "go", "status": "pass", @@ -13194,7 +13269,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-reference-rust", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "dart", "receiver": "dart", "status": "pass", @@ -13203,7 +13278,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-tsp-js", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -13218,7 +13293,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-tsp-js", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -13235,7 +13310,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-tsp-js", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -13250,7 +13325,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-tsp-js", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -13259,7 +13334,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-tsp-js", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -13268,7 +13343,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-tsp-js", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -13283,7 +13358,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-tsp-js", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -13300,7 +13375,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-tsp-js", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -13315,7 +13390,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-tsp-js", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -13324,7 +13399,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-tsp-js", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -13333,7 +13408,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-tsp-js", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", @@ -13348,7 +13423,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-tsp-js", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", @@ -13365,7 +13440,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-tsp-js", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", @@ -13380,7 +13455,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-tsp-js", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "tsp-js", "receiver": "go", "status": "pass", @@ -13389,7 +13464,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-tsp-js", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "tsp-js", "receiver": "dart", "status": "pass", @@ -13398,7 +13473,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-tsp-js", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -13413,7 +13488,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-tsp-js", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -13430,7 +13505,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-tsp-js", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -13445,7 +13520,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-tsp-js", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "go", "receiver": "go", "status": "pass", @@ -13454,7 +13529,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-tsp-js", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "go", "receiver": "dart", "status": "pass", @@ -13463,7 +13538,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-tsp-js", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -13478,7 +13553,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-tsp-js", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -13495,7 +13570,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-tsp-js", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -13510,7 +13585,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-tsp-js", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "dart", "receiver": "go", "status": "pass", @@ -13519,7 +13594,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-tsp-js", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "dart", "receiver": "dart", "status": "pass", @@ -13528,7 +13603,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-go", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -13543,7 +13618,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-go", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -13560,7 +13635,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-go", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -13575,7 +13650,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-go", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -13584,7 +13659,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-go", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -13593,7 +13668,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-go", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -13608,7 +13683,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-go", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -13625,7 +13700,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-go", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -13640,7 +13715,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-go", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -13649,7 +13724,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-go", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -13658,7 +13733,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-go", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", @@ -13673,7 +13748,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-go", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", @@ -13690,7 +13765,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-go", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", @@ -13705,7 +13780,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-go", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "tsp-js", "receiver": "go", "status": "pass", @@ -13714,7 +13789,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-go", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "tsp-js", "receiver": "dart", "status": "pass", @@ -13723,7 +13798,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-go", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -13738,7 +13813,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-go", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -13755,7 +13830,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-go", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -13770,7 +13845,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-go", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "go", "receiver": "go", "status": "pass", @@ -13779,7 +13854,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-go", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "go", "receiver": "dart", "status": "pass", @@ -13788,7 +13863,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-go", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -13803,7 +13878,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-go", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -13820,7 +13895,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-go", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -13835,7 +13910,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-go", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "dart", "receiver": "go", "status": "pass", @@ -13844,7 +13919,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-go", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "dart", "receiver": "dart", "status": "pass", @@ -13853,7 +13928,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-dart", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -13868,7 +13943,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-dart", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -13885,7 +13960,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-dart", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -13900,7 +13975,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-dart", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -13909,7 +13984,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-dart", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -13918,7 +13993,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-dart", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -13933,7 +14008,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-dart", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -13950,7 +14025,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-dart", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -13965,7 +14040,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-dart", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -13974,7 +14049,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-dart", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -13983,7 +14058,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-dart", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", @@ -13998,7 +14073,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-dart", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", @@ -14015,7 +14090,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-dart", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", @@ -14030,7 +14105,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-dart", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "tsp-js", "receiver": "go", "status": "pass", @@ -14039,7 +14114,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-dart", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "tsp-js", "receiver": "dart", "status": "pass", @@ -14048,7 +14123,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-dart", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -14063,7 +14138,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-dart", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -14080,7 +14155,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-dart", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -14095,7 +14170,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-dart", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "go", "receiver": "go", "status": "pass", @@ -14104,7 +14179,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-dart", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "go", "receiver": "dart", "status": "pass", @@ -14113,7 +14188,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-dart", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -14128,7 +14203,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-dart", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -14145,7 +14220,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-dart", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -14160,7 +14235,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-dart", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "dart", "receiver": "go", "status": "pass", @@ -14169,7 +14244,7 @@ { "suite": "interop", "case": "hop/nested-mixed/inner-by-dart", - "spec": "\u00a74, \u00a79.4.15 (three implementations)", + "spec": "§4, §9.4.15 (three implementations)", "sender": "dart", "receiver": "dart", "status": "pass", @@ -14178,7 +14253,7 @@ { "suite": "negative", "case": "self/hpke-base/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "self/hpke-base", "receiver": "affinidi-rust", "status": "pass", @@ -14187,7 +14262,7 @@ { "suite": "negative", "case": "self/hpke-base/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "self/hpke-base", "receiver": "affinidi-rust", "status": "pass", @@ -14196,7 +14271,7 @@ { "suite": "negative", "case": "self/hpke-base/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "self/hpke-base", "receiver": "affinidi-rust", "status": "pass", @@ -14205,7 +14280,7 @@ { "suite": "negative", "case": "self/hpke-base/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "self/hpke-base", "receiver": "affinidi-rust", "status": "pass", @@ -14214,7 +14289,7 @@ { "suite": "negative", "case": "self/hpke-base/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "self/hpke-base", "receiver": "affinidi-rust", "status": "pass", @@ -14223,7 +14298,7 @@ { "suite": "negative", "case": "self/hpke-base/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "self/hpke-base", "receiver": "affinidi-rust", "status": "pass", @@ -14232,7 +14307,7 @@ { "suite": "negative", "case": "self/hpke-base/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "self/hpke-base", "receiver": "affinidi-rust", "status": "pass", @@ -14241,7 +14316,7 @@ { "suite": "negative", "case": "self/hpke-base/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "self/hpke-base", "receiver": "affinidi-rust", "status": "pass", @@ -14250,7 +14325,7 @@ { "suite": "negative", "case": "self/hpke-base/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "self/hpke-base", "receiver": "affinidi-rust", "status": "pass", @@ -14259,7 +14334,7 @@ { "suite": "negative", "case": "self/hpke-base/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "self/hpke-base", "receiver": "affinidi-rust", "status": "pass", @@ -14268,7 +14343,7 @@ { "suite": "negative", "case": "self/hpke-base/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "self/hpke-base", "receiver": "affinidi-rust", "status": "pass", @@ -14277,7 +14352,7 @@ { "suite": "negative", "case": "self/hpke-base/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "self/hpke-base", "receiver": "affinidi-rust", "status": "pass", @@ -14286,7 +14361,7 @@ { "suite": "negative", "case": "self/hpke-base/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "self/hpke-base", "receiver": "affinidi-rust", "status": "pass", @@ -14295,7 +14370,7 @@ { "suite": "negative", "case": "self/hpke-base/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "self/hpke-base", "receiver": "affinidi-rust", "status": "pass", @@ -14304,7 +14379,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-hpke-base", "receiver": "affinidi-rust", "status": "pass", @@ -14313,7 +14388,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "vector/direct-hpke-base", "receiver": "affinidi-rust", "status": "pass", @@ -14322,7 +14397,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "vector/direct-hpke-base", "receiver": "affinidi-rust", "status": "pass", @@ -14331,7 +14406,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "vector/direct-hpke-base", "receiver": "affinidi-rust", "status": "pass", @@ -14340,7 +14415,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "vector/direct-hpke-base", "receiver": "affinidi-rust", "status": "pass", @@ -14349,7 +14424,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "vector/direct-hpke-base", "receiver": "affinidi-rust", "status": "pass", @@ -14358,7 +14433,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-hpke-base", "receiver": "affinidi-rust", "status": "pass", @@ -14367,7 +14442,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "vector/direct-hpke-base", "receiver": "affinidi-rust", "status": "pass", @@ -14376,7 +14451,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "vector/direct-hpke-base", "receiver": "affinidi-rust", "status": "pass", @@ -14385,7 +14460,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-hpke-base", "receiver": "affinidi-rust", "status": "pass", @@ -14394,7 +14469,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "vector/direct-hpke-base", "receiver": "affinidi-rust", "status": "pass", @@ -14403,7 +14478,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "vector/direct-hpke-base", "receiver": "affinidi-rust", "status": "pass", @@ -14412,7 +14487,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-hpke-base", "receiver": "affinidi-rust", "status": "pass", @@ -14421,7 +14496,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "vector/direct-hpke-base", "receiver": "affinidi-rust", "status": "pass", @@ -14430,7 +14505,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-signed-only", "receiver": "affinidi-rust", "status": "skip", @@ -14439,7 +14514,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "vector/direct-signed-only", "receiver": "affinidi-rust", "status": "pass", @@ -14448,7 +14523,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "vector/direct-signed-only", "receiver": "affinidi-rust", "status": "pass", @@ -14457,7 +14532,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "vector/direct-signed-only", "receiver": "affinidi-rust", "status": "pass", @@ -14466,7 +14541,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "vector/direct-signed-only", "receiver": "affinidi-rust", "status": "pass", @@ -14475,7 +14550,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "vector/direct-signed-only", "receiver": "affinidi-rust", "status": "pass", @@ -14484,7 +14559,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-signed-only", "receiver": "affinidi-rust", "status": "pass", @@ -14493,7 +14568,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "vector/direct-signed-only", "receiver": "affinidi-rust", "status": "pass", @@ -14502,7 +14577,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "vector/direct-signed-only", "receiver": "affinidi-rust", "status": "pass", @@ -14511,7 +14586,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-signed-only", "receiver": "affinidi-rust", "status": "pass", @@ -14520,7 +14595,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "vector/direct-signed-only", "receiver": "affinidi-rust", "status": "pass", @@ -14529,7 +14604,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "vector/direct-signed-only", "receiver": "affinidi-rust", "status": "pass", @@ -14538,7 +14613,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-signed-only", "receiver": "affinidi-rust", "status": "skip", @@ -14547,7 +14622,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "vector/direct-signed-only", "receiver": "affinidi-rust", "status": "pass", @@ -14556,7 +14631,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-sealed-box", "receiver": "affinidi-rust", "status": "pass", @@ -14565,7 +14640,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "vector/direct-sealed-box", "receiver": "affinidi-rust", "status": "pass", @@ -14574,7 +14649,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "vector/direct-sealed-box", "receiver": "affinidi-rust", "status": "pass", @@ -14583,7 +14658,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "vector/direct-sealed-box", "receiver": "affinidi-rust", "status": "pass", @@ -14592,7 +14667,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "vector/direct-sealed-box", "receiver": "affinidi-rust", "status": "pass", @@ -14601,7 +14676,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "vector/direct-sealed-box", "receiver": "affinidi-rust", "status": "pass", @@ -14610,7 +14685,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-sealed-box", "receiver": "affinidi-rust", "status": "pass", @@ -14619,7 +14694,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "vector/direct-sealed-box", "receiver": "affinidi-rust", "status": "pass", @@ -14628,7 +14703,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "vector/direct-sealed-box", "receiver": "affinidi-rust", "status": "pass", @@ -14637,7 +14712,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-sealed-box", "receiver": "affinidi-rust", "status": "pass", @@ -14646,7 +14721,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "vector/direct-sealed-box", "receiver": "affinidi-rust", "status": "pass", @@ -14655,7 +14730,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "vector/direct-sealed-box", "receiver": "affinidi-rust", "status": "pass", @@ -14664,7 +14739,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-sealed-box", "receiver": "affinidi-rust", "status": "pass", @@ -14673,7 +14748,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "vector/direct-sealed-box", "receiver": "affinidi-rust", "status": "pass", @@ -14682,7 +14757,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/control-rfi-direct", "receiver": "affinidi-rust", "status": "pass", @@ -14691,7 +14766,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "vector/control-rfi-direct", "receiver": "affinidi-rust", "status": "pass", @@ -14700,7 +14775,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "vector/control-rfi-direct", "receiver": "affinidi-rust", "status": "pass", @@ -14709,7 +14784,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "vector/control-rfi-direct", "receiver": "affinidi-rust", "status": "pass", @@ -14718,7 +14793,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "vector/control-rfi-direct", "receiver": "affinidi-rust", "status": "pass", @@ -14727,7 +14802,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "vector/control-rfi-direct", "receiver": "affinidi-rust", "status": "pass", @@ -14736,7 +14811,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/control-rfi-direct", "receiver": "affinidi-rust", "status": "pass", @@ -14745,7 +14820,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "vector/control-rfi-direct", "receiver": "affinidi-rust", "status": "pass", @@ -14754,7 +14829,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "vector/control-rfi-direct", "receiver": "affinidi-rust", "status": "pass", @@ -14763,7 +14838,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/control-rfi-direct", "receiver": "affinidi-rust", "status": "pass", @@ -14772,7 +14847,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "vector/control-rfi-direct", "receiver": "affinidi-rust", "status": "pass", @@ -14781,7 +14856,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "vector/control-rfi-direct", "receiver": "affinidi-rust", "status": "pass", @@ -14790,7 +14865,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/control-rfi-direct", "receiver": "affinidi-rust", "status": "pass", @@ -14799,7 +14874,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "vector/control-rfi-direct", "receiver": "affinidi-rust", "status": "pass", @@ -14808,7 +14883,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-hpke-base-pq", "receiver": "affinidi-rust", "status": "pass", @@ -14817,7 +14892,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "vector/direct-hpke-base-pq", "receiver": "affinidi-rust", "status": "pass", @@ -14826,7 +14901,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "vector/direct-hpke-base-pq", "receiver": "affinidi-rust", "status": "pass", @@ -14838,7 +14913,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "vector/direct-hpke-base-pq", "receiver": "affinidi-rust", "status": "pass", @@ -14847,7 +14922,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "vector/direct-hpke-base-pq", "receiver": "affinidi-rust", "status": "pass", @@ -14856,7 +14931,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "vector/direct-hpke-base-pq", "receiver": "affinidi-rust", "status": "pass", @@ -14865,7 +14940,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-hpke-base-pq", "receiver": "affinidi-rust", "status": "pass", @@ -14874,7 +14949,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "vector/direct-hpke-base-pq", "receiver": "affinidi-rust", "status": "pass", @@ -14883,7 +14958,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "vector/direct-hpke-base-pq", "receiver": "affinidi-rust", "status": "pass", @@ -14892,7 +14967,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-hpke-base-pq", "receiver": "affinidi-rust", "status": "pass", @@ -14901,7 +14976,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "vector/direct-hpke-base-pq", "receiver": "affinidi-rust", "status": "skip", @@ -14910,7 +14985,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "vector/direct-hpke-base-pq", "receiver": "affinidi-rust", "status": "pass", @@ -14919,7 +14994,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-hpke-base-pq", "receiver": "affinidi-rust", "status": "skip", @@ -14928,7 +15003,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "vector/direct-hpke-base-pq", "receiver": "affinidi-rust", "status": "skip", @@ -14937,7 +15012,7 @@ { "suite": "negative", "case": "resigned/signed-only-rfi/digest-tampered", - "spec": "\u00a77.2.1 (receiver recomputes the SAID)", + "spec": "§7.2.1 (receiver recomputes the SAID)", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -14946,7 +15021,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/non-canonical-lead-byte", - "spec": "\u00a73.7 (a receiver MUST reject non-zero lead/pad bits)", + "spec": "§3.7 (a receiver MUST reject non-zero lead/pad bits)", "sender": "vector (re-signed)", "receiver": "affinidi-rust", "status": "pass", @@ -14955,7 +15030,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/essr-sender-mismatch", - "spec": "\u00a73.7 step 7, \u00a78.2.2 (ESSR field MUST equal VID_sndr)", + "spec": "§3.7 step 7, §8.2.2 (ESSR field MUST equal VID_sndr)", "sender": "vector (re-signed)", "receiver": "affinidi-rust", "status": "pass", @@ -14964,7 +15039,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/payload-count-too-large", - "spec": "\u00a79.2 (-Z count must match the payload)", + "spec": "§9.2 (-Z count must match the payload)", "sender": "vector (re-signed)", "receiver": "affinidi-rust", "status": "pass", @@ -14973,7 +15048,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/xscs-body-h-group-json", - "spec": "tswg-tsp-specification#77; \u00a79.2.3 (XSCS body = -A## holding exactly one Bytes primitive)", + "spec": "tswg-tsp-specification#77; §9.2.3 (XSCS body = -A## holding exactly one Bytes primitive)", "sender": "vector (re-signed)", "receiver": "affinidi-rust", "status": "pass", @@ -14982,7 +15057,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/xscs-body-two-bytes-primitives", - "spec": "tswg-tsp-specification#77; \u00a79.2.3 (exactly one Bytes primitive)", + "spec": "tswg-tsp-specification#77; §9.2.3 (exactly one Bytes primitive)", "sender": "vector (re-signed)", "receiver": "affinidi-rust", "status": "pass", @@ -14991,7 +15066,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/xscs-body-data-after-stream", - "spec": "tswg-tsp-specification#77; \u00a79.2.3 (the -A## stream ends the payload frame)", + "spec": "tswg-tsp-specification#77; §9.2.3 (the -A## stream ends the payload frame)", "sender": "vector (re-signed)", "receiver": "affinidi-rust", "status": "pass", @@ -15000,7 +15075,7 @@ { "suite": "negative", "case": "self/hpke-base/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "self/hpke-base", "receiver": "reference-rust", "status": "pass", @@ -15009,7 +15084,7 @@ { "suite": "negative", "case": "self/hpke-base/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "self/hpke-base", "receiver": "reference-rust", "status": "pass", @@ -15018,7 +15093,7 @@ { "suite": "negative", "case": "self/hpke-base/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "self/hpke-base", "receiver": "reference-rust", "status": "pass", @@ -15027,7 +15102,7 @@ { "suite": "negative", "case": "self/hpke-base/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "self/hpke-base", "receiver": "reference-rust", "status": "pass", @@ -15036,7 +15111,7 @@ { "suite": "negative", "case": "self/hpke-base/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "self/hpke-base", "receiver": "reference-rust", "status": "pass", @@ -15045,7 +15120,7 @@ { "suite": "negative", "case": "self/hpke-base/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "self/hpke-base", "receiver": "reference-rust", "status": "pass", @@ -15054,7 +15129,7 @@ { "suite": "negative", "case": "self/hpke-base/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "self/hpke-base", "receiver": "reference-rust", "status": "pass", @@ -15063,7 +15138,7 @@ { "suite": "negative", "case": "self/hpke-base/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "self/hpke-base", "receiver": "reference-rust", "status": "fail", @@ -15074,7 +15149,7 @@ { "suite": "negative", "case": "self/hpke-base/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "self/hpke-base", "receiver": "reference-rust", "status": "pass", @@ -15083,7 +15158,7 @@ { "suite": "negative", "case": "self/hpke-base/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "self/hpke-base", "receiver": "reference-rust", "status": "pass", @@ -15092,7 +15167,7 @@ { "suite": "negative", "case": "self/hpke-base/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "self/hpke-base", "receiver": "reference-rust", "status": "pass", @@ -15101,7 +15176,7 @@ { "suite": "negative", "case": "self/hpke-base/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "self/hpke-base", "receiver": "reference-rust", "status": "pass", @@ -15110,7 +15185,7 @@ { "suite": "negative", "case": "self/hpke-base/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "self/hpke-base", "receiver": "reference-rust", "status": "pass", @@ -15119,7 +15194,7 @@ { "suite": "negative", "case": "self/hpke-base/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "self/hpke-base", "receiver": "reference-rust", "status": "pass", @@ -15128,7 +15203,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-hpke-base", "receiver": "reference-rust", "status": "pass", @@ -15137,7 +15212,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "vector/direct-hpke-base", "receiver": "reference-rust", "status": "pass", @@ -15146,7 +15221,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "vector/direct-hpke-base", "receiver": "reference-rust", "status": "pass", @@ -15155,7 +15230,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "vector/direct-hpke-base", "receiver": "reference-rust", "status": "pass", @@ -15164,7 +15239,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "vector/direct-hpke-base", "receiver": "reference-rust", "status": "pass", @@ -15173,7 +15248,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "vector/direct-hpke-base", "receiver": "reference-rust", "status": "pass", @@ -15182,7 +15257,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-hpke-base", "receiver": "reference-rust", "status": "pass", @@ -15191,7 +15266,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "vector/direct-hpke-base", "receiver": "reference-rust", "status": "fail", @@ -15202,7 +15277,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "vector/direct-hpke-base", "receiver": "reference-rust", "status": "pass", @@ -15211,7 +15286,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-hpke-base", "receiver": "reference-rust", "status": "pass", @@ -15220,7 +15295,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "vector/direct-hpke-base", "receiver": "reference-rust", "status": "pass", @@ -15229,7 +15304,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "vector/direct-hpke-base", "receiver": "reference-rust", "status": "pass", @@ -15238,7 +15313,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-hpke-base", "receiver": "reference-rust", "status": "pass", @@ -15247,7 +15322,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "vector/direct-hpke-base", "receiver": "reference-rust", "status": "pass", @@ -15256,7 +15331,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-signed-only", "receiver": "reference-rust", "status": "skip", @@ -15265,7 +15340,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "vector/direct-signed-only", "receiver": "reference-rust", "status": "pass", @@ -15274,7 +15349,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "vector/direct-signed-only", "receiver": "reference-rust", "status": "pass", @@ -15283,7 +15358,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "vector/direct-signed-only", "receiver": "reference-rust", "status": "pass", @@ -15292,7 +15367,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "vector/direct-signed-only", "receiver": "reference-rust", "status": "pass", @@ -15301,7 +15376,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "vector/direct-signed-only", "receiver": "reference-rust", "status": "pass", @@ -15310,7 +15385,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-signed-only", "receiver": "reference-rust", "status": "pass", @@ -15319,7 +15394,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "vector/direct-signed-only", "receiver": "reference-rust", "status": "fail", @@ -15330,7 +15405,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "vector/direct-signed-only", "receiver": "reference-rust", "status": "pass", @@ -15339,7 +15414,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-signed-only", "receiver": "reference-rust", "status": "pass", @@ -15348,7 +15423,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "vector/direct-signed-only", "receiver": "reference-rust", "status": "pass", @@ -15357,7 +15432,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "vector/direct-signed-only", "receiver": "reference-rust", "status": "pass", @@ -15366,7 +15441,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-signed-only", "receiver": "reference-rust", "status": "skip", @@ -15375,7 +15450,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "vector/direct-signed-only", "receiver": "reference-rust", "status": "pass", @@ -15384,7 +15459,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-sealed-box", "receiver": "reference-rust", "status": "pass", @@ -15393,7 +15468,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "vector/direct-sealed-box", "receiver": "reference-rust", "status": "pass", @@ -15402,7 +15477,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "vector/direct-sealed-box", "receiver": "reference-rust", "status": "pass", @@ -15411,7 +15486,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "vector/direct-sealed-box", "receiver": "reference-rust", "status": "pass", @@ -15420,7 +15495,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "vector/direct-sealed-box", "receiver": "reference-rust", "status": "pass", @@ -15429,7 +15504,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "vector/direct-sealed-box", "receiver": "reference-rust", "status": "pass", @@ -15438,7 +15513,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-sealed-box", "receiver": "reference-rust", "status": "pass", @@ -15447,7 +15522,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "vector/direct-sealed-box", "receiver": "reference-rust", "status": "fail", @@ -15458,7 +15533,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "vector/direct-sealed-box", "receiver": "reference-rust", "status": "pass", @@ -15467,7 +15542,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-sealed-box", "receiver": "reference-rust", "status": "pass", @@ -15476,7 +15551,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "vector/direct-sealed-box", "receiver": "reference-rust", "status": "pass", @@ -15485,7 +15560,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "vector/direct-sealed-box", "receiver": "reference-rust", "status": "pass", @@ -15494,7 +15569,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-sealed-box", "receiver": "reference-rust", "status": "pass", @@ -15503,7 +15578,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "vector/direct-sealed-box", "receiver": "reference-rust", "status": "pass", @@ -15512,7 +15587,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/control-rfi-direct", "receiver": "reference-rust", "status": "pass", @@ -15521,7 +15596,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "vector/control-rfi-direct", "receiver": "reference-rust", "status": "pass", @@ -15530,7 +15605,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "vector/control-rfi-direct", "receiver": "reference-rust", "status": "pass", @@ -15539,7 +15614,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "vector/control-rfi-direct", "receiver": "reference-rust", "status": "pass", @@ -15548,7 +15623,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "vector/control-rfi-direct", "receiver": "reference-rust", "status": "pass", @@ -15557,7 +15632,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "vector/control-rfi-direct", "receiver": "reference-rust", "status": "pass", @@ -15566,7 +15641,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/control-rfi-direct", "receiver": "reference-rust", "status": "pass", @@ -15575,7 +15650,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "vector/control-rfi-direct", "receiver": "reference-rust", "status": "fail", @@ -15586,7 +15661,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "vector/control-rfi-direct", "receiver": "reference-rust", "status": "pass", @@ -15595,7 +15670,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/control-rfi-direct", "receiver": "reference-rust", "status": "pass", @@ -15604,7 +15679,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "vector/control-rfi-direct", "receiver": "reference-rust", "status": "pass", @@ -15613,7 +15688,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "vector/control-rfi-direct", "receiver": "reference-rust", "status": "pass", @@ -15622,7 +15697,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/control-rfi-direct", "receiver": "reference-rust", "status": "pass", @@ -15631,7 +15706,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "vector/control-rfi-direct", "receiver": "reference-rust", "status": "pass", @@ -15640,7 +15715,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-hpke-base-pq", "receiver": "reference-rust", "status": "pass", @@ -15649,7 +15724,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "vector/direct-hpke-base-pq", "receiver": "reference-rust", "status": "pass", @@ -15658,7 +15733,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "vector/direct-hpke-base-pq", "receiver": "reference-rust", "status": "pass", @@ -15667,7 +15742,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "vector/direct-hpke-base-pq", "receiver": "reference-rust", "status": "pass", @@ -15676,7 +15751,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "vector/direct-hpke-base-pq", "receiver": "reference-rust", "status": "pass", @@ -15685,7 +15760,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "vector/direct-hpke-base-pq", "receiver": "reference-rust", "status": "pass", @@ -15694,7 +15769,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-hpke-base-pq", "receiver": "reference-rust", "status": "pass", @@ -15703,7 +15778,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "vector/direct-hpke-base-pq", "receiver": "reference-rust", "status": "fail", @@ -15714,7 +15789,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "vector/direct-hpke-base-pq", "receiver": "reference-rust", "status": "pass", @@ -15723,7 +15798,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-hpke-base-pq", "receiver": "reference-rust", "status": "pass", @@ -15732,7 +15807,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "vector/direct-hpke-base-pq", "receiver": "reference-rust", "status": "skip", @@ -15741,7 +15816,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "vector/direct-hpke-base-pq", "receiver": "reference-rust", "status": "pass", @@ -15750,7 +15825,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-hpke-base-pq", "receiver": "reference-rust", "status": "skip", @@ -15759,7 +15834,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "vector/direct-hpke-base-pq", "receiver": "reference-rust", "status": "skip", @@ -15768,7 +15843,7 @@ { "suite": "negative", "case": "resigned/signed-only-rfi/digest-tampered", - "spec": "\u00a77.2.1 (receiver recomputes the SAID)", + "spec": "§7.2.1 (receiver recomputes the SAID)", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "skip", @@ -15777,7 +15852,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/non-canonical-lead-byte", - "spec": "\u00a73.7 (a receiver MUST reject non-zero lead/pad bits)", + "spec": "§3.7 (a receiver MUST reject non-zero lead/pad bits)", "sender": "vector (re-signed)", "receiver": "reference-rust", "status": "fail", @@ -15788,7 +15863,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/essr-sender-mismatch", - "spec": "\u00a73.7 step 7, \u00a78.2.2 (ESSR field MUST equal VID_sndr)", + "spec": "§3.7 step 7, §8.2.2 (ESSR field MUST equal VID_sndr)", "sender": "vector (re-signed)", "receiver": "reference-rust", "status": "fail", @@ -15799,7 +15874,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/payload-count-too-large", - "spec": "\u00a79.2 (-Z count must match the payload)", + "spec": "§9.2 (-Z count must match the payload)", "sender": "vector (re-signed)", "receiver": "reference-rust", "status": "pass", @@ -15808,7 +15883,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/xscs-body-h-group-json", - "spec": "tswg-tsp-specification#77; \u00a79.2.3 (XSCS body = -A## holding exactly one Bytes primitive)", + "spec": "tswg-tsp-specification#77; §9.2.3 (XSCS body = -A## holding exactly one Bytes primitive)", "sender": "vector (re-signed)", "receiver": "reference-rust", "status": "pass", @@ -15817,7 +15892,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/xscs-body-two-bytes-primitives", - "spec": "tswg-tsp-specification#77; \u00a79.2.3 (exactly one Bytes primitive)", + "spec": "tswg-tsp-specification#77; §9.2.3 (exactly one Bytes primitive)", "sender": "vector (re-signed)", "receiver": "reference-rust", "status": "pass", @@ -15826,7 +15901,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/xscs-body-data-after-stream", - "spec": "tswg-tsp-specification#77; \u00a79.2.3 (the -A## stream ends the payload frame)", + "spec": "tswg-tsp-specification#77; §9.2.3 (the -A## stream ends the payload frame)", "sender": "vector (re-signed)", "receiver": "reference-rust", "status": "pass", @@ -15835,7 +15910,7 @@ { "suite": "negative", "case": "self/hpke-base/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "self/hpke-base", "receiver": "tsp-js", "status": "pass", @@ -15844,7 +15919,7 @@ { "suite": "negative", "case": "self/hpke-base/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "self/hpke-base", "receiver": "tsp-js", "status": "pass", @@ -15853,7 +15928,7 @@ { "suite": "negative", "case": "self/hpke-base/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "self/hpke-base", "receiver": "tsp-js", "status": "pass", @@ -15862,7 +15937,7 @@ { "suite": "negative", "case": "self/hpke-base/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "self/hpke-base", "receiver": "tsp-js", "status": "pass", @@ -15871,7 +15946,7 @@ { "suite": "negative", "case": "self/hpke-base/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "self/hpke-base", "receiver": "tsp-js", "status": "pass", @@ -15880,7 +15955,7 @@ { "suite": "negative", "case": "self/hpke-base/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "self/hpke-base", "receiver": "tsp-js", "status": "pass", @@ -15889,7 +15964,7 @@ { "suite": "negative", "case": "self/hpke-base/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "self/hpke-base", "receiver": "tsp-js", "status": "pass", @@ -15898,7 +15973,7 @@ { "suite": "negative", "case": "self/hpke-base/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "self/hpke-base", "receiver": "tsp-js", "status": "pass", @@ -15907,7 +15982,7 @@ { "suite": "negative", "case": "self/hpke-base/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "self/hpke-base", "receiver": "tsp-js", "status": "pass", @@ -15916,7 +15991,7 @@ { "suite": "negative", "case": "self/hpke-base/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "self/hpke-base", "receiver": "tsp-js", "status": "pass", @@ -15925,7 +16000,7 @@ { "suite": "negative", "case": "self/hpke-base/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "self/hpke-base", "receiver": "tsp-js", "status": "pass", @@ -15934,7 +16009,7 @@ { "suite": "negative", "case": "self/hpke-base/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "self/hpke-base", "receiver": "tsp-js", "status": "pass", @@ -15943,7 +16018,7 @@ { "suite": "negative", "case": "self/hpke-base/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "self/hpke-base", "receiver": "tsp-js", "status": "pass", @@ -15952,7 +16027,7 @@ { "suite": "negative", "case": "self/hpke-base/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "self/hpke-base", "receiver": "tsp-js", "status": "pass", @@ -15961,7 +16036,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-hpke-base", "receiver": "tsp-js", "status": "pass", @@ -15970,7 +16045,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "vector/direct-hpke-base", "receiver": "tsp-js", "status": "pass", @@ -15979,7 +16054,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "vector/direct-hpke-base", "receiver": "tsp-js", "status": "pass", @@ -15988,7 +16063,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "vector/direct-hpke-base", "receiver": "tsp-js", "status": "pass", @@ -15997,7 +16072,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "vector/direct-hpke-base", "receiver": "tsp-js", "status": "pass", @@ -16006,7 +16081,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "vector/direct-hpke-base", "receiver": "tsp-js", "status": "pass", @@ -16015,7 +16090,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-hpke-base", "receiver": "tsp-js", "status": "pass", @@ -16024,7 +16099,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "vector/direct-hpke-base", "receiver": "tsp-js", "status": "pass", @@ -16033,7 +16108,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "vector/direct-hpke-base", "receiver": "tsp-js", "status": "pass", @@ -16042,7 +16117,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-hpke-base", "receiver": "tsp-js", "status": "pass", @@ -16051,7 +16126,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "vector/direct-hpke-base", "receiver": "tsp-js", "status": "pass", @@ -16060,7 +16135,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "vector/direct-hpke-base", "receiver": "tsp-js", "status": "pass", @@ -16069,7 +16144,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-hpke-base", "receiver": "tsp-js", "status": "pass", @@ -16078,7 +16153,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "vector/direct-hpke-base", "receiver": "tsp-js", "status": "pass", @@ -16087,7 +16162,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-signed-only", "receiver": "tsp-js", "status": "skip", @@ -16096,7 +16171,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "vector/direct-signed-only", "receiver": "tsp-js", "status": "skip", @@ -16105,7 +16180,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "vector/direct-signed-only", "receiver": "tsp-js", "status": "skip", @@ -16114,7 +16189,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "vector/direct-signed-only", "receiver": "tsp-js", "status": "skip", @@ -16123,7 +16198,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "vector/direct-signed-only", "receiver": "tsp-js", "status": "skip", @@ -16132,7 +16207,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "vector/direct-signed-only", "receiver": "tsp-js", "status": "skip", @@ -16141,7 +16216,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-signed-only", "receiver": "tsp-js", "status": "skip", @@ -16150,7 +16225,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "vector/direct-signed-only", "receiver": "tsp-js", "status": "skip", @@ -16159,7 +16234,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "vector/direct-signed-only", "receiver": "tsp-js", "status": "skip", @@ -16168,7 +16243,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-signed-only", "receiver": "tsp-js", "status": "skip", @@ -16177,7 +16252,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "vector/direct-signed-only", "receiver": "tsp-js", "status": "skip", @@ -16186,7 +16261,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "vector/direct-signed-only", "receiver": "tsp-js", "status": "skip", @@ -16195,7 +16270,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-signed-only", "receiver": "tsp-js", "status": "skip", @@ -16204,7 +16279,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "vector/direct-signed-only", "receiver": "tsp-js", "status": "skip", @@ -16213,7 +16288,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-sealed-box", "receiver": "tsp-js", "status": "skip", @@ -16222,7 +16297,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "vector/direct-sealed-box", "receiver": "tsp-js", "status": "skip", @@ -16231,7 +16306,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "vector/direct-sealed-box", "receiver": "tsp-js", "status": "skip", @@ -16240,7 +16315,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "vector/direct-sealed-box", "receiver": "tsp-js", "status": "skip", @@ -16249,7 +16324,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "vector/direct-sealed-box", "receiver": "tsp-js", "status": "skip", @@ -16258,7 +16333,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "vector/direct-sealed-box", "receiver": "tsp-js", "status": "skip", @@ -16267,7 +16342,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-sealed-box", "receiver": "tsp-js", "status": "skip", @@ -16276,7 +16351,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "vector/direct-sealed-box", "receiver": "tsp-js", "status": "skip", @@ -16285,7 +16360,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "vector/direct-sealed-box", "receiver": "tsp-js", "status": "skip", @@ -16294,7 +16369,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-sealed-box", "receiver": "tsp-js", "status": "skip", @@ -16303,7 +16378,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "vector/direct-sealed-box", "receiver": "tsp-js", "status": "skip", @@ -16312,7 +16387,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "vector/direct-sealed-box", "receiver": "tsp-js", "status": "skip", @@ -16321,7 +16396,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-sealed-box", "receiver": "tsp-js", "status": "skip", @@ -16330,7 +16405,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "vector/direct-sealed-box", "receiver": "tsp-js", "status": "skip", @@ -16339,7 +16414,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/control-rfi-direct", "receiver": "tsp-js", "status": "pass", @@ -16348,7 +16423,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "vector/control-rfi-direct", "receiver": "tsp-js", "status": "pass", @@ -16357,7 +16432,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "vector/control-rfi-direct", "receiver": "tsp-js", "status": "pass", @@ -16366,7 +16441,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "vector/control-rfi-direct", "receiver": "tsp-js", "status": "pass", @@ -16375,7 +16450,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "vector/control-rfi-direct", "receiver": "tsp-js", "status": "pass", @@ -16384,7 +16459,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "vector/control-rfi-direct", "receiver": "tsp-js", "status": "pass", @@ -16393,7 +16468,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/control-rfi-direct", "receiver": "tsp-js", "status": "pass", @@ -16402,7 +16477,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "vector/control-rfi-direct", "receiver": "tsp-js", "status": "pass", @@ -16411,7 +16486,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "vector/control-rfi-direct", "receiver": "tsp-js", "status": "pass", @@ -16420,7 +16495,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/control-rfi-direct", "receiver": "tsp-js", "status": "pass", @@ -16429,7 +16504,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "vector/control-rfi-direct", "receiver": "tsp-js", "status": "pass", @@ -16438,7 +16513,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "vector/control-rfi-direct", "receiver": "tsp-js", "status": "pass", @@ -16447,7 +16522,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/control-rfi-direct", "receiver": "tsp-js", "status": "pass", @@ -16456,7 +16531,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "vector/control-rfi-direct", "receiver": "tsp-js", "status": "pass", @@ -16465,7 +16540,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-hpke-base-pq", "receiver": "tsp-js", "status": "skip", @@ -16474,7 +16549,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "vector/direct-hpke-base-pq", "receiver": "tsp-js", "status": "skip", @@ -16483,7 +16558,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "vector/direct-hpke-base-pq", "receiver": "tsp-js", "status": "skip", @@ -16492,7 +16567,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "vector/direct-hpke-base-pq", "receiver": "tsp-js", "status": "skip", @@ -16501,7 +16576,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "vector/direct-hpke-base-pq", "receiver": "tsp-js", "status": "skip", @@ -16510,7 +16585,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "vector/direct-hpke-base-pq", "receiver": "tsp-js", "status": "skip", @@ -16519,7 +16594,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-hpke-base-pq", "receiver": "tsp-js", "status": "skip", @@ -16528,7 +16603,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "vector/direct-hpke-base-pq", "receiver": "tsp-js", "status": "skip", @@ -16537,7 +16612,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "vector/direct-hpke-base-pq", "receiver": "tsp-js", "status": "skip", @@ -16546,7 +16621,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-hpke-base-pq", "receiver": "tsp-js", "status": "skip", @@ -16555,7 +16630,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "vector/direct-hpke-base-pq", "receiver": "tsp-js", "status": "skip", @@ -16564,7 +16639,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "vector/direct-hpke-base-pq", "receiver": "tsp-js", "status": "skip", @@ -16573,7 +16648,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-hpke-base-pq", "receiver": "tsp-js", "status": "skip", @@ -16582,7 +16657,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "vector/direct-hpke-base-pq", "receiver": "tsp-js", "status": "skip", @@ -16591,7 +16666,7 @@ { "suite": "negative", "case": "resigned/signed-only-rfi/digest-tampered", - "spec": "\u00a77.2.1 (receiver recomputes the SAID)", + "spec": "§7.2.1 (receiver recomputes the SAID)", "sender": "-", "receiver": "tsp-js", "status": "skip", @@ -16600,7 +16675,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/non-canonical-lead-byte", - "spec": "\u00a73.7 (a receiver MUST reject non-zero lead/pad bits)", + "spec": "§3.7 (a receiver MUST reject non-zero lead/pad bits)", "sender": "vector (re-signed)", "receiver": "tsp-js", "status": "skip", @@ -16609,7 +16684,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/essr-sender-mismatch", - "spec": "\u00a73.7 step 7, \u00a78.2.2 (ESSR field MUST equal VID_sndr)", + "spec": "§3.7 step 7, §8.2.2 (ESSR field MUST equal VID_sndr)", "sender": "vector (re-signed)", "receiver": "tsp-js", "status": "skip", @@ -16618,7 +16693,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/payload-count-too-large", - "spec": "\u00a79.2 (-Z count must match the payload)", + "spec": "§9.2 (-Z count must match the payload)", "sender": "vector (re-signed)", "receiver": "tsp-js", "status": "skip", @@ -16627,7 +16702,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/xscs-body-h-group-json", - "spec": "tswg-tsp-specification#77; \u00a79.2.3 (XSCS body = -A## holding exactly one Bytes primitive)", + "spec": "tswg-tsp-specification#77; §9.2.3 (XSCS body = -A## holding exactly one Bytes primitive)", "sender": "vector (re-signed)", "receiver": "tsp-js", "status": "skip", @@ -16636,7 +16711,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/xscs-body-two-bytes-primitives", - "spec": "tswg-tsp-specification#77; \u00a79.2.3 (exactly one Bytes primitive)", + "spec": "tswg-tsp-specification#77; §9.2.3 (exactly one Bytes primitive)", "sender": "vector (re-signed)", "receiver": "tsp-js", "status": "skip", @@ -16645,7 +16720,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/xscs-body-data-after-stream", - "spec": "tswg-tsp-specification#77; \u00a79.2.3 (the -A## stream ends the payload frame)", + "spec": "tswg-tsp-specification#77; §9.2.3 (the -A## stream ends the payload frame)", "sender": "vector (re-signed)", "receiver": "tsp-js", "status": "skip", @@ -16654,7 +16729,7 @@ { "suite": "negative", "case": "self/hpke-base/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "self/hpke-base", "receiver": "go", "status": "pass", @@ -16663,7 +16738,7 @@ { "suite": "negative", "case": "self/hpke-base/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "self/hpke-base", "receiver": "go", "status": "pass", @@ -16672,7 +16747,7 @@ { "suite": "negative", "case": "self/hpke-base/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "self/hpke-base", "receiver": "go", "status": "pass", @@ -16681,7 +16756,7 @@ { "suite": "negative", "case": "self/hpke-base/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "self/hpke-base", "receiver": "go", "status": "pass", @@ -16690,7 +16765,7 @@ { "suite": "negative", "case": "self/hpke-base/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "self/hpke-base", "receiver": "go", "status": "pass", @@ -16699,7 +16774,7 @@ { "suite": "negative", "case": "self/hpke-base/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "self/hpke-base", "receiver": "go", "status": "pass", @@ -16708,7 +16783,7 @@ { "suite": "negative", "case": "self/hpke-base/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "self/hpke-base", "receiver": "go", "status": "pass", @@ -16717,7 +16792,7 @@ { "suite": "negative", "case": "self/hpke-base/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "self/hpke-base", "receiver": "go", "status": "pass", @@ -16726,7 +16801,7 @@ { "suite": "negative", "case": "self/hpke-base/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "self/hpke-base", "receiver": "go", "status": "pass", @@ -16735,7 +16810,7 @@ { "suite": "negative", "case": "self/hpke-base/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "self/hpke-base", "receiver": "go", "status": "pass", @@ -16744,7 +16819,7 @@ { "suite": "negative", "case": "self/hpke-base/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "self/hpke-base", "receiver": "go", "status": "pass", @@ -16756,7 +16831,7 @@ { "suite": "negative", "case": "self/hpke-base/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "self/hpke-base", "receiver": "go", "status": "pass", @@ -16765,7 +16840,7 @@ { "suite": "negative", "case": "self/hpke-base/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "self/hpke-base", "receiver": "go", "status": "pass", @@ -16774,7 +16849,7 @@ { "suite": "negative", "case": "self/hpke-base/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "self/hpke-base", "receiver": "go", "status": "pass", @@ -16783,7 +16858,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-hpke-base", "receiver": "go", "status": "pass", @@ -16792,7 +16867,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "vector/direct-hpke-base", "receiver": "go", "status": "pass", @@ -16801,7 +16876,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "vector/direct-hpke-base", "receiver": "go", "status": "pass", @@ -16810,7 +16885,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "vector/direct-hpke-base", "receiver": "go", "status": "pass", @@ -16819,7 +16894,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "vector/direct-hpke-base", "receiver": "go", "status": "pass", @@ -16828,7 +16903,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "vector/direct-hpke-base", "receiver": "go", "status": "pass", @@ -16837,7 +16912,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-hpke-base", "receiver": "go", "status": "pass", @@ -16846,7 +16921,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "vector/direct-hpke-base", "receiver": "go", "status": "pass", @@ -16855,7 +16930,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "vector/direct-hpke-base", "receiver": "go", "status": "pass", @@ -16864,7 +16939,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-hpke-base", "receiver": "go", "status": "pass", @@ -16873,7 +16948,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "vector/direct-hpke-base", "receiver": "go", "status": "pass", @@ -16885,7 +16960,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "vector/direct-hpke-base", "receiver": "go", "status": "pass", @@ -16894,7 +16969,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-hpke-base", "receiver": "go", "status": "pass", @@ -16903,7 +16978,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "vector/direct-hpke-base", "receiver": "go", "status": "pass", @@ -16912,7 +16987,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-signed-only", "receiver": "go", "status": "skip", @@ -16921,7 +16996,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "vector/direct-signed-only", "receiver": "go", "status": "pass", @@ -16930,7 +17005,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "vector/direct-signed-only", "receiver": "go", "status": "pass", @@ -16939,7 +17014,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "vector/direct-signed-only", "receiver": "go", "status": "pass", @@ -16948,7 +17023,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "vector/direct-signed-only", "receiver": "go", "status": "pass", @@ -16957,7 +17032,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "vector/direct-signed-only", "receiver": "go", "status": "pass", @@ -16966,7 +17041,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-signed-only", "receiver": "go", "status": "pass", @@ -16975,7 +17050,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "vector/direct-signed-only", "receiver": "go", "status": "pass", @@ -16984,7 +17059,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "vector/direct-signed-only", "receiver": "go", "status": "pass", @@ -16993,7 +17068,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-signed-only", "receiver": "go", "status": "pass", @@ -17002,7 +17077,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "vector/direct-signed-only", "receiver": "go", "status": "pass", @@ -17014,7 +17089,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "vector/direct-signed-only", "receiver": "go", "status": "pass", @@ -17023,7 +17098,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-signed-only", "receiver": "go", "status": "skip", @@ -17032,7 +17107,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "vector/direct-signed-only", "receiver": "go", "status": "pass", @@ -17041,7 +17116,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-sealed-box", "receiver": "go", "status": "pass", @@ -17050,7 +17125,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "vector/direct-sealed-box", "receiver": "go", "status": "pass", @@ -17059,7 +17134,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "vector/direct-sealed-box", "receiver": "go", "status": "pass", @@ -17068,7 +17143,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "vector/direct-sealed-box", "receiver": "go", "status": "pass", @@ -17077,7 +17152,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "vector/direct-sealed-box", "receiver": "go", "status": "pass", @@ -17086,7 +17161,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "vector/direct-sealed-box", "receiver": "go", "status": "pass", @@ -17095,7 +17170,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-sealed-box", "receiver": "go", "status": "pass", @@ -17104,7 +17179,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "vector/direct-sealed-box", "receiver": "go", "status": "pass", @@ -17113,7 +17188,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "vector/direct-sealed-box", "receiver": "go", "status": "pass", @@ -17122,7 +17197,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-sealed-box", "receiver": "go", "status": "pass", @@ -17131,7 +17206,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "vector/direct-sealed-box", "receiver": "go", "status": "pass", @@ -17143,7 +17218,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "vector/direct-sealed-box", "receiver": "go", "status": "pass", @@ -17152,7 +17227,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-sealed-box", "receiver": "go", "status": "pass", @@ -17161,7 +17236,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "vector/direct-sealed-box", "receiver": "go", "status": "pass", @@ -17170,7 +17245,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/control-rfi-direct", "receiver": "go", "status": "pass", @@ -17179,7 +17254,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "vector/control-rfi-direct", "receiver": "go", "status": "pass", @@ -17188,7 +17263,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "vector/control-rfi-direct", "receiver": "go", "status": "pass", @@ -17197,7 +17272,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "vector/control-rfi-direct", "receiver": "go", "status": "pass", @@ -17206,7 +17281,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "vector/control-rfi-direct", "receiver": "go", "status": "pass", @@ -17215,7 +17290,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "vector/control-rfi-direct", "receiver": "go", "status": "pass", @@ -17224,7 +17299,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/control-rfi-direct", "receiver": "go", "status": "pass", @@ -17233,7 +17308,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "vector/control-rfi-direct", "receiver": "go", "status": "pass", @@ -17242,7 +17317,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "vector/control-rfi-direct", "receiver": "go", "status": "pass", @@ -17251,7 +17326,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/control-rfi-direct", "receiver": "go", "status": "pass", @@ -17260,7 +17335,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "vector/control-rfi-direct", "receiver": "go", "status": "pass", @@ -17272,7 +17347,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "vector/control-rfi-direct", "receiver": "go", "status": "pass", @@ -17281,7 +17356,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/control-rfi-direct", "receiver": "go", "status": "pass", @@ -17290,7 +17365,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "vector/control-rfi-direct", "receiver": "go", "status": "pass", @@ -17299,7 +17374,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-hpke-base-pq", "receiver": "go", "status": "pass", @@ -17308,7 +17383,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "vector/direct-hpke-base-pq", "receiver": "go", "status": "pass", @@ -17317,7 +17392,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "vector/direct-hpke-base-pq", "receiver": "go", "status": "pass", @@ -17329,7 +17404,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "vector/direct-hpke-base-pq", "receiver": "go", "status": "pass", @@ -17338,7 +17413,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "vector/direct-hpke-base-pq", "receiver": "go", "status": "pass", @@ -17347,7 +17422,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "vector/direct-hpke-base-pq", "receiver": "go", "status": "pass", @@ -17356,7 +17431,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-hpke-base-pq", "receiver": "go", "status": "pass", @@ -17365,7 +17440,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "vector/direct-hpke-base-pq", "receiver": "go", "status": "pass", @@ -17374,7 +17449,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "vector/direct-hpke-base-pq", "receiver": "go", "status": "pass", @@ -17383,7 +17458,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-hpke-base-pq", "receiver": "go", "status": "pass", @@ -17392,7 +17467,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "vector/direct-hpke-base-pq", "receiver": "go", "status": "skip", @@ -17401,7 +17476,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "vector/direct-hpke-base-pq", "receiver": "go", "status": "pass", @@ -17410,7 +17485,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-hpke-base-pq", "receiver": "go", "status": "skip", @@ -17419,7 +17494,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "vector/direct-hpke-base-pq", "receiver": "go", "status": "skip", @@ -17428,7 +17503,7 @@ { "suite": "negative", "case": "resigned/signed-only-rfi/digest-tampered", - "spec": "\u00a77.2.1 (receiver recomputes the SAID)", + "spec": "§7.2.1 (receiver recomputes the SAID)", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -17437,7 +17512,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/non-canonical-lead-byte", - "spec": "\u00a73.7 (a receiver MUST reject non-zero lead/pad bits)", + "spec": "§3.7 (a receiver MUST reject non-zero lead/pad bits)", "sender": "vector (re-signed)", "receiver": "go", "status": "pass", @@ -17446,7 +17521,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/essr-sender-mismatch", - "spec": "\u00a73.7 step 7, \u00a78.2.2 (ESSR field MUST equal VID_sndr)", + "spec": "§3.7 step 7, §8.2.2 (ESSR field MUST equal VID_sndr)", "sender": "vector (re-signed)", "receiver": "go", "status": "pass", @@ -17455,7 +17530,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/payload-count-too-large", - "spec": "\u00a79.2 (-Z count must match the payload)", + "spec": "§9.2 (-Z count must match the payload)", "sender": "vector (re-signed)", "receiver": "go", "status": "pass", @@ -17464,7 +17539,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/xscs-body-h-group-json", - "spec": "tswg-tsp-specification#77; \u00a79.2.3 (XSCS body = -A## holding exactly one Bytes primitive)", + "spec": "tswg-tsp-specification#77; §9.2.3 (XSCS body = -A## holding exactly one Bytes primitive)", "sender": "vector (re-signed)", "receiver": "go", "status": "pass", @@ -17473,7 +17548,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/xscs-body-two-bytes-primitives", - "spec": "tswg-tsp-specification#77; \u00a79.2.3 (exactly one Bytes primitive)", + "spec": "tswg-tsp-specification#77; §9.2.3 (exactly one Bytes primitive)", "sender": "vector (re-signed)", "receiver": "go", "status": "pass", @@ -17482,7 +17557,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/xscs-body-data-after-stream", - "spec": "tswg-tsp-specification#77; \u00a79.2.3 (the -A## stream ends the payload frame)", + "spec": "tswg-tsp-specification#77; §9.2.3 (the -A## stream ends the payload frame)", "sender": "vector (re-signed)", "receiver": "go", "status": "pass", @@ -17491,7 +17566,7 @@ { "suite": "negative", "case": "self/hpke-base/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "self/hpke-base", "receiver": "dart", "status": "pass", @@ -17500,7 +17575,7 @@ { "suite": "negative", "case": "self/hpke-base/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "self/hpke-base", "receiver": "dart", "status": "pass", @@ -17509,7 +17584,7 @@ { "suite": "negative", "case": "self/hpke-base/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "self/hpke-base", "receiver": "dart", "status": "pass", @@ -17518,7 +17593,7 @@ { "suite": "negative", "case": "self/hpke-base/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "self/hpke-base", "receiver": "dart", "status": "pass", @@ -17527,7 +17602,7 @@ { "suite": "negative", "case": "self/hpke-base/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "self/hpke-base", "receiver": "dart", "status": "pass", @@ -17536,7 +17611,7 @@ { "suite": "negative", "case": "self/hpke-base/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "self/hpke-base", "receiver": "dart", "status": "pass", @@ -17545,7 +17620,7 @@ { "suite": "negative", "case": "self/hpke-base/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "self/hpke-base", "receiver": "dart", "status": "pass", @@ -17554,7 +17629,7 @@ { "suite": "negative", "case": "self/hpke-base/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "self/hpke-base", "receiver": "dart", "status": "pass", @@ -17563,7 +17638,7 @@ { "suite": "negative", "case": "self/hpke-base/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "self/hpke-base", "receiver": "dart", "status": "pass", @@ -17572,7 +17647,7 @@ { "suite": "negative", "case": "self/hpke-base/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "self/hpke-base", "receiver": "dart", "status": "pass", @@ -17581,7 +17656,7 @@ { "suite": "negative", "case": "self/hpke-base/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "self/hpke-base", "receiver": "dart", "status": "pass", @@ -17590,7 +17665,7 @@ { "suite": "negative", "case": "self/hpke-base/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "self/hpke-base", "receiver": "dart", "status": "pass", @@ -17599,7 +17674,7 @@ { "suite": "negative", "case": "self/hpke-base/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "self/hpke-base", "receiver": "dart", "status": "pass", @@ -17608,7 +17683,7 @@ { "suite": "negative", "case": "self/hpke-base/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "self/hpke-base", "receiver": "dart", "status": "pass", @@ -17617,7 +17692,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-hpke-base", "receiver": "dart", "status": "pass", @@ -17626,7 +17701,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "vector/direct-hpke-base", "receiver": "dart", "status": "pass", @@ -17635,7 +17710,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "vector/direct-hpke-base", "receiver": "dart", "status": "pass", @@ -17644,7 +17719,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "vector/direct-hpke-base", "receiver": "dart", "status": "pass", @@ -17653,7 +17728,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "vector/direct-hpke-base", "receiver": "dart", "status": "pass", @@ -17662,7 +17737,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "vector/direct-hpke-base", "receiver": "dart", "status": "pass", @@ -17671,7 +17746,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-hpke-base", "receiver": "dart", "status": "pass", @@ -17680,7 +17755,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "vector/direct-hpke-base", "receiver": "dart", "status": "pass", @@ -17689,7 +17764,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "vector/direct-hpke-base", "receiver": "dart", "status": "pass", @@ -17698,7 +17773,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-hpke-base", "receiver": "dart", "status": "pass", @@ -17707,7 +17782,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "vector/direct-hpke-base", "receiver": "dart", "status": "pass", @@ -17716,7 +17791,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "vector/direct-hpke-base", "receiver": "dart", "status": "pass", @@ -17725,7 +17800,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-hpke-base", "receiver": "dart", "status": "pass", @@ -17734,7 +17809,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "vector/direct-hpke-base", "receiver": "dart", "status": "pass", @@ -17743,7 +17818,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-signed-only", "receiver": "dart", "status": "skip", @@ -17752,7 +17827,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "vector/direct-signed-only", "receiver": "dart", "status": "pass", @@ -17761,7 +17836,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "vector/direct-signed-only", "receiver": "dart", "status": "pass", @@ -17770,7 +17845,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "vector/direct-signed-only", "receiver": "dart", "status": "pass", @@ -17779,7 +17854,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "vector/direct-signed-only", "receiver": "dart", "status": "pass", @@ -17788,7 +17863,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "vector/direct-signed-only", "receiver": "dart", "status": "pass", @@ -17797,7 +17872,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-signed-only", "receiver": "dart", "status": "pass", @@ -17806,7 +17881,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "vector/direct-signed-only", "receiver": "dart", "status": "pass", @@ -17815,7 +17890,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "vector/direct-signed-only", "receiver": "dart", "status": "pass", @@ -17824,7 +17899,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-signed-only", "receiver": "dart", "status": "pass", @@ -17833,7 +17908,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "vector/direct-signed-only", "receiver": "dart", "status": "pass", @@ -17842,7 +17917,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "vector/direct-signed-only", "receiver": "dart", "status": "pass", @@ -17851,7 +17926,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-signed-only", "receiver": "dart", "status": "skip", @@ -17860,7 +17935,7 @@ { "suite": "negative", "case": "vector/direct-signed-only/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "vector/direct-signed-only", "receiver": "dart", "status": "pass", @@ -17869,7 +17944,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-sealed-box", "receiver": "dart", "status": "pass", @@ -17878,7 +17953,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "vector/direct-sealed-box", "receiver": "dart", "status": "pass", @@ -17887,7 +17962,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "vector/direct-sealed-box", "receiver": "dart", "status": "pass", @@ -17896,7 +17971,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "vector/direct-sealed-box", "receiver": "dart", "status": "pass", @@ -17905,7 +17980,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "vector/direct-sealed-box", "receiver": "dart", "status": "pass", @@ -17914,7 +17989,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "vector/direct-sealed-box", "receiver": "dart", "status": "pass", @@ -17923,7 +17998,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-sealed-box", "receiver": "dart", "status": "pass", @@ -17932,7 +18007,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "vector/direct-sealed-box", "receiver": "dart", "status": "pass", @@ -17941,7 +18016,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "vector/direct-sealed-box", "receiver": "dart", "status": "pass", @@ -17950,7 +18025,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-sealed-box", "receiver": "dart", "status": "pass", @@ -17959,7 +18034,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "vector/direct-sealed-box", "receiver": "dart", "status": "pass", @@ -17968,7 +18043,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "vector/direct-sealed-box", "receiver": "dart", "status": "pass", @@ -17977,7 +18052,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-sealed-box", "receiver": "dart", "status": "pass", @@ -17986,7 +18061,7 @@ { "suite": "negative", "case": "vector/direct-sealed-box/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "vector/direct-sealed-box", "receiver": "dart", "status": "pass", @@ -17995,7 +18070,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/control-rfi-direct", "receiver": "dart", "status": "pass", @@ -18004,7 +18079,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "vector/control-rfi-direct", "receiver": "dart", "status": "pass", @@ -18013,7 +18088,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "vector/control-rfi-direct", "receiver": "dart", "status": "pass", @@ -18022,7 +18097,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "vector/control-rfi-direct", "receiver": "dart", "status": "pass", @@ -18031,7 +18106,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "vector/control-rfi-direct", "receiver": "dart", "status": "pass", @@ -18040,7 +18115,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "vector/control-rfi-direct", "receiver": "dart", "status": "pass", @@ -18049,7 +18124,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/control-rfi-direct", "receiver": "dart", "status": "pass", @@ -18058,7 +18133,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "vector/control-rfi-direct", "receiver": "dart", "status": "pass", @@ -18067,7 +18142,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "vector/control-rfi-direct", "receiver": "dart", "status": "pass", @@ -18076,7 +18151,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/control-rfi-direct", "receiver": "dart", "status": "pass", @@ -18085,7 +18160,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "vector/control-rfi-direct", "receiver": "dart", "status": "pass", @@ -18094,7 +18169,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "vector/control-rfi-direct", "receiver": "dart", "status": "pass", @@ -18103,7 +18178,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/control-rfi-direct", "receiver": "dart", "status": "pass", @@ -18112,7 +18187,7 @@ { "suite": "negative", "case": "vector/control-rfi-direct/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "vector/control-rfi-direct", "receiver": "dart", "status": "pass", @@ -18121,7 +18196,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/flip-ciphertext", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-hpke-base-pq", "receiver": "dart", "status": "pass", @@ -18130,7 +18205,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/flip-signature", - "spec": "\u00a73.4, \u00a73.7 step 5, \u00a79.5", + "spec": "§3.4, §3.7 step 5, §9.5", "sender": "vector/direct-hpke-base-pq", "receiver": "dart", "status": "pass", @@ -18139,7 +18214,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/flip-envelope-sender", - "spec": "\u00a73.7 steps 3\u20135, \u00a78.2.2 aad", + "spec": "§3.7 steps 3–5, §8.2.2 aad", "sender": "vector/direct-hpke-base-pq", "receiver": "dart", "status": "pass", @@ -18151,7 +18226,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/flip-version-minor", - "spec": "\u00a79.1 (MINOR is covered by the signature and aad)", + "spec": "§9.1 (MINOR is covered by the signature and aad)", "sender": "vector/direct-hpke-base-pq", "receiver": "dart", "status": "pass", @@ -18160,7 +18235,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/unknown-major-version", - "spec": "\u00a79.1 MAJOR gates processability", + "spec": "§9.1 MAJOR gates processability", "sender": "vector/direct-hpke-base-pq", "receiver": "dart", "status": "pass", @@ -18169,7 +18244,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/truncate-one-triplet", - "spec": "\u00a79.1 -E count, \u00a79.5", + "spec": "§9.1 -E count, §9.5", "sender": "vector/direct-hpke-base-pq", "receiver": "dart", "status": "pass", @@ -18178,7 +18253,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/truncate-half", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-hpke-base-pq", "receiver": "dart", "status": "pass", @@ -18187,7 +18262,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/trailing-bytes", - "spec": "\u00a79.1, \u00a79.5 (the attachment ends the message)", + "spec": "§9.1, §9.5 (the attachment ends the message)", "sender": "vector/direct-hpke-base-pq", "receiver": "dart", "status": "pass", @@ -18196,7 +18271,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/frame-count-too-large", - "spec": "\u00a79.1 (-E count must match the signable content)", + "spec": "§9.1 (-E count must match the signable content)", "sender": "vector/direct-hpke-base-pq", "receiver": "dart", "status": "pass", @@ -18205,7 +18280,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/frame-count-too-small", - "spec": "\u00a79.1", + "spec": "§9.1", "sender": "vector/direct-hpke-base-pq", "receiver": "dart", "status": "pass", @@ -18214,7 +18289,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/signature-index-nonzero", - "spec": "\u00a79.5.1 (B# names a key index the VID does not have; the index is not signed)", + "spec": "§9.5.1 (B# names a key index the VID does not have; the index is not signed)", "sender": "vector/direct-hpke-base-pq", "receiver": "dart", "status": "skip", @@ -18223,7 +18298,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/attachment-count-too-large", - "spec": "\u00a79.5 (-C## counts the attachment)", + "spec": "§9.5 (-C## counts the attachment)", "sender": "vector/direct-hpke-base-pq", "receiver": "dart", "status": "pass", @@ -18232,7 +18307,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/wrong-receiver-key", - "spec": "\u00a73.7 step 6, \u00a78.2.2", + "spec": "§3.7 step 6, §8.2.2", "sender": "vector/direct-hpke-base-pq", "receiver": "dart", "status": "skip", @@ -18241,7 +18316,7 @@ { "suite": "negative", "case": "vector/direct-hpke-base-pq/wrong-sender-key", - "spec": "\u00a73.7 step 5", + "spec": "§3.7 step 5", "sender": "vector/direct-hpke-base-pq", "receiver": "dart", "status": "skip", @@ -18250,7 +18325,7 @@ { "suite": "negative", "case": "resigned/signed-only-rfi/digest-tampered", - "spec": "\u00a77.2.1 (receiver recomputes the SAID)", + "spec": "§7.2.1 (receiver recomputes the SAID)", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -18259,7 +18334,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/non-canonical-lead-byte", - "spec": "\u00a73.7 (a receiver MUST reject non-zero lead/pad bits)", + "spec": "§3.7 (a receiver MUST reject non-zero lead/pad bits)", "sender": "vector (re-signed)", "receiver": "dart", "status": "pass", @@ -18268,7 +18343,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/essr-sender-mismatch", - "spec": "\u00a73.7 step 7, \u00a78.2.2 (ESSR field MUST equal VID_sndr)", + "spec": "§3.7 step 7, §8.2.2 (ESSR field MUST equal VID_sndr)", "sender": "vector (re-signed)", "receiver": "dart", "status": "pass", @@ -18277,7 +18352,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/payload-count-too-large", - "spec": "\u00a79.2 (-Z count must match the payload)", + "spec": "§9.2 (-Z count must match the payload)", "sender": "vector (re-signed)", "receiver": "dart", "status": "pass", @@ -18286,7 +18361,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/xscs-body-h-group-json", - "spec": "tswg-tsp-specification#77; \u00a79.2.3 (XSCS body = -A## holding exactly one Bytes primitive)", + "spec": "tswg-tsp-specification#77; §9.2.3 (XSCS body = -A## holding exactly one Bytes primitive)", "sender": "vector (re-signed)", "receiver": "dart", "status": "pass", @@ -18295,7 +18370,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/xscs-body-two-bytes-primitives", - "spec": "tswg-tsp-specification#77; \u00a79.2.3 (exactly one Bytes primitive)", + "spec": "tswg-tsp-specification#77; §9.2.3 (exactly one Bytes primitive)", "sender": "vector (re-signed)", "receiver": "dart", "status": "pass", @@ -18304,7 +18379,7 @@ { "suite": "negative", "case": "resigned/direct-signed-only/xscs-body-data-after-stream", - "spec": "tswg-tsp-specification#77; \u00a79.2.3 (the -A## stream ends the payload frame)", + "spec": "tswg-tsp-specification#77; §9.2.3 (the -A## stream ends the payload frame)", "sender": "vector (re-signed)", "receiver": "dart", "status": "pass", @@ -18313,7 +18388,7 @@ { "suite": "relationship", "case": "invite-accept-bidirectional", - "spec": "\u00a77.2.1, \u00a77.2.2", + "spec": "§7.2.1, §7.2.2", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -18322,7 +18397,7 @@ { "suite": "relationship", "case": "message-before-relationship-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -18331,7 +18406,7 @@ { "suite": "relationship", "case": "cancel-returns-to-none", - "spec": "\u00a77.3", + "spec": "§7.3", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -18340,7 +18415,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -18349,7 +18424,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -18358,7 +18433,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -18367,7 +18442,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -18376,7 +18451,7 @@ { "suite": "relationship", "case": "rfi-race-lower-digest-wins", - "spec": "\u00a77.2.3; tswg-tsp-specification#76 (raw bytes)", + "spec": "§7.2.3; tswg-tsp-specification#76 (raw bytes)", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", @@ -18385,25 +18460,25 @@ { "suite": "relationship", "case": "invite-race-raw-byte-order", - "spec": "tswg-tsp-specification#76; \u00a77.2.3 (raw digest bytes, not the CESR text)", + "spec": "tswg-tsp-specification#76; §7.2.3 (raw digest bytes, not the CESR text)", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", - "detail": "found after 21 invite pair(s): raw order and qb64 text order disagree" + "detail": "found after 47 invite pair(s): raw order and qb64 text order disagree" }, { "suite": "relationship", "case": "accept-unknown-digest-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "affinidi-rust", "receiver": "affinidi-rust", "status": "pass", - "detail": "affinidi-rust refused: [relationship] message discarded: accept from did:web:endpoint-b-73a1f3e5.conformance.example answers an invite we did not send" + "detail": "affinidi-rust refused: [relationship] message discarded: accept from did:web:endpoint-b-49c73334.conformance.example answers an invite we did not send" }, { "suite": "relationship", "case": "invite-accept-bidirectional", - "spec": "\u00a77.2.1, \u00a77.2.2", + "spec": "§7.2.1, §7.2.2", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -18412,16 +18487,16 @@ { "suite": "relationship", "case": "message-before-relationship-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", - "detail": "reference-rust refused: [relationship] Error: no relationship from did:web:endpoint-a-f542174a.conformance.example to did:web:endpoint-b-48dd64b0.conformance.example; the message is dropped" + "detail": "reference-rust refused: [relationship] Error: no relationship from did:web:endpoint-a-3b38225d.conformance.example to did:web:endpoint-b-dc0c84fc.conformance.example; the message is dropped" }, { "suite": "relationship", "case": "cancel-returns-to-none", - "spec": "\u00a77.3", + "spec": "§7.3", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -18430,7 +18505,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -18439,7 +18514,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -18448,7 +18523,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -18457,7 +18532,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -18466,7 +18541,7 @@ { "suite": "relationship", "case": "rfi-race-lower-digest-wins", - "spec": "\u00a77.2.3; tswg-tsp-specification#76 (raw bytes)", + "spec": "§7.2.3; tswg-tsp-specification#76 (raw bytes)", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", @@ -18475,25 +18550,25 @@ { "suite": "relationship", "case": "invite-race-raw-byte-order", - "spec": "tswg-tsp-specification#76; \u00a77.2.3 (raw digest bytes, not the CESR text)", + "spec": "tswg-tsp-specification#76; §7.2.3 (raw digest bytes, not the CESR text)", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", - "detail": "found after 30 invite pair(s): raw order and qb64 text order disagree" + "detail": "found after 37 invite pair(s): raw order and qb64 text order disagree" }, { "suite": "relationship", "case": "accept-unknown-digest-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "affinidi-rust", "receiver": "reference-rust", "status": "pass", - "detail": "affinidi-rust refused: [relationship] message discarded: accept from did:web:endpoint-b-ce6cc05b.conformance.example answers an invite we did not send" + "detail": "affinidi-rust refused: [relationship] message discarded: accept from did:web:endpoint-b-0378821e.conformance.example answers an invite we did not send" }, { "suite": "relationship", "case": "invite-accept-bidirectional", - "spec": "\u00a77.2.1, \u00a77.2.2", + "spec": "§7.2.1, §7.2.2", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -18502,7 +18577,7 @@ { "suite": "relationship", "case": "message-before-relationship-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -18511,7 +18586,7 @@ { "suite": "relationship", "case": "cancel-returns-to-none", - "spec": "\u00a77.3", + "spec": "§7.3", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -18520,7 +18595,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -18529,7 +18604,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -18538,7 +18613,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -18547,7 +18622,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -18556,7 +18631,7 @@ { "suite": "relationship", "case": "rfi-race-lower-digest-wins", - "spec": "\u00a77.2.3; tswg-tsp-specification#76 (raw bytes)", + "spec": "§7.2.3; tswg-tsp-specification#76 (raw bytes)", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", @@ -18565,25 +18640,25 @@ { "suite": "relationship", "case": "invite-race-raw-byte-order", - "spec": "tswg-tsp-specification#76; \u00a77.2.3 (raw digest bytes, not the CESR text)", + "spec": "tswg-tsp-specification#76; §7.2.3 (raw digest bytes, not the CESR text)", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", - "detail": "found after 7 invite pair(s): raw order and qb64 text order disagree" + "detail": "found after 98 invite pair(s): raw order and qb64 text order disagree" }, { "suite": "relationship", "case": "accept-unknown-digest-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "affinidi-rust", "receiver": "tsp-js", "status": "pass", - "detail": "affinidi-rust refused: [relationship] message discarded: accept from did:web:endpoint-b-c338ff2b.conformance.example answers an invite we did not send" + "detail": "affinidi-rust refused: [relationship] message discarded: accept from did:web:endpoint-b-768557c8.conformance.example answers an invite we did not send" }, { "suite": "relationship", "case": "invite-accept-bidirectional", - "spec": "\u00a77.2.1, \u00a77.2.2", + "spec": "§7.2.1, §7.2.2", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -18592,16 +18667,16 @@ { "suite": "relationship", "case": "message-before-relationship-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "affinidi-rust", "receiver": "go", "status": "pass", - "detail": "go refused: [relationship] tsp: relationship: application message from \"did:web:endpoint-a-012cb7d9.conformance.example\" without a relationship" + "detail": "go refused: [relationship] tsp: relationship: application message from \"did:web:endpoint-a-1cc61ff9.conformance.example\" without a relationship" }, { "suite": "relationship", "case": "cancel-returns-to-none", - "spec": "\u00a77.3", + "spec": "§7.3", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -18610,7 +18685,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -18619,7 +18694,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -18628,7 +18703,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -18637,7 +18712,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -18646,7 +18721,7 @@ { "suite": "relationship", "case": "rfi-race-lower-digest-wins", - "spec": "\u00a77.2.3; tswg-tsp-specification#76 (raw bytes)", + "spec": "§7.2.3; tswg-tsp-specification#76 (raw bytes)", "sender": "affinidi-rust", "receiver": "go", "status": "pass", @@ -18655,25 +18730,25 @@ { "suite": "relationship", "case": "invite-race-raw-byte-order", - "spec": "tswg-tsp-specification#76; \u00a77.2.3 (raw digest bytes, not the CESR text)", + "spec": "tswg-tsp-specification#76; §7.2.3 (raw digest bytes, not the CESR text)", "sender": "affinidi-rust", "receiver": "go", "status": "pass", - "detail": "found after 43 invite pair(s): raw order and qb64 text order disagree" + "detail": "found after 6 invite pair(s): raw order and qb64 text order disagree" }, { "suite": "relationship", "case": "accept-unknown-digest-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "affinidi-rust", "receiver": "go", "status": "pass", - "detail": "affinidi-rust refused: [relationship] message discarded: accept from did:web:endpoint-b-2f4b6ef9.conformance.example answers an invite we did not send" + "detail": "affinidi-rust refused: [relationship] message discarded: accept from did:web:endpoint-b-dba94bae.conformance.example answers an invite we did not send" }, { "suite": "relationship", "case": "invite-accept-bidirectional", - "spec": "\u00a77.2.1, \u00a77.2.2", + "spec": "§7.2.1, §7.2.2", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -18682,16 +18757,16 @@ { "suite": "relationship", "case": "message-before-relationship-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", - "detail": "dart refused: [relationship] application message without a relationship from did:web:endpoint-a-61cbc48d.conformance.example (state none)" + "detail": "dart refused: [relationship] application message without a relationship from did:web:endpoint-a-61b757c9.conformance.example (state none)" }, { "suite": "relationship", "case": "cancel-returns-to-none", - "spec": "\u00a77.3", + "spec": "§7.3", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -18700,7 +18775,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -18709,7 +18784,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -18718,7 +18793,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -18727,7 +18802,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -18736,7 +18811,7 @@ { "suite": "relationship", "case": "rfi-race-lower-digest-wins", - "spec": "\u00a77.2.3; tswg-tsp-specification#76 (raw bytes)", + "spec": "§7.2.3; tswg-tsp-specification#76 (raw bytes)", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", @@ -18745,25 +18820,25 @@ { "suite": "relationship", "case": "invite-race-raw-byte-order", - "spec": "tswg-tsp-specification#76; \u00a77.2.3 (raw digest bytes, not the CESR text)", + "spec": "tswg-tsp-specification#76; §7.2.3 (raw digest bytes, not the CESR text)", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", - "detail": "found after 14 invite pair(s): raw order and qb64 text order disagree" + "detail": "found after 107 invite pair(s): raw order and qb64 text order disagree" }, { "suite": "relationship", "case": "accept-unknown-digest-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "affinidi-rust", "receiver": "dart", "status": "pass", - "detail": "affinidi-rust refused: [relationship] message discarded: accept from did:web:endpoint-b-58fbc8f1.conformance.example answers an invite we did not send" + "detail": "affinidi-rust refused: [relationship] message discarded: accept from did:web:endpoint-b-651ef11f.conformance.example answers an invite we did not send" }, { "suite": "relationship", "case": "invite-accept-bidirectional", - "spec": "\u00a77.2.1, \u00a77.2.2", + "spec": "§7.2.1, §7.2.2", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -18772,16 +18847,16 @@ { "suite": "relationship", "case": "message-before-relationship-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", - "detail": "affinidi-rust refused: [relationship] message discarded: application message from did:web:endpoint-a-088c519d.conformance.example with no relationship to did:web:endpoint-b-5abb7d3c.conformance.example" + "detail": "affinidi-rust refused: [relationship] message discarded: application message from did:web:endpoint-a-64c5010b.conformance.example with no relationship to did:web:endpoint-b-e1685275.conformance.example" }, { "suite": "relationship", "case": "cancel-returns-to-none", - "spec": "\u00a77.3", + "spec": "§7.3", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -18790,7 +18865,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -18799,7 +18874,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -18808,7 +18883,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -18817,7 +18892,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -18826,7 +18901,7 @@ { "suite": "relationship", "case": "rfi-race-lower-digest-wins", - "spec": "\u00a77.2.3; tswg-tsp-specification#76 (raw bytes)", + "spec": "§7.2.3; tswg-tsp-specification#76 (raw bytes)", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -18835,16 +18910,16 @@ { "suite": "relationship", "case": "invite-race-raw-byte-order", - "spec": "tswg-tsp-specification#76; \u00a77.2.3 (raw digest bytes, not the CESR text)", + "spec": "tswg-tsp-specification#76; §7.2.3 (raw digest bytes, not the CESR text)", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", - "detail": "found after 119 invite pair(s): raw order and qb64 text order disagree" + "detail": "found after 9 invite pair(s): raw order and qb64 text order disagree" }, { "suite": "relationship", "case": "accept-unknown-digest-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "reference-rust", "receiver": "affinidi-rust", "status": "pass", @@ -18853,7 +18928,7 @@ { "suite": "relationship", "case": "invite-accept-bidirectional", - "spec": "\u00a77.2.1, \u00a77.2.2", + "spec": "§7.2.1, §7.2.2", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -18862,16 +18937,16 @@ { "suite": "relationship", "case": "message-before-relationship-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", - "detail": "reference-rust refused: [relationship] Error: no relationship from did:web:endpoint-a-db299424.conformance.example to did:web:endpoint-b-612d758f.conformance.example; the message is dropped" + "detail": "reference-rust refused: [relationship] Error: no relationship from did:web:endpoint-a-3a3dd524.conformance.example to did:web:endpoint-b-1594adb9.conformance.example; the message is dropped" }, { "suite": "relationship", "case": "cancel-returns-to-none", - "spec": "\u00a77.3", + "spec": "§7.3", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -18880,7 +18955,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -18889,7 +18964,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -18898,7 +18973,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -18907,7 +18982,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -18916,7 +18991,7 @@ { "suite": "relationship", "case": "rfi-race-lower-digest-wins", - "spec": "\u00a77.2.3; tswg-tsp-specification#76 (raw bytes)", + "spec": "§7.2.3; tswg-tsp-specification#76 (raw bytes)", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -18925,16 +19000,16 @@ { "suite": "relationship", "case": "invite-race-raw-byte-order", - "spec": "tswg-tsp-specification#76; \u00a77.2.3 (raw digest bytes, not the CESR text)", + "spec": "tswg-tsp-specification#76; §7.2.3 (raw digest bytes, not the CESR text)", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", - "detail": "found after 89 invite pair(s): raw order and qb64 text order disagree" + "detail": "found after 24 invite pair(s): raw order and qb64 text order disagree" }, { "suite": "relationship", "case": "accept-unknown-digest-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "reference-rust", "receiver": "reference-rust", "status": "pass", @@ -18943,7 +19018,7 @@ { "suite": "relationship", "case": "invite-accept-bidirectional", - "spec": "\u00a77.2.1, \u00a77.2.2", + "spec": "§7.2.1, §7.2.2", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -18952,7 +19027,7 @@ { "suite": "relationship", "case": "message-before-relationship-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -18961,7 +19036,7 @@ { "suite": "relationship", "case": "cancel-returns-to-none", - "spec": "\u00a77.3", + "spec": "§7.3", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -18970,7 +19045,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -18979,7 +19054,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -18988,7 +19063,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -18997,7 +19072,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -19006,7 +19081,7 @@ { "suite": "relationship", "case": "rfi-race-lower-digest-wins", - "spec": "\u00a77.2.3; tswg-tsp-specification#76 (raw bytes)", + "spec": "§7.2.3; tswg-tsp-specification#76 (raw bytes)", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -19015,16 +19090,16 @@ { "suite": "relationship", "case": "invite-race-raw-byte-order", - "spec": "tswg-tsp-specification#76; \u00a77.2.3 (raw digest bytes, not the CESR text)", + "spec": "tswg-tsp-specification#76; §7.2.3 (raw digest bytes, not the CESR text)", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", - "detail": "found after 40 invite pair(s): raw order and qb64 text order disagree" + "detail": "found after 32 invite pair(s): raw order and qb64 text order disagree" }, { "suite": "relationship", "case": "accept-unknown-digest-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "reference-rust", "receiver": "tsp-js", "status": "pass", @@ -19033,7 +19108,7 @@ { "suite": "relationship", "case": "invite-accept-bidirectional", - "spec": "\u00a77.2.1, \u00a77.2.2", + "spec": "§7.2.1, §7.2.2", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -19042,16 +19117,16 @@ { "suite": "relationship", "case": "message-before-relationship-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "reference-rust", "receiver": "go", "status": "pass", - "detail": "go refused: [relationship] tsp: relationship: application message from \"did:web:endpoint-a-4d3a0508.conformance.example\" without a relationship" + "detail": "go refused: [relationship] tsp: relationship: application message from \"did:web:endpoint-a-c3b89fa5.conformance.example\" without a relationship" }, { "suite": "relationship", "case": "cancel-returns-to-none", - "spec": "\u00a77.3", + "spec": "§7.3", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -19060,7 +19135,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -19069,7 +19144,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -19078,7 +19153,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -19087,7 +19162,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -19096,7 +19171,7 @@ { "suite": "relationship", "case": "rfi-race-lower-digest-wins", - "spec": "\u00a77.2.3; tswg-tsp-specification#76 (raw bytes)", + "spec": "§7.2.3; tswg-tsp-specification#76 (raw bytes)", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -19105,16 +19180,16 @@ { "suite": "relationship", "case": "invite-race-raw-byte-order", - "spec": "tswg-tsp-specification#76; \u00a77.2.3 (raw digest bytes, not the CESR text)", + "spec": "tswg-tsp-specification#76; §7.2.3 (raw digest bytes, not the CESR text)", "sender": "reference-rust", "receiver": "go", "status": "pass", - "detail": "found after 78 invite pair(s): raw order and qb64 text order disagree" + "detail": "found after 5 invite pair(s): raw order and qb64 text order disagree" }, { "suite": "relationship", "case": "accept-unknown-digest-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "reference-rust", "receiver": "go", "status": "pass", @@ -19123,7 +19198,7 @@ { "suite": "relationship", "case": "invite-accept-bidirectional", - "spec": "\u00a77.2.1, \u00a77.2.2", + "spec": "§7.2.1, §7.2.2", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -19132,16 +19207,16 @@ { "suite": "relationship", "case": "message-before-relationship-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "reference-rust", "receiver": "dart", "status": "pass", - "detail": "dart refused: [relationship] application message without a relationship from did:web:endpoint-a-86d527e0.conformance.example (state none)" + "detail": "dart refused: [relationship] application message without a relationship from did:web:endpoint-a-c449e8e7.conformance.example (state none)" }, { "suite": "relationship", "case": "cancel-returns-to-none", - "spec": "\u00a77.3", + "spec": "§7.3", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -19150,7 +19225,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -19159,7 +19234,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -19168,7 +19243,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -19177,7 +19252,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -19186,7 +19261,7 @@ { "suite": "relationship", "case": "rfi-race-lower-digest-wins", - "spec": "\u00a77.2.3; tswg-tsp-specification#76 (raw bytes)", + "spec": "§7.2.3; tswg-tsp-specification#76 (raw bytes)", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -19195,16 +19270,16 @@ { "suite": "relationship", "case": "invite-race-raw-byte-order", - "spec": "tswg-tsp-specification#76; \u00a77.2.3 (raw digest bytes, not the CESR text)", + "spec": "tswg-tsp-specification#76; §7.2.3 (raw digest bytes, not the CESR text)", "sender": "reference-rust", "receiver": "dart", "status": "pass", - "detail": "found after 37 invite pair(s): raw order and qb64 text order disagree" + "detail": "found after 2 invite pair(s): raw order and qb64 text order disagree" }, { "suite": "relationship", "case": "accept-unknown-digest-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "reference-rust", "receiver": "dart", "status": "pass", @@ -19213,7 +19288,7 @@ { "suite": "relationship", "case": "invite-accept-bidirectional", - "spec": "\u00a77.2.1, \u00a77.2.2", + "spec": "§7.2.1, §7.2.2", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", @@ -19222,16 +19297,16 @@ { "suite": "relationship", "case": "message-before-relationship-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", - "detail": "affinidi-rust refused: [relationship] message discarded: application message from did:web:endpoint-a-4ea3ff23.conformance.example with no relationship to did:web:endpoint-b-782ba808.conformance.example" + "detail": "affinidi-rust refused: [relationship] message discarded: application message from did:web:endpoint-a-32b2e962.conformance.example with no relationship to did:web:endpoint-b-dbf2f13a.conformance.example" }, { "suite": "relationship", "case": "cancel-returns-to-none", - "spec": "\u00a77.3", + "spec": "§7.3", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", @@ -19240,7 +19315,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", @@ -19249,7 +19324,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", @@ -19258,7 +19333,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", @@ -19267,7 +19342,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", @@ -19276,7 +19351,7 @@ { "suite": "relationship", "case": "rfi-race-lower-digest-wins", - "spec": "\u00a77.2.3; tswg-tsp-specification#76 (raw bytes)", + "spec": "§7.2.3; tswg-tsp-specification#76 (raw bytes)", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", @@ -19285,16 +19360,16 @@ { "suite": "relationship", "case": "invite-race-raw-byte-order", - "spec": "tswg-tsp-specification#76; \u00a77.2.3 (raw digest bytes, not the CESR text)", + "spec": "tswg-tsp-specification#76; §7.2.3 (raw digest bytes, not the CESR text)", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", - "detail": "found after 61 invite pair(s): raw order and qb64 text order disagree" + "detail": "found after 130 invite pair(s): raw order and qb64 text order disagree" }, { "suite": "relationship", "case": "accept-unknown-digest-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "tsp-js", "receiver": "affinidi-rust", "status": "pass", @@ -19303,7 +19378,7 @@ { "suite": "relationship", "case": "invite-accept-bidirectional", - "spec": "\u00a77.2.1, \u00a77.2.2", + "spec": "§7.2.1, §7.2.2", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", @@ -19312,16 +19387,16 @@ { "suite": "relationship", "case": "message-before-relationship-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", - "detail": "reference-rust refused: [relationship] Error: no relationship from did:web:endpoint-a-689f9881.conformance.example to did:web:endpoint-b-a2b2cbe8.conformance.example; the message is dropped" + "detail": "reference-rust refused: [relationship] Error: no relationship from did:web:endpoint-a-3f97d35c.conformance.example to did:web:endpoint-b-6df67153.conformance.example; the message is dropped" }, { "suite": "relationship", "case": "cancel-returns-to-none", - "spec": "\u00a77.3", + "spec": "§7.3", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", @@ -19330,7 +19405,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", @@ -19339,7 +19414,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", @@ -19348,7 +19423,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", @@ -19357,7 +19432,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", @@ -19366,7 +19441,7 @@ { "suite": "relationship", "case": "rfi-race-lower-digest-wins", - "spec": "\u00a77.2.3; tswg-tsp-specification#76 (raw bytes)", + "spec": "§7.2.3; tswg-tsp-specification#76 (raw bytes)", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", @@ -19375,16 +19450,16 @@ { "suite": "relationship", "case": "invite-race-raw-byte-order", - "spec": "tswg-tsp-specification#76; \u00a77.2.3 (raw digest bytes, not the CESR text)", + "spec": "tswg-tsp-specification#76; §7.2.3 (raw digest bytes, not the CESR text)", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", - "detail": "found after 75 invite pair(s): raw order and qb64 text order disagree" + "detail": "found after 6 invite pair(s): raw order and qb64 text order disagree" }, { "suite": "relationship", "case": "accept-unknown-digest-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "tsp-js", "receiver": "reference-rust", "status": "pass", @@ -19393,7 +19468,7 @@ { "suite": "relationship", "case": "invite-accept-bidirectional", - "spec": "\u00a77.2.1, \u00a77.2.2", + "spec": "§7.2.1, §7.2.2", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", @@ -19402,7 +19477,7 @@ { "suite": "relationship", "case": "message-before-relationship-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", @@ -19411,7 +19486,7 @@ { "suite": "relationship", "case": "cancel-returns-to-none", - "spec": "\u00a77.3", + "spec": "§7.3", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", @@ -19420,7 +19495,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", @@ -19429,7 +19504,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", @@ -19438,7 +19513,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", @@ -19447,7 +19522,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", @@ -19456,7 +19531,7 @@ { "suite": "relationship", "case": "rfi-race-lower-digest-wins", - "spec": "\u00a77.2.3; tswg-tsp-specification#76 (raw bytes)", + "spec": "§7.2.3; tswg-tsp-specification#76 (raw bytes)", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", @@ -19465,16 +19540,16 @@ { "suite": "relationship", "case": "invite-race-raw-byte-order", - "spec": "tswg-tsp-specification#76; \u00a77.2.3 (raw digest bytes, not the CESR text)", + "spec": "tswg-tsp-specification#76; §7.2.3 (raw digest bytes, not the CESR text)", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", - "detail": "found after 33 invite pair(s): raw order and qb64 text order disagree" + "detail": "found after 161 invite pair(s): raw order and qb64 text order disagree" }, { "suite": "relationship", "case": "accept-unknown-digest-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "tsp-js", "receiver": "tsp-js", "status": "pass", @@ -19483,7 +19558,7 @@ { "suite": "relationship", "case": "invite-accept-bidirectional", - "spec": "\u00a77.2.1, \u00a77.2.2", + "spec": "§7.2.1, §7.2.2", "sender": "tsp-js", "receiver": "go", "status": "pass", @@ -19492,16 +19567,16 @@ { "suite": "relationship", "case": "message-before-relationship-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "tsp-js", "receiver": "go", "status": "pass", - "detail": "go refused: [relationship] tsp: relationship: application message from \"did:web:endpoint-a-65f23b48.conformance.example\" without a relationship" + "detail": "go refused: [relationship] tsp: relationship: application message from \"did:web:endpoint-a-2a9b1365.conformance.example\" without a relationship" }, { "suite": "relationship", "case": "cancel-returns-to-none", - "spec": "\u00a77.3", + "spec": "§7.3", "sender": "tsp-js", "receiver": "go", "status": "pass", @@ -19510,7 +19585,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "tsp-js", "receiver": "go", "status": "pass", @@ -19519,7 +19594,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "tsp-js", "receiver": "go", "status": "pass", @@ -19528,7 +19603,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "tsp-js", "receiver": "go", "status": "pass", @@ -19537,7 +19612,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "tsp-js", "receiver": "go", "status": "pass", @@ -19546,7 +19621,7 @@ { "suite": "relationship", "case": "rfi-race-lower-digest-wins", - "spec": "\u00a77.2.3; tswg-tsp-specification#76 (raw bytes)", + "spec": "§7.2.3; tswg-tsp-specification#76 (raw bytes)", "sender": "tsp-js", "receiver": "go", "status": "pass", @@ -19555,16 +19630,16 @@ { "suite": "relationship", "case": "invite-race-raw-byte-order", - "spec": "tswg-tsp-specification#76; \u00a77.2.3 (raw digest bytes, not the CESR text)", + "spec": "tswg-tsp-specification#76; §7.2.3 (raw digest bytes, not the CESR text)", "sender": "tsp-js", "receiver": "go", "status": "pass", - "detail": "found after 129 invite pair(s): raw order and qb64 text order disagree" + "detail": "found after 13 invite pair(s): raw order and qb64 text order disagree" }, { "suite": "relationship", "case": "accept-unknown-digest-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "tsp-js", "receiver": "go", "status": "pass", @@ -19573,7 +19648,7 @@ { "suite": "relationship", "case": "invite-accept-bidirectional", - "spec": "\u00a77.2.1, \u00a77.2.2", + "spec": "§7.2.1, §7.2.2", "sender": "tsp-js", "receiver": "dart", "status": "pass", @@ -19582,16 +19657,16 @@ { "suite": "relationship", "case": "message-before-relationship-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "tsp-js", "receiver": "dart", "status": "pass", - "detail": "dart refused: [relationship] application message without a relationship from did:web:endpoint-a-69b776ac.conformance.example (state none)" + "detail": "dart refused: [relationship] application message without a relationship from did:web:endpoint-a-e0d6fc0b.conformance.example (state none)" }, { "suite": "relationship", "case": "cancel-returns-to-none", - "spec": "\u00a77.3", + "spec": "§7.3", "sender": "tsp-js", "receiver": "dart", "status": "pass", @@ -19600,7 +19675,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "tsp-js", "receiver": "dart", "status": "pass", @@ -19609,7 +19684,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "tsp-js", "receiver": "dart", "status": "pass", @@ -19618,7 +19693,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "tsp-js", "receiver": "dart", "status": "pass", @@ -19627,7 +19702,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "tsp-js", "receiver": "dart", "status": "pass", @@ -19636,7 +19711,7 @@ { "suite": "relationship", "case": "rfi-race-lower-digest-wins", - "spec": "\u00a77.2.3; tswg-tsp-specification#76 (raw bytes)", + "spec": "§7.2.3; tswg-tsp-specification#76 (raw bytes)", "sender": "tsp-js", "receiver": "dart", "status": "pass", @@ -19645,16 +19720,16 @@ { "suite": "relationship", "case": "invite-race-raw-byte-order", - "spec": "tswg-tsp-specification#76; \u00a77.2.3 (raw digest bytes, not the CESR text)", + "spec": "tswg-tsp-specification#76; §7.2.3 (raw digest bytes, not the CESR text)", "sender": "tsp-js", "receiver": "dart", "status": "pass", - "detail": "found after 10 invite pair(s): raw order and qb64 text order disagree" + "detail": "found after 64 invite pair(s): raw order and qb64 text order disagree" }, { "suite": "relationship", "case": "accept-unknown-digest-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "tsp-js", "receiver": "dart", "status": "pass", @@ -19663,7 +19738,7 @@ { "suite": "relationship", "case": "invite-accept-bidirectional", - "spec": "\u00a77.2.1, \u00a77.2.2", + "spec": "§7.2.1, §7.2.2", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -19672,16 +19747,16 @@ { "suite": "relationship", "case": "message-before-relationship-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "go", "receiver": "affinidi-rust", "status": "pass", - "detail": "affinidi-rust refused: [relationship] message discarded: application message from did:web:endpoint-a-9152daf8.conformance.example with no relationship to did:web:endpoint-b-797d22f4.conformance.example" + "detail": "affinidi-rust refused: [relationship] message discarded: application message from did:web:endpoint-a-871e88d4.conformance.example with no relationship to did:web:endpoint-b-bfe04ad9.conformance.example" }, { "suite": "relationship", "case": "cancel-returns-to-none", - "spec": "\u00a77.3", + "spec": "§7.3", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -19690,7 +19765,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -19699,7 +19774,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -19708,7 +19783,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -19717,7 +19792,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -19726,7 +19801,7 @@ { "suite": "relationship", "case": "rfi-race-lower-digest-wins", - "spec": "\u00a77.2.3; tswg-tsp-specification#76 (raw bytes)", + "spec": "§7.2.3; tswg-tsp-specification#76 (raw bytes)", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -19735,16 +19810,16 @@ { "suite": "relationship", "case": "invite-race-raw-byte-order", - "spec": "tswg-tsp-specification#76; \u00a77.2.3 (raw digest bytes, not the CESR text)", + "spec": "tswg-tsp-specification#76; §7.2.3 (raw digest bytes, not the CESR text)", "sender": "go", "receiver": "affinidi-rust", "status": "pass", - "detail": "found after 68 invite pair(s): raw order and qb64 text order disagree" + "detail": "found after 54 invite pair(s): raw order and qb64 text order disagree" }, { "suite": "relationship", "case": "accept-unknown-digest-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "go", "receiver": "affinidi-rust", "status": "pass", @@ -19753,7 +19828,7 @@ { "suite": "relationship", "case": "invite-accept-bidirectional", - "spec": "\u00a77.2.1, \u00a77.2.2", + "spec": "§7.2.1, §7.2.2", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -19762,16 +19837,16 @@ { "suite": "relationship", "case": "message-before-relationship-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "go", "receiver": "reference-rust", "status": "pass", - "detail": "reference-rust refused: [relationship] Error: no relationship from did:web:endpoint-a-9f060fa4.conformance.example to did:web:endpoint-b-2bb32592.conformance.example; the message is dropped" + "detail": "reference-rust refused: [relationship] Error: no relationship from did:web:endpoint-a-22ca77c7.conformance.example to did:web:endpoint-b-5ae2419f.conformance.example; the message is dropped" }, { "suite": "relationship", "case": "cancel-returns-to-none", - "spec": "\u00a77.3", + "spec": "§7.3", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -19780,7 +19855,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -19789,7 +19864,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -19798,7 +19873,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -19807,7 +19882,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -19816,7 +19891,7 @@ { "suite": "relationship", "case": "rfi-race-lower-digest-wins", - "spec": "\u00a77.2.3; tswg-tsp-specification#76 (raw bytes)", + "spec": "§7.2.3; tswg-tsp-specification#76 (raw bytes)", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -19825,16 +19900,16 @@ { "suite": "relationship", "case": "invite-race-raw-byte-order", - "spec": "tswg-tsp-specification#76; \u00a77.2.3 (raw digest bytes, not the CESR text)", + "spec": "tswg-tsp-specification#76; §7.2.3 (raw digest bytes, not the CESR text)", "sender": "go", "receiver": "reference-rust", "status": "pass", - "detail": "found after 45 invite pair(s): raw order and qb64 text order disagree" + "detail": "found after 5 invite pair(s): raw order and qb64 text order disagree" }, { "suite": "relationship", "case": "accept-unknown-digest-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "go", "receiver": "reference-rust", "status": "pass", @@ -19843,7 +19918,7 @@ { "suite": "relationship", "case": "invite-accept-bidirectional", - "spec": "\u00a77.2.1, \u00a77.2.2", + "spec": "§7.2.1, §7.2.2", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -19852,7 +19927,7 @@ { "suite": "relationship", "case": "message-before-relationship-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -19861,7 +19936,7 @@ { "suite": "relationship", "case": "cancel-returns-to-none", - "spec": "\u00a77.3", + "spec": "§7.3", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -19870,7 +19945,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -19879,7 +19954,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -19888,7 +19963,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -19897,7 +19972,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -19906,7 +19981,7 @@ { "suite": "relationship", "case": "rfi-race-lower-digest-wins", - "spec": "\u00a77.2.3; tswg-tsp-specification#76 (raw bytes)", + "spec": "§7.2.3; tswg-tsp-specification#76 (raw bytes)", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -19915,16 +19990,16 @@ { "suite": "relationship", "case": "invite-race-raw-byte-order", - "spec": "tswg-tsp-specification#76; \u00a77.2.3 (raw digest bytes, not the CESR text)", + "spec": "tswg-tsp-specification#76; §7.2.3 (raw digest bytes, not the CESR text)", "sender": "go", "receiver": "tsp-js", "status": "pass", - "detail": "found after 24 invite pair(s): raw order and qb64 text order disagree" + "detail": "found after 106 invite pair(s): raw order and qb64 text order disagree" }, { "suite": "relationship", "case": "accept-unknown-digest-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "go", "receiver": "tsp-js", "status": "pass", @@ -19933,7 +20008,7 @@ { "suite": "relationship", "case": "invite-accept-bidirectional", - "spec": "\u00a77.2.1, \u00a77.2.2", + "spec": "§7.2.1, §7.2.2", "sender": "go", "receiver": "go", "status": "pass", @@ -19942,16 +20017,16 @@ { "suite": "relationship", "case": "message-before-relationship-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "go", "receiver": "go", "status": "pass", - "detail": "go refused: [relationship] tsp: relationship: application message from \"did:web:endpoint-a-927de26e.conformance.example\" without a relationship" + "detail": "go refused: [relationship] tsp: relationship: application message from \"did:web:endpoint-a-400b858c.conformance.example\" without a relationship" }, { "suite": "relationship", "case": "cancel-returns-to-none", - "spec": "\u00a77.3", + "spec": "§7.3", "sender": "go", "receiver": "go", "status": "pass", @@ -19960,7 +20035,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "go", "receiver": "go", "status": "pass", @@ -19969,7 +20044,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "go", "receiver": "go", "status": "pass", @@ -19978,7 +20053,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "go", "receiver": "go", "status": "pass", @@ -19987,7 +20062,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "go", "receiver": "go", "status": "pass", @@ -19996,7 +20071,7 @@ { "suite": "relationship", "case": "rfi-race-lower-digest-wins", - "spec": "\u00a77.2.3; tswg-tsp-specification#76 (raw bytes)", + "spec": "§7.2.3; tswg-tsp-specification#76 (raw bytes)", "sender": "go", "receiver": "go", "status": "pass", @@ -20005,16 +20080,16 @@ { "suite": "relationship", "case": "invite-race-raw-byte-order", - "spec": "tswg-tsp-specification#76; \u00a77.2.3 (raw digest bytes, not the CESR text)", + "spec": "tswg-tsp-specification#76; §7.2.3 (raw digest bytes, not the CESR text)", "sender": "go", "receiver": "go", "status": "pass", - "detail": "found after 11 invite pair(s): raw order and qb64 text order disagree" + "detail": "found after 76 invite pair(s): raw order and qb64 text order disagree" }, { "suite": "relationship", "case": "accept-unknown-digest-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "go", "receiver": "go", "status": "pass", @@ -20023,7 +20098,7 @@ { "suite": "relationship", "case": "invite-accept-bidirectional", - "spec": "\u00a77.2.1, \u00a77.2.2", + "spec": "§7.2.1, §7.2.2", "sender": "go", "receiver": "dart", "status": "pass", @@ -20032,16 +20107,16 @@ { "suite": "relationship", "case": "message-before-relationship-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "go", "receiver": "dart", "status": "pass", - "detail": "dart refused: [relationship] application message without a relationship from did:web:endpoint-a-48042756.conformance.example (state none)" + "detail": "dart refused: [relationship] application message without a relationship from did:web:endpoint-a-d3a13647.conformance.example (state none)" }, { "suite": "relationship", "case": "cancel-returns-to-none", - "spec": "\u00a77.3", + "spec": "§7.3", "sender": "go", "receiver": "dart", "status": "pass", @@ -20050,7 +20125,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "go", "receiver": "dart", "status": "pass", @@ -20059,7 +20134,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "go", "receiver": "dart", "status": "pass", @@ -20068,7 +20143,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "go", "receiver": "dart", "status": "pass", @@ -20077,7 +20152,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "go", "receiver": "dart", "status": "pass", @@ -20086,7 +20161,7 @@ { "suite": "relationship", "case": "rfi-race-lower-digest-wins", - "spec": "\u00a77.2.3; tswg-tsp-specification#76 (raw bytes)", + "spec": "§7.2.3; tswg-tsp-specification#76 (raw bytes)", "sender": "go", "receiver": "dart", "status": "pass", @@ -20095,16 +20170,16 @@ { "suite": "relationship", "case": "invite-race-raw-byte-order", - "spec": "tswg-tsp-specification#76; \u00a77.2.3 (raw digest bytes, not the CESR text)", + "spec": "tswg-tsp-specification#76; §7.2.3 (raw digest bytes, not the CESR text)", "sender": "go", "receiver": "dart", "status": "pass", - "detail": "found after 81 invite pair(s): raw order and qb64 text order disagree" + "detail": "found after 64 invite pair(s): raw order and qb64 text order disagree" }, { "suite": "relationship", "case": "accept-unknown-digest-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "go", "receiver": "dart", "status": "pass", @@ -20113,7 +20188,7 @@ { "suite": "relationship", "case": "invite-accept-bidirectional", - "spec": "\u00a77.2.1, \u00a77.2.2", + "spec": "§7.2.1, §7.2.2", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -20122,16 +20197,16 @@ { "suite": "relationship", "case": "message-before-relationship-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", - "detail": "affinidi-rust refused: [relationship] message discarded: application message from did:web:endpoint-a-4f6df71a.conformance.example with no relationship to did:web:endpoint-b-df88cc2b.conformance.example" + "detail": "affinidi-rust refused: [relationship] message discarded: application message from did:web:endpoint-a-0acc3214.conformance.example with no relationship to did:web:endpoint-b-439db02f.conformance.example" }, { "suite": "relationship", "case": "cancel-returns-to-none", - "spec": "\u00a77.3", + "spec": "§7.3", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -20140,7 +20215,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -20149,7 +20224,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -20158,7 +20233,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -20167,7 +20242,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -20176,7 +20251,7 @@ { "suite": "relationship", "case": "rfi-race-lower-digest-wins", - "spec": "\u00a77.2.3; tswg-tsp-specification#76 (raw bytes)", + "spec": "§7.2.3; tswg-tsp-specification#76 (raw bytes)", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -20185,16 +20260,16 @@ { "suite": "relationship", "case": "invite-race-raw-byte-order", - "spec": "tswg-tsp-specification#76; \u00a77.2.3 (raw digest bytes, not the CESR text)", + "spec": "tswg-tsp-specification#76; §7.2.3 (raw digest bytes, not the CESR text)", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", - "detail": "found after 98 invite pair(s): raw order and qb64 text order disagree" + "detail": "found after 48 invite pair(s): raw order and qb64 text order disagree" }, { "suite": "relationship", "case": "accept-unknown-digest-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "dart", "receiver": "affinidi-rust", "status": "pass", @@ -20203,7 +20278,7 @@ { "suite": "relationship", "case": "invite-accept-bidirectional", - "spec": "\u00a77.2.1, \u00a77.2.2", + "spec": "§7.2.1, §7.2.2", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -20212,16 +20287,16 @@ { "suite": "relationship", "case": "message-before-relationship-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "dart", "receiver": "reference-rust", "status": "pass", - "detail": "reference-rust refused: [relationship] Error: no relationship from did:web:endpoint-a-8c542bf5.conformance.example to did:web:endpoint-b-1df42640.conformance.example; the message is dropped" + "detail": "reference-rust refused: [relationship] Error: no relationship from did:web:endpoint-a-4a6978f5.conformance.example to did:web:endpoint-b-7ee98642.conformance.example; the message is dropped" }, { "suite": "relationship", "case": "cancel-returns-to-none", - "spec": "\u00a77.3", + "spec": "§7.3", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -20230,7 +20305,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -20239,7 +20314,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -20248,7 +20323,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -20257,7 +20332,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -20266,7 +20341,7 @@ { "suite": "relationship", "case": "rfi-race-lower-digest-wins", - "spec": "\u00a77.2.3; tswg-tsp-specification#76 (raw bytes)", + "spec": "§7.2.3; tswg-tsp-specification#76 (raw bytes)", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -20275,16 +20350,16 @@ { "suite": "relationship", "case": "invite-race-raw-byte-order", - "spec": "tswg-tsp-specification#76; \u00a77.2.3 (raw digest bytes, not the CESR text)", + "spec": "tswg-tsp-specification#76; §7.2.3 (raw digest bytes, not the CESR text)", "sender": "dart", "receiver": "reference-rust", "status": "pass", - "detail": "found after 115 invite pair(s): raw order and qb64 text order disagree" + "detail": "found after 27 invite pair(s): raw order and qb64 text order disagree" }, { "suite": "relationship", "case": "accept-unknown-digest-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "dart", "receiver": "reference-rust", "status": "pass", @@ -20293,7 +20368,7 @@ { "suite": "relationship", "case": "invite-accept-bidirectional", - "spec": "\u00a77.2.1, \u00a77.2.2", + "spec": "§7.2.1, §7.2.2", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -20302,7 +20377,7 @@ { "suite": "relationship", "case": "message-before-relationship-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -20311,7 +20386,7 @@ { "suite": "relationship", "case": "cancel-returns-to-none", - "spec": "\u00a77.3", + "spec": "§7.3", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -20320,7 +20395,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -20329,7 +20404,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -20338,7 +20413,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -20347,7 +20422,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -20356,7 +20431,7 @@ { "suite": "relationship", "case": "rfi-race-lower-digest-wins", - "spec": "\u00a77.2.3; tswg-tsp-specification#76 (raw bytes)", + "spec": "§7.2.3; tswg-tsp-specification#76 (raw bytes)", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -20365,16 +20440,16 @@ { "suite": "relationship", "case": "invite-race-raw-byte-order", - "spec": "tswg-tsp-specification#76; \u00a77.2.3 (raw digest bytes, not the CESR text)", + "spec": "tswg-tsp-specification#76; §7.2.3 (raw digest bytes, not the CESR text)", "sender": "dart", "receiver": "tsp-js", "status": "pass", - "detail": "found after 26 invite pair(s): raw order and qb64 text order disagree" + "detail": "found after 12 invite pair(s): raw order and qb64 text order disagree" }, { "suite": "relationship", "case": "accept-unknown-digest-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "dart", "receiver": "tsp-js", "status": "pass", @@ -20383,7 +20458,7 @@ { "suite": "relationship", "case": "invite-accept-bidirectional", - "spec": "\u00a77.2.1, \u00a77.2.2", + "spec": "§7.2.1, §7.2.2", "sender": "dart", "receiver": "go", "status": "pass", @@ -20392,16 +20467,16 @@ { "suite": "relationship", "case": "message-before-relationship-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "dart", "receiver": "go", "status": "pass", - "detail": "go refused: [relationship] tsp: relationship: application message from \"did:web:endpoint-a-4936e221.conformance.example\" without a relationship" + "detail": "go refused: [relationship] tsp: relationship: application message from \"did:web:endpoint-a-237693a6.conformance.example\" without a relationship" }, { "suite": "relationship", "case": "cancel-returns-to-none", - "spec": "\u00a77.3", + "spec": "§7.3", "sender": "dart", "receiver": "go", "status": "pass", @@ -20410,7 +20485,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "dart", "receiver": "go", "status": "pass", @@ -20419,7 +20494,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "dart", "receiver": "go", "status": "pass", @@ -20428,7 +20503,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "dart", "receiver": "go", "status": "pass", @@ -20437,7 +20512,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "dart", "receiver": "go", "status": "pass", @@ -20446,7 +20521,7 @@ { "suite": "relationship", "case": "rfi-race-lower-digest-wins", - "spec": "\u00a77.2.3; tswg-tsp-specification#76 (raw bytes)", + "spec": "§7.2.3; tswg-tsp-specification#76 (raw bytes)", "sender": "dart", "receiver": "go", "status": "pass", @@ -20455,16 +20530,16 @@ { "suite": "relationship", "case": "invite-race-raw-byte-order", - "spec": "tswg-tsp-specification#76; \u00a77.2.3 (raw digest bytes, not the CESR text)", + "spec": "tswg-tsp-specification#76; §7.2.3 (raw digest bytes, not the CESR text)", "sender": "dart", "receiver": "go", "status": "pass", - "detail": "found after 8 invite pair(s): raw order and qb64 text order disagree" + "detail": "found after 75 invite pair(s): raw order and qb64 text order disagree" }, { "suite": "relationship", "case": "accept-unknown-digest-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "dart", "receiver": "go", "status": "pass", @@ -20473,7 +20548,7 @@ { "suite": "relationship", "case": "invite-accept-bidirectional", - "spec": "\u00a77.2.1, \u00a77.2.2", + "spec": "§7.2.1, §7.2.2", "sender": "dart", "receiver": "dart", "status": "pass", @@ -20482,16 +20557,16 @@ { "suite": "relationship", "case": "message-before-relationship-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "dart", "receiver": "dart", "status": "pass", - "detail": "dart refused: [relationship] application message without a relationship from did:web:endpoint-a-101f678c.conformance.example (state none)" + "detail": "dart refused: [relationship] application message without a relationship from did:web:endpoint-a-1fc83e06.conformance.example (state none)" }, { "suite": "relationship", "case": "cancel-returns-to-none", - "spec": "\u00a77.3", + "spec": "§7.3", "sender": "dart", "receiver": "dart", "status": "pass", @@ -20500,7 +20575,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "dart", "receiver": "dart", "status": "pass", @@ -20509,7 +20584,7 @@ { "suite": "relationship", "case": "cancel-by-inviter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "dart", "receiver": "dart", "status": "pass", @@ -20518,7 +20593,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-invite-digest", - "spec": "\u00a77.2.2, \u00a77.3", + "spec": "§7.2.2, §7.3", "sender": "dart", "receiver": "dart", "status": "pass", @@ -20527,7 +20602,7 @@ { "suite": "relationship", "case": "cancel-by-accepter-naming-accept-digest", - "spec": "\u00a77.2.2 (Reply_Digest recorded by both), \u00a77.3", + "spec": "§7.2.2 (Reply_Digest recorded by both), §7.3", "sender": "dart", "receiver": "dart", "status": "pass", @@ -20536,7 +20611,7 @@ { "suite": "relationship", "case": "rfi-race-lower-digest-wins", - "spec": "\u00a77.2.3; tswg-tsp-specification#76 (raw bytes)", + "spec": "§7.2.3; tswg-tsp-specification#76 (raw bytes)", "sender": "dart", "receiver": "dart", "status": "pass", @@ -20545,21 +20620,20 @@ { "suite": "relationship", "case": "invite-race-raw-byte-order", - "spec": "tswg-tsp-specification#76; \u00a77.2.3 (raw digest bytes, not the CESR text)", + "spec": "tswg-tsp-specification#76; §7.2.3 (raw digest bytes, not the CESR text)", "sender": "dart", "receiver": "dart", "status": "pass", - "detail": "found after 24 invite pair(s): raw order and qb64 text order disagree" + "detail": "found after 78 invite pair(s): raw order and qb64 text order disagree" }, { "suite": "relationship", "case": "accept-unknown-digest-refused", - "spec": "\u00a77.2.2", + "spec": "§7.2.2", "sender": "dart", "receiver": "dart", "status": "pass", "detail": "dart refused: [relationship] the accept matches no outstanding invite" } - ], - "note": "Built from affinidi-tdk-rs main @ e4a7686 (includes #803, #804), vta-browser-plugin feat/tsp-rev2-rev3-dual-handler @ ac7e829 (includes #249, #250), affinidi-tsp-go and affinidi-tsp-dart main, and tsp_sdk 0.11.0 from crates.io." -} + ] +} \ No newline at end of file diff --git a/reports/report.md b/reports/report.md index 8aaf5a9..46b92df 100644 --- a/reports/report.md +++ b/reports/report.md @@ -1,8 +1,8 @@ # TSP Rev 3 conformance report -> Built from affinidi-tdk-rs `main` @ `e4a7686` (includes #803, #804), vta-browser-plugin `feat/tsp-rev2-rev3-dual-handler` @ `ac7e829` (includes #249, #250), affinidi-tsp-go and affinidi-tsp-dart `main`, and tsp_sdk 0.11.0 from crates.io. +Target **trustoverip/tswg-tsp-specification** at commit `f5b8668` (`YTSP-AAC`). Generated 2026-09-16T14:30:05Z with key seed `20260916`. -Target **trustoverip/tswg-tsp-specification** at commit `f5b8668` (`YTSP-AAC`). Generated 2026-09-16T13:07:47Z with key seed `20260916`. +> **Note:** Built from affinidi-tdk-rs main @ 0e51187 (includes #803, #804, #806), vta-browser-plugin feat/tsp-rev2-rev3-dual-handler @ 88fc7a5 (includes #249, #250, #251), affinidi-tsp-go and affinidi-tsp-dart main, and tsp_sdk 0.11.0 from crates.io. Each case is **pass**, **fail** (with the diff), **skip** (a capability the implementation does not offer) or **error** (the harness or a driver broke). Cells read `✓ passed/ran` when nothing failed, `✗ passed/ran` when something did, `–` when every case skipped. @@ -25,7 +25,7 @@ Local overrides in effect (`drivers.local.toml`, not committed): | Suite | Pass | Fail | Error | Skip | |---|---:|---:|---:|---:| -| interop | 868 | 25 | 0 | 157 | +| interop | 893 | 0 | 0 | 157 | | negative | 377 | 8 | 0 | 70 | | relationship | 250 | 0 | 0 | 0 | | vectors | 137 | 0 | 0 | 38 | @@ -100,11 +100,11 @@ As each driver declares in `hello`. `pack only`/`open only` mark one-sided suppo | packs ↓ / opens → | affinidi-rust | reference-rust | tsp-js | go | dart | |---|---|---|---|---|---| -| **affinidi-rust** | ✗ 40/41 | ✗ 40/41 | ✗ 31/33 | ✗ 40/41 | ✗ 40/41 | -| **reference-rust** | ✗ 37/38 | ✓ 38/38 | ✗ 28/30 | ✓ 38/38 | ✓ 38/38 | -| **tsp-js** | ✗ 20/22 | ✗ 20/22 | ✗ 20/22 | ✗ 20/22 | ✗ 20/22 | -| **go** | ✗ 41/42 | ✓ 42/42 | ✗ 32/34 | ✓ 42/42 | ✓ 42/42 | -| **dart** | ✗ 41/42 | ✓ 42/42 | ✗ 32/34 | ✓ 42/42 | ✓ 42/42 | +| **affinidi-rust** | ✓ 41/41 | ✓ 41/41 | ✓ 33/33 | ✓ 41/41 | ✓ 41/41 | +| **reference-rust** | ✓ 38/38 | ✓ 38/38 | ✓ 30/30 | ✓ 38/38 | ✓ 38/38 | +| **tsp-js** | ✓ 22/22 | ✓ 22/22 | ✓ 22/22 | ✓ 22/22 | ✓ 22/22 | +| **go** | ✓ 42/42 | ✓ 42/42 | ✓ 34/34 | ✓ 42/42 | ✓ 42/42 | +| **dart** | ✓ 42/42 | ✓ 42/42 | ✓ 34/34 | ✓ 42/42 | ✓ 42/42 |
Per case (42 cases × 25 pairs) @@ -145,8 +145,8 @@ As each driver declares in `hello`. `pack only`/`open only` mark one-sided suppo | `hop/routed-2-hops` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | `hop/routed-long-hop-list` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | `rfi/hpke-base/long-reply-path` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | -| `hop/routed-12-hops` | ✓ | ✓ | ✗ | ✓ | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✗ | ✓ | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ | -| `hop/routed-17-hops` | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✗ | ✓ | ✓ | ✗ | ✓ | ✗ | ✓ | ✓ | +| `hop/routed-12-hops` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| `hop/routed-17-hops` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | `hop/nested-mixed/inner-by-affinidi-rust` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | `hop/nested-mixed/inner-by-reference-rust` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | `hop/nested-mixed/inner-by-tsp-js` | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | @@ -219,7 +219,6 @@ Failures attributed to an investigated root cause (`findings.toml`). *Kind*: `sp | 1 | tsp_sdk accepts a primitive whose lead bytes are non-zero | `spec-violation` | 1 | | 2 | tsp_sdk ignores bytes after the signature attachment; affinidi-tsp and tsp-js reject them | `disagreement` | 6 | | 3 | tsp_sdk does not check the ESSR sender field of a signed-only message | `disagreement` | 1 | -| 4 | Route length limits differ: tsp-js 10 hops, affinidi-tsp 16, tsp_sdk none | `limit` | 25 | ### 1. tsp_sdk accepts a primitive whose lead bytes are non-zero @@ -280,48 +279,6 @@ accepted a message with essr-sender-mismatch (source direct-signed-only (re-sign
-### 4. Route length limits differ: tsp-js 10 hops, affinidi-tsp 16, tsp_sdk none - -**Kind:** `limit` · **Spec:** §5.3: "the number of intermediaries in the route path may not be limited to 2"; no maximum is set - -tsp-js `cesr/wire.ts` `MAX_HOPS = 10`, enforced when packing (`packRouted`) and when decoding any VID list (`rev3/fields.ts` `decodeVidList`, which also reads Reply_Path). affinidi-tsp `message/routed.rs` `MAX_HOPS = 16`, enforced when packing and in `wire.rs` `decode_hops`. tsp_sdk sets none. So a 12-hop route packed by affinidi-tsp or tsp_sdk cannot be opened by tsp-js, and a 17-hop route packed by tsp_sdk cannot be opened by affinidi-tsp. A bound is reasonable; three different ones are not interoperable. The specification could state a minimum every receiver must accept. - -Observed in 25 case(s); for example `interop/hop/routed-17-hops` (affinidi-rust → affinidi-rust): - -```text -affinidi-rust refused to pack: [malformed] invalid message: route has 17 hops, exceeds maximum of 16 -``` - -
Affected cases - -- `interop/hop/routed-17-hops` affinidi-rust → affinidi-rust -- `interop/hop/routed-17-hops` affinidi-rust → reference-rust -- `interop/hop/routed-12-hops` affinidi-rust → tsp-js -- `interop/hop/routed-17-hops` affinidi-rust → tsp-js -- `interop/hop/routed-17-hops` affinidi-rust → go -- `interop/hop/routed-17-hops` affinidi-rust → dart -- `interop/hop/routed-17-hops` reference-rust → affinidi-rust -- `interop/hop/routed-12-hops` reference-rust → tsp-js -- `interop/hop/routed-17-hops` reference-rust → tsp-js -- `interop/hop/routed-12-hops` tsp-js → affinidi-rust -- `interop/hop/routed-17-hops` tsp-js → affinidi-rust -- `interop/hop/routed-12-hops` tsp-js → reference-rust -- `interop/hop/routed-17-hops` tsp-js → reference-rust -- `interop/hop/routed-12-hops` tsp-js → tsp-js -- `interop/hop/routed-17-hops` tsp-js → tsp-js -- `interop/hop/routed-12-hops` tsp-js → go -- `interop/hop/routed-17-hops` tsp-js → go -- `interop/hop/routed-12-hops` tsp-js → dart -- `interop/hop/routed-17-hops` tsp-js → dart -- `interop/hop/routed-17-hops` go → affinidi-rust -- `interop/hop/routed-12-hops` go → tsp-js -- `interop/hop/routed-17-hops` go → tsp-js -- `interop/hop/routed-17-hops` dart → affinidi-rust -- `interop/hop/routed-12-hops` dart → tsp-js -- `interop/hop/routed-17-hops` dart → tsp-js - -
- ## Coverage notes **tsp-js: the #77 XSCS-body cases cannot run end to end** (tswg-tsp-specification#77)