- server: relay storing signed objects (PUT/GET), per-IP rate limiting, per-subject quota (1000), one-response-per-request, pagination, /v1/healthz /v1/readyz /v1/metrics - verify: signature-verifying trust evaluator; every object is checked via env.Verify(), approvals via VerifyApprovalResponse, revocations via VerifyRevocationOf; k-of-n approval quorum - docs: TRUST-MODEL.md and API.md describing issuer-anchored signatures and the endpoint/status-code contract - tests: server, verify, and ratelimit packages
313 lines
17 KiB
JSON
313 lines
17 KiB
JSON
{
|
|
"format": "trust.n1ko.dev TCE test vectors",
|
|
"tce_version": 1,
|
|
"magic_hex": "74727573742e6e316b6f2e6465762f7463652f3100",
|
|
"magic_ascii": "trust.n1ko.dev/tce/1\\x00",
|
|
"parties": {
|
|
"NikoCraft": {
|
|
"seed_hex": "0101010101010101010101010101010101010101010101010101010101010101",
|
|
"pubkey_hex": "8a88e3dd7409f195fd52db2d3cba5d72ca6709bf1d94121bf3748801b40f6f5c",
|
|
"address": "trust1qz9g3c7awsylr90a2tdj6096t4ev5ecfhuwegysm7d6gsqd5pah4c5jya75"
|
|
},
|
|
"Niko": {
|
|
"seed_hex": "0202020202020202020202020202020202020202020202020202020202020202",
|
|
"pubkey_hex": "8139770ea87d175f56a35466c34c7ecccb8d8a91b4ee37a25df60f5b8fc9b394",
|
|
"address": "trust1qzqnjacw4p73wh6k5d2xds6v0mxvhrv2jx6wudazthmq7ku0exeeg4qse9s"
|
|
}
|
|
},
|
|
"vectors": [
|
|
{
|
|
"name": "identity/nikocraft",
|
|
"description": "Self-asserted identity registration. The alias is signed here and nowhere else.",
|
|
"tce_hex": "74727573742e6e316b6f2e6465762f7463652f3100010100208a88e3dd7409f195fd52db2d3cba5d72ca6709bf1d94121bf3748801b40f6f5c094e696b6f437261667480e2cfaa06",
|
|
"tce_len": 72,
|
|
"object_id_hex": "6332667904df9f87a66c5f96a6911080ce33044e92e496fc1714f11d644bd833",
|
|
"signer_pubkey_hex": "8a88e3dd7409f195fd52db2d3cba5d72ca6709bf1d94121bf3748801b40f6f5c",
|
|
"signer_address": "trust1qz9g3c7awsylr90a2tdj6096t4ev5ecfhuwegysm7d6gsqd5pah4c5jya75",
|
|
"signature_hex": "56d6ab4cffcd91ddab105e2e0f8634fbfcfb6ebf8566056f8eeb1a75d0ccfcab84cc2db03080e3468ce138f56e3f78077253892df9ae9a1f0a03dba4ac86b60a",
|
|
"json": {
|
|
"type": "identity",
|
|
"version": 1,
|
|
"identity": "trust1qz9g3c7awsylr90a2tdj6096t4ev5ecfhuwegysm7d6gsqd5pah4c5jya75",
|
|
"alias": "NikoCraft",
|
|
"created_at": 1700000000
|
|
}
|
|
},
|
|
{
|
|
"name": "identity/niko",
|
|
"description": "Second identity used as the subject and approver in later vectors.",
|
|
"tce_hex": "74727573742e6e316b6f2e6465762f7463652f3100010100208139770ea87d175f56a35466c34c7ecccb8d8a91b4ee37a25df60f5b8fc9b394044e696b6f80e2cfaa06",
|
|
"tce_len": 67,
|
|
"object_id_hex": "b612147a944ce5f216a4b36638f15b512060bb61114d54e7edab69fdf425d299",
|
|
"signer_pubkey_hex": "8139770ea87d175f56a35466c34c7ecccb8d8a91b4ee37a25df60f5b8fc9b394",
|
|
"signer_address": "trust1qzqnjacw4p73wh6k5d2xds6v0mxvhrv2jx6wudazthmq7ku0exeeg4qse9s",
|
|
"signature_hex": "a9381cc2641c6d4324d1b5c8fd3418f9d1c870e65600a2cef077db3f993690202c66fd2ff0df1637bd95d28b8c3ac283e86305acf8c2011018762bf71ad2660c",
|
|
"json": {
|
|
"type": "identity",
|
|
"version": 1,
|
|
"identity": "trust1qzqnjacw4p73wh6k5d2xds6v0mxvhrv2jx6wudazthmq7ku0exeeg4qse9s",
|
|
"alias": "Niko",
|
|
"created_at": 1700000000
|
|
}
|
|
},
|
|
{
|
|
"name": "claim/boolean",
|
|
"description": "Single boolean statement. The server attaches no meaning to the key.",
|
|
"tce_hex": "74727573742e6e316b6f2e6465762f7463652f3100020100208a88e3dd7409f195fd52db2d3cba5d72ca6709bf1d94121bf3748801b40f6f5c00208139770ea87d175f56a35466c34c7ecccb8d8a91b4ee37a25df60f5b8fc9b394010c6578616d706c652e666c61670280e2cfaa068085d5aa060110000102030405060708090a0b0c0d0e0f",
|
|
"tce_len": 134,
|
|
"object_id_hex": "d3f3e2140658b73214643b95e02dc5a7051207b6f191df940cd38324a06a0796",
|
|
"signer_pubkey_hex": "8a88e3dd7409f195fd52db2d3cba5d72ca6709bf1d94121bf3748801b40f6f5c",
|
|
"signer_address": "trust1qz9g3c7awsylr90a2tdj6096t4ev5ecfhuwegysm7d6gsqd5pah4c5jya75",
|
|
"signature_hex": "86311b1f5416cdc869e91777eae2867c96cebd64580eae8dfcce1a72a27546a2b1ed19cd70ddfbbfe09e18c85ee408c94bef5db574b01e8d2b8c57825625df00",
|
|
"json": {
|
|
"type": "claim",
|
|
"version": 1,
|
|
"issuer": "trust1qz9g3c7awsylr90a2tdj6096t4ev5ecfhuwegysm7d6gsqd5pah4c5jya75",
|
|
"subject": "trust1qzqnjacw4p73wh6k5d2xds6v0mxvhrv2jx6wudazthmq7ku0exeeg4qse9s",
|
|
"claims": {
|
|
"example.flag": true
|
|
},
|
|
"created_at": 1700000000,
|
|
"expires_at": 1700086400,
|
|
"serial": 1,
|
|
"nonce": "000102030405060708090a0b0c0d0e0f"
|
|
}
|
|
},
|
|
{
|
|
"name": "claim/all-value-types",
|
|
"description": "Every v1 value type in one claim, supplied out of order to exercise key sorting. expires_at 0 means the claim does not expire.",
|
|
"tce_hex": "74727573742e6e316b6f2e6465762f7463652f3100020100208a88e3dd7409f195fd52db2d3cba5d72ca6709bf1d94121bf3748801b40f6f5c00208139770ea87d175f56a35466c34c7ecccb8d8a91b4ee37a25df60f5b8fc9b3940507612e6669727374010d6578616d706c652e6c6576656c040234320c6578616d706c652e72616e6b03055b5649505d0d6578616d706c652e726174696f0403312e35067a2e6c6173740080e2cfaa06000210101112131415161718191a1b1c1d1e1f",
|
|
"tce_len": 190,
|
|
"object_id_hex": "efd132a9aac2a6e0ba6d51ce7387af6ac69fa75081913f41f04e6b290bf9d2c9",
|
|
"signer_pubkey_hex": "8a88e3dd7409f195fd52db2d3cba5d72ca6709bf1d94121bf3748801b40f6f5c",
|
|
"signer_address": "trust1qz9g3c7awsylr90a2tdj6096t4ev5ecfhuwegysm7d6gsqd5pah4c5jya75",
|
|
"signature_hex": "83c9a101d73c2cf80d163e6bc4ffd83e2199bfe889b5fdc3c5d68f41c3c80b53a1e8489d17f718cb186da6f435808aa7d7cadccf2cd96bbb2693eeafac655b01",
|
|
"note": "input key order was z.last, example.rank, a.first, example.level, example.ratio; canonical order is a.first, example.level, example.ratio, example.rank, z.last",
|
|
"json": {
|
|
"type": "claim",
|
|
"version": 1,
|
|
"issuer": "trust1qz9g3c7awsylr90a2tdj6096t4ev5ecfhuwegysm7d6gsqd5pah4c5jya75",
|
|
"subject": "trust1qzqnjacw4p73wh6k5d2xds6v0mxvhrv2jx6wudazthmq7ku0exeeg4qse9s",
|
|
"claims": {
|
|
"a.first": false,
|
|
"example.level": 42,
|
|
"example.ratio": 1.5,
|
|
"example.rank": "[VIP]",
|
|
"z.last": null
|
|
},
|
|
"created_at": 1700000000,
|
|
"expires_at": 0,
|
|
"serial": 2,
|
|
"nonce": "101112131415161718191a1b1c1d1e1f"
|
|
}
|
|
},
|
|
{
|
|
"name": "revocation/boolean-claim",
|
|
"description": "Signed withdrawal of claim/boolean by its issuer.",
|
|
"tce_hex": "74727573742e6e316b6f2e6465762f7463652f3100030100208a88e3dd7409f195fd52db2d3cba5d72ca6709bf1d94121bf3748801b40f6f5c20d3f3e2140658b73214643b95e02dc5a7051207b6f191df940cd38324a06a07960a73757065727365646564e4e2cfaa0610202122232425262728292a2b2c2d2e2f",
|
|
"tce_len": 123,
|
|
"object_id_hex": "1993a8f417337208e06d83cbf3f823c8925912b119e96e127e4a302137e78457",
|
|
"signer_pubkey_hex": "8a88e3dd7409f195fd52db2d3cba5d72ca6709bf1d94121bf3748801b40f6f5c",
|
|
"signer_address": "trust1qz9g3c7awsylr90a2tdj6096t4ev5ecfhuwegysm7d6gsqd5pah4c5jya75",
|
|
"signature_hex": "8e59b92b48209d88b6c28f292593ba1dfc8c1cfbd083790274c82ee7c61eaca06f477b5032efbfa0bd1c82746bd061af740b723610615ae1da306c6ebdcc800d",
|
|
"json": {
|
|
"type": "revocation",
|
|
"version": 1,
|
|
"issuer": "trust1qz9g3c7awsylr90a2tdj6096t4ev5ecfhuwegysm7d6gsqd5pah4c5jya75",
|
|
"claim_id": "d3f3e2140658b73214643b95e02dc5a7051207b6f191df940cd38324a06a0796",
|
|
"reason": "superseded",
|
|
"created_at": 1700000100,
|
|
"nonce": "202122232425262728292a2b2c2d2e2f"
|
|
}
|
|
},
|
|
{
|
|
"name": "approval_request/ban",
|
|
"description": "Opaque action with an opaque payload. The relay never interprets either.",
|
|
"tce_hex": "74727573742e6e316b6f2e6465762f7463652f3100040100208a88e3dd7409f195fd52db2d3cba5d72ca6709bf1d94121bf3748801b40f6f5c00208139770ea87d175f56a35466c34c7ecccb8d8a91b4ee37a25df60f5b8fc9b3940b6578616d706c652e62616e0106746172676574030553746576650942616e20537465766580e2cfaa069ee2cfaa0610303132333435363738393a3b3c3d3e3f",
|
|
"tce_len": 155,
|
|
"object_id_hex": "1a97e752bfa01c77fac8ef20ffd1d8b70ae3d2495f26e62d9b4fd65d2d525fbe",
|
|
"signer_pubkey_hex": "8a88e3dd7409f195fd52db2d3cba5d72ca6709bf1d94121bf3748801b40f6f5c",
|
|
"signer_address": "trust1qz9g3c7awsylr90a2tdj6096t4ev5ecfhuwegysm7d6gsqd5pah4c5jya75",
|
|
"signature_hex": "7628fb77a8b54a43d67277a759fa9a7cb2ad9b1e35ae8f87b0f29285a188ab876d73b228f83a1ae2bb54f7bc8e14236a389c893cc44aba82cd81b7b57d00060e",
|
|
"json": {
|
|
"type": "approval_request",
|
|
"version": 1,
|
|
"sender": "trust1qz9g3c7awsylr90a2tdj6096t4ev5ecfhuwegysm7d6gsqd5pah4c5jya75",
|
|
"recipient": "trust1qzqnjacw4p73wh6k5d2xds6v0mxvhrv2jx6wudazthmq7ku0exeeg4qse9s",
|
|
"action": "example.ban",
|
|
"payload": {
|
|
"target": "Steve"
|
|
},
|
|
"message": "Ban Steve",
|
|
"created_at": 1700000000,
|
|
"expires_at": 1700000030,
|
|
"nonce": "303132333435363738393a3b3c3d3e3f"
|
|
},
|
|
"request_id_hex": "1a97e752bfa01c77fac8ef20ffd1d8b70ae3d2495f26e62d9b4fd65d2d525fbe"
|
|
},
|
|
{
|
|
"name": "approval_response/allow",
|
|
"description": "Allow decision bound to the exact canonical request bytes.",
|
|
"tce_hex": "74727573742e6e316b6f2e6465762f7463652f31000501201a97e752bfa01c77fac8ef20ffd1d8b70ae3d2495f26e62d9b4fd65d2d525fbe00208139770ea87d175f56a35466c34c7ecccb8d8a91b4ee37a25df60f5b8fc9b394018ae2cfaa0610000102030405060708090a0b0c0d0e0f",
|
|
"tce_len": 113,
|
|
"object_id_hex": "ac2df7f3ed516ae73498439759911ab212c6bf00d7091993cae0683f1d5a68d4",
|
|
"signer_pubkey_hex": "8139770ea87d175f56a35466c34c7ecccb8d8a91b4ee37a25df60f5b8fc9b394",
|
|
"signer_address": "trust1qzqnjacw4p73wh6k5d2xds6v0mxvhrv2jx6wudazthmq7ku0exeeg4qse9s",
|
|
"signature_hex": "18798d4951092686d848c47ba885f370eeb21736c02163ab781cc6eed07d3baf76095640205ba12e89a83acbf92979cc932bfb9f336150bb947ef9631a744703",
|
|
"json": {
|
|
"type": "approval_response",
|
|
"version": 1,
|
|
"request_hash": "1a97e752bfa01c77fac8ef20ffd1d8b70ae3d2495f26e62d9b4fd65d2d525fbe",
|
|
"responder": "trust1qzqnjacw4p73wh6k5d2xds6v0mxvhrv2jx6wudazthmq7ku0exeeg4qse9s",
|
|
"decision": "allow",
|
|
"created_at": 1700000010,
|
|
"nonce": "000102030405060708090a0b0c0d0e0f"
|
|
}
|
|
},
|
|
{
|
|
"name": "approval_response/deny",
|
|
"description": "Deny decision. Differs from allow in exactly one byte, so a verifier that ignores the decision field is detectable.",
|
|
"tce_hex": "74727573742e6e316b6f2e6465762f7463652f31000501201a97e752bfa01c77fac8ef20ffd1d8b70ae3d2495f26e62d9b4fd65d2d525fbe00208139770ea87d175f56a35466c34c7ecccb8d8a91b4ee37a25df60f5b8fc9b394008ae2cfaa0610000102030405060708090a0b0c0d0e0f",
|
|
"tce_len": 113,
|
|
"object_id_hex": "fa5021845550155f7df3f27c0aa68d461098c67994270906be51d7296e8b5cbe",
|
|
"signer_pubkey_hex": "8139770ea87d175f56a35466c34c7ecccb8d8a91b4ee37a25df60f5b8fc9b394",
|
|
"signer_address": "trust1qzqnjacw4p73wh6k5d2xds6v0mxvhrv2jx6wudazthmq7ku0exeeg4qse9s",
|
|
"signature_hex": "5b9f26a3b3f9ddbb3d687feb7e4508c116205c8f4435bd9ebe24a984d3c53bcd932e6d28d688aff9cf17c6d7a5c2606cfcb8fc7dca8fcad9afe1943eff851b0b",
|
|
"json": {
|
|
"type": "approval_response",
|
|
"version": 1,
|
|
"request_hash": "1a97e752bfa01c77fac8ef20ffd1d8b70ae3d2495f26e62d9b4fd65d2d525fbe",
|
|
"responder": "trust1qzqnjacw4p73wh6k5d2xds6v0mxvhrv2jx6wudazthmq7ku0exeeg4qse9s",
|
|
"decision": "deny",
|
|
"created_at": 1700000010,
|
|
"nonce": "000102030405060708090a0b0c0d0e0f"
|
|
}
|
|
},
|
|
{
|
|
"name": "auth_assertion/ws",
|
|
"description": "Proof of key possession, bound to one server-issued challenge and to the audience, so it cannot be replayed to another server.",
|
|
"tce_hex": "74727573742e6e316b6f2e6465762f7463652f3100060100208139770ea87d175f56a35466c34c7ecccb8d8a91b4ee37a25df60f5b8fc9b39420a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f900277730e74727573742e6e316b6f2e64657680e2cfaa06",
|
|
"tce_len": 113,
|
|
"object_id_hex": "db42dfb56ed669d71c9a4990aace4bff03c1e9ea17619a8343261ef3c3102512",
|
|
"signer_pubkey_hex": "8139770ea87d175f56a35466c34c7ecccb8d8a91b4ee37a25df60f5b8fc9b394",
|
|
"signer_address": "trust1qzqnjacw4p73wh6k5d2xds6v0mxvhrv2jx6wudazthmq7ku0exeeg4qse9s",
|
|
"signature_hex": "e8a24b337ccf8af34f12b0243b7fe88e7f9c15f58eac38dc84dea38833f8fc72ce5855ae8f0c3b81bb4b5450ce5981273dd7fbde4e20f850f2b07af8ffb9420a",
|
|
"json": {
|
|
"type": "auth_assertion",
|
|
"version": 1,
|
|
"identity": "trust1qzqnjacw4p73wh6k5d2xds6v0mxvhrv2jx6wudazthmq7ku0exeeg4qse9s",
|
|
"challenge": "a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90",
|
|
"scope": "ws",
|
|
"audience": "trust.n1ko.dev",
|
|
"created_at": 1700000000
|
|
}
|
|
}
|
|
],
|
|
"number_canonicalization": {
|
|
"accept": {
|
|
"0": "0",
|
|
"-0": "0",
|
|
"0.0": "0",
|
|
"0e10": "0",
|
|
"1": "1",
|
|
"1.0": "1",
|
|
"1e0": "1",
|
|
"1.000": "1",
|
|
"10": "10",
|
|
"1e1": "10",
|
|
"100": "100",
|
|
"1e2": "100",
|
|
"-1": "-1",
|
|
"-1.0": "-1",
|
|
"1.5": "1.5",
|
|
"1.50": "1.5",
|
|
"0.1": "0.1",
|
|
"1e-1": "0.1",
|
|
"0.001": "0.001",
|
|
"1e-3": "0.001",
|
|
"12345678901234567890": "12345678901234567890",
|
|
"1.23e2": "123",
|
|
"123": "123",
|
|
"-0.5": "-0.5",
|
|
"1e18": "1000000000000000000",
|
|
"0.000000000000000001": "0.000000000000000001",
|
|
"-1e-18": "-0.000000000000000001",
|
|
"999999999999999999999999": "999999999999999999999999"
|
|
},
|
|
"reject": {
|
|
"": "number: not a valid JSON number: ''",
|
|
"+1": "number: not a valid JSON number: '+1'",
|
|
"01": "number: not a valid JSON number: '01'",
|
|
"1.": "number: not a valid JSON number: '1.'",
|
|
".5": "number: not a valid JSON number: '.5'",
|
|
"1e": "number: not a valid JSON number: '1e'",
|
|
"1e+": "number: not a valid JSON number: '1e+'",
|
|
"--1": "number: not a valid JSON number: '--1'",
|
|
"1.2.3": "number: not a valid JSON number: '1.2.3'",
|
|
"0x10": "number: not a valid JSON number: '0x10'",
|
|
"Infinity": "number: not a valid JSON number: 'Infinity'",
|
|
"NaN": "number: not a valid JSON number: 'NaN'",
|
|
"1_000": "number: not a valid JSON number: '1_000'",
|
|
" 1": "number: not a valid JSON number: ' 1'",
|
|
"1 ": "number: not a valid JSON number: '1 '",
|
|
"1e99999": "number: exponent has too many digits",
|
|
"10000000000000000000000000000000000000000": "number: too many integer digits",
|
|
"0.0000000000000000011": "number: too many fractional digits"
|
|
}
|
|
},
|
|
"rejects": [
|
|
{
|
|
"name": "empty",
|
|
"tce_hex": "",
|
|
"reason": "no magic"
|
|
},
|
|
{
|
|
"name": "magic_truncated",
|
|
"tce_hex": "74727573742e6e316b6f2e6465762f7463652f31",
|
|
"reason": "magic is incomplete"
|
|
},
|
|
{
|
|
"name": "magic_wrong_version",
|
|
"tce_hex": "74727573742e6e316b6f2e6465762f7463652f3200020100208a88e3dd7409f195fd52db2d3cba5d72ca6709bf1d94121bf3748801b40f6f5c00208139770ea87d175f56a35466c34c7ecccb8d8a91b4ee37a25df60f5b8fc9b394010c6578616d706c652e666c61670280e2cfaa068085d5aa060110000102030405060708090a0b0c0d0e0f",
|
|
"reason": "framing version is not 1"
|
|
},
|
|
{
|
|
"name": "unknown_object_tag",
|
|
"tce_hex": "74727573742e6e316b6f2e6465762f7463652f31007f0100208a88e3dd7409f195fd52db2d3cba5d72ca6709bf1d94121bf3748801b40f6f5c00208139770ea87d175f56a35466c34c7ecccb8d8a91b4ee37a25df60f5b8fc9b394010c6578616d706c652e666c61670280e2cfaa068085d5aa060110000102030405060708090a0b0c0d0e0f",
|
|
"reason": "object tag 0x7f is not defined"
|
|
},
|
|
{
|
|
"name": "object_tag_zero",
|
|
"tce_hex": "74727573742e6e316b6f2e6465762f7463652f3100000100208a88e3dd7409f195fd52db2d3cba5d72ca6709bf1d94121bf3748801b40f6f5c00208139770ea87d175f56a35466c34c7ecccb8d8a91b4ee37a25df60f5b8fc9b394010c6578616d706c652e666c61670280e2cfaa068085d5aa060110000102030405060708090a0b0c0d0e0f",
|
|
"reason": "object tag 0x00 is permanently reserved"
|
|
},
|
|
{
|
|
"name": "truncated_body",
|
|
"tce_hex": "74727573742e6e316b6f2e6465762f7463652f3100020100208a88e3dd7409f195fd52db2d3cba5d72ca6709bf1d94121bf3748801b40f6f5c00208139770ea87d175f56a35466c34c7ecccb8d8a91b4ee37a25df60f5b8fc9b394010c6578616d706c652e666c61670280e2cfaa068085d5aa060110000102030405060708090a0b0c0d0e",
|
|
"reason": "input ends inside the nonce"
|
|
},
|
|
{
|
|
"name": "trailing_byte",
|
|
"tce_hex": "74727573742e6e316b6f2e6465762f7463652f3100020100208a88e3dd7409f195fd52db2d3cba5d72ca6709bf1d94121bf3748801b40f6f5c00208139770ea87d175f56a35466c34c7ecccb8d8a91b4ee37a25df60f5b8fc9b394010c6578616d706c652e666c61670280e2cfaa068085d5aa060110000102030405060708090a0b0c0d0e0f00",
|
|
"reason": "trailing data after the object"
|
|
},
|
|
{
|
|
"name": "non_minimal_uvarint",
|
|
"tce_hex": "74727573742e6e316b6f2e6465762f7463652f310002810000208a88e3dd7409f195fd52db2d3cba5d72ca6709bf1d94121bf3748801b40f6f5c00208139770ea87d175f56a35466c34c7ecccb8d8a91b4ee37a25df60f5b8fc9b394010c6578616d706c652e666c61670280e2cfaa068085d5aa060110000102030405060708090a0b0c0d0e0f",
|
|
"reason": "version encoded as a non-minimal uvarint"
|
|
},
|
|
{
|
|
"name": "unsorted_map_keys",
|
|
"reason": "map entries not in ascending bytewise key order",
|
|
"note": "constructed by swapping the two entries of a two-key claim"
|
|
},
|
|
{
|
|
"name": "duplicate_map_key",
|
|
"reason": "the same key appears twice in one map"
|
|
},
|
|
{
|
|
"name": "reserved_value_tag",
|
|
"reason": "value tags 0x05, 0x06 and 0x07 are reserved and must be rejected in v1 rather than skipped"
|
|
}
|
|
]
|
|
}
|