From e6f51c61eceab1619c269a241a7a5006098aca66 Mon Sep 17 00:00:00 2001 From: dev Date: Mon, 5 Oct 2026 19:43:35 +0200 Subject: [PATCH] Stage 4b: each bit of FLAGS and RESERVED of both frames A fault that ignored the top bit of FLAGS of a .dkc passed the tests: the cases had FLAGS of 1, or random bytes with other bits set. The generator now writes each bit of FLAGS and of RESERVED alone, in the PRELUDE of a .dkc and in the frame of a .dkk, with the text of Go, and the tests on the VM and on Node.js try every bit of both frames. Co-Authored-By: Claude Opus 5.5 --- test/formats_framing_test.dart | 20 +++++++++--- test/vectors/formats_framing.json | 48 +++++++++++++++++++++++++++++ test/vectors/formats_vectors.g.dart | 6 ++++ tool/formats_go_vectors.go | 16 ++++++++++ 4 files changed, 85 insertions(+), 5 deletions(-) diff --git a/test/formats_framing_test.dart b/test/formats_framing_test.dart index c59ba23..49d84da 100644 --- a/test/formats_framing_test.dart +++ b/test/formats_framing_test.dart @@ -77,8 +77,15 @@ void main() { 'ERR_UNSUPPORTED_VERSION', ); } + // Every bit of FLAGS and of RESERVED, alone. for (final i in [5, 6, 7]) { - expect(codeOf(() => parsePrelude(withByte(i, 1))), 'ERR_INVALID_FLAGS'); + for (var bit = 1; bit < 256; bit *= 2) { + expect( + codeOf(() => parsePrelude(withByte(i, bit))), + 'ERR_INVALID_FLAGS', + reason: 'byte $i, bit $bit', + ); + } } Uint8List lengths(int h, int s) { final b = Uint8List.fromList(ok.sublist(0, 16)); @@ -192,10 +199,13 @@ void main() { 'ERR_UNSUPPORTED_VERSION', ); for (final i in [5, 6, 7]) { - expect( - codeOf(() => splitAccessKey(withByte(i, 1))), - 'ERR_INVALID_FLAGS', - ); + for (var bit = 1; bit < 256; bit *= 2) { + expect( + codeOf(() => splitAccessKey(withByte(i, bit))), + 'ERR_INVALID_FLAGS', + reason: 'byte $i, bit $bit', + ); + } } for (final n in [0, maxDkkBodyLen + 1]) { expect( diff --git a/test/vectors/formats_framing.json b/test/vectors/formats_framing.json index 438f102..c868c1d 100644 --- a/test/vectors/formats_framing.json +++ b/test/vectors/formats_framing.json @@ -12,6 +12,30 @@ {"hex":"444b43310100000000000079","result":"ERR_INTEGRITY","text":"capsule: truncated prelude: ERR_INTEGRITY"}, {"hex":"444b43310100000000000079000001","result":"ERR_INTEGRITY","text":"capsule: truncated prelude: ERR_INTEGRITY"}, {"hex":"444b4b3101000000000000790000","result":"ERR_INVALID_MAGIC","text":"capsule: ERR_INVALID_MAGIC"}, + {"hex":"444b43310101000000000079000001be","result":"ERR_INVALID_FLAGS","text":"capsule: flags 0x1, reserved 0x0000: ERR_INVALID_FLAGS"}, + {"hex":"444b43310102000000000079000001be","result":"ERR_INVALID_FLAGS","text":"capsule: flags 0x2, reserved 0x0000: ERR_INVALID_FLAGS"}, + {"hex":"444b43310104000000000079000001be","result":"ERR_INVALID_FLAGS","text":"capsule: flags 0x4, reserved 0x0000: ERR_INVALID_FLAGS"}, + {"hex":"444b43310108000000000079000001be","result":"ERR_INVALID_FLAGS","text":"capsule: flags 0x8, reserved 0x0000: ERR_INVALID_FLAGS"}, + {"hex":"444b43310110000000000079000001be","result":"ERR_INVALID_FLAGS","text":"capsule: flags 0x10, reserved 0x0000: ERR_INVALID_FLAGS"}, + {"hex":"444b43310120000000000079000001be","result":"ERR_INVALID_FLAGS","text":"capsule: flags 0x20, reserved 0x0000: ERR_INVALID_FLAGS"}, + {"hex":"444b43310140000000000079000001be","result":"ERR_INVALID_FLAGS","text":"capsule: flags 0x40, reserved 0x0000: ERR_INVALID_FLAGS"}, + {"hex":"444b43310180000000000079000001be","result":"ERR_INVALID_FLAGS","text":"capsule: flags 0x80, reserved 0x0000: ERR_INVALID_FLAGS"}, + {"hex":"444b43310100010000000079000001be","result":"ERR_INVALID_FLAGS","text":"capsule: flags 0x0, reserved 0x0100: ERR_INVALID_FLAGS"}, + {"hex":"444b43310100020000000079000001be","result":"ERR_INVALID_FLAGS","text":"capsule: flags 0x0, reserved 0x0200: ERR_INVALID_FLAGS"}, + {"hex":"444b43310100040000000079000001be","result":"ERR_INVALID_FLAGS","text":"capsule: flags 0x0, reserved 0x0400: ERR_INVALID_FLAGS"}, + {"hex":"444b43310100080000000079000001be","result":"ERR_INVALID_FLAGS","text":"capsule: flags 0x0, reserved 0x0800: ERR_INVALID_FLAGS"}, + {"hex":"444b43310100100000000079000001be","result":"ERR_INVALID_FLAGS","text":"capsule: flags 0x0, reserved 0x1000: ERR_INVALID_FLAGS"}, + {"hex":"444b43310100200000000079000001be","result":"ERR_INVALID_FLAGS","text":"capsule: flags 0x0, reserved 0x2000: ERR_INVALID_FLAGS"}, + {"hex":"444b43310100400000000079000001be","result":"ERR_INVALID_FLAGS","text":"capsule: flags 0x0, reserved 0x4000: ERR_INVALID_FLAGS"}, + {"hex":"444b43310100800000000079000001be","result":"ERR_INVALID_FLAGS","text":"capsule: flags 0x0, reserved 0x8000: ERR_INVALID_FLAGS"}, + {"hex":"444b43310100000100000079000001be","result":"ERR_INVALID_FLAGS","text":"capsule: flags 0x0, reserved 0x0001: ERR_INVALID_FLAGS"}, + {"hex":"444b43310100000200000079000001be","result":"ERR_INVALID_FLAGS","text":"capsule: flags 0x0, reserved 0x0002: ERR_INVALID_FLAGS"}, + {"hex":"444b43310100000400000079000001be","result":"ERR_INVALID_FLAGS","text":"capsule: flags 0x0, reserved 0x0004: ERR_INVALID_FLAGS"}, + {"hex":"444b43310100000800000079000001be","result":"ERR_INVALID_FLAGS","text":"capsule: flags 0x0, reserved 0x0008: ERR_INVALID_FLAGS"}, + {"hex":"444b43310100001000000079000001be","result":"ERR_INVALID_FLAGS","text":"capsule: flags 0x0, reserved 0x0010: ERR_INVALID_FLAGS"}, + {"hex":"444b43310100002000000079000001be","result":"ERR_INVALID_FLAGS","text":"capsule: flags 0x0, reserved 0x0020: ERR_INVALID_FLAGS"}, + {"hex":"444b43310100004000000079000001be","result":"ERR_INVALID_FLAGS","text":"capsule: flags 0x0, reserved 0x0040: ERR_INVALID_FLAGS"}, + {"hex":"444b43310100008000000079000001be","result":"ERR_INVALID_FLAGS","text":"capsule: flags 0x0, reserved 0x0080: ERR_INVALID_FLAGS"}, {"hex":"444b433104e200e50000000288148415","result":"ERR_UNSUPPORTED_VERSION","text":"capsule: framing version 4: ERR_UNSUPPORTED_VERSION"}, {"hex":"444b433101005b000000000100000000","result":"ERR_INVALID_FLAGS","text":"capsule: flags 0x0, reserved 0x5b00: ERR_INVALID_FLAGS"}, {"format":3,"hex":"444b4331030000000010000004000000","public_header_len":1048576,"result":"ok","sealed_control_len":67108864}, @@ -744,6 +768,30 @@ {"hex":"444b4b31010000000000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b","result":"ERR_INTEGRITY","text":"accesskey: truncated body: ERR_INTEGRITY"}, {"hex":"444b4b31010000000000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b4300","result":"ERR_INTEGRITY","text":"accesskey: data after BODY_CBOR: ERR_INTEGRITY"}, {"hex":"444b4b31010000000000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43010203","result":"ERR_INTEGRITY","text":"accesskey: data after BODY_CBOR: ERR_INTEGRITY"}, + {"hex":"444b4b31010100000000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_FLAGS","text":"accesskey: flags 0x1, reserved 0x000: ERR_INVALID_FLAGS"}, + {"hex":"444b4b31010200000000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_FLAGS","text":"accesskey: flags 0x2, reserved 0x000: ERR_INVALID_FLAGS"}, + {"hex":"444b4b31010400000000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_FLAGS","text":"accesskey: flags 0x4, reserved 0x000: ERR_INVALID_FLAGS"}, + {"hex":"444b4b31010800000000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_FLAGS","text":"accesskey: flags 0x8, reserved 0x000: ERR_INVALID_FLAGS"}, + {"hex":"444b4b31011000000000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_FLAGS","text":"accesskey: flags 0x10, reserved 0x000: ERR_INVALID_FLAGS"}, + {"hex":"444b4b31012000000000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_FLAGS","text":"accesskey: flags 0x20, reserved 0x000: ERR_INVALID_FLAGS"}, + {"hex":"444b4b31014000000000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_FLAGS","text":"accesskey: flags 0x40, reserved 0x000: ERR_INVALID_FLAGS"}, + {"hex":"444b4b31018000000000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_FLAGS","text":"accesskey: flags 0x80, reserved 0x000: ERR_INVALID_FLAGS"}, + {"hex":"444b4b31010001000000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_FLAGS","text":"accesskey: flags 0x0, reserved 0x100: ERR_INVALID_FLAGS"}, + {"hex":"444b4b31010002000000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_FLAGS","text":"accesskey: flags 0x0, reserved 0x200: ERR_INVALID_FLAGS"}, + {"hex":"444b4b31010004000000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_FLAGS","text":"accesskey: flags 0x0, reserved 0x400: ERR_INVALID_FLAGS"}, + {"hex":"444b4b31010008000000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_FLAGS","text":"accesskey: flags 0x0, reserved 0x800: ERR_INVALID_FLAGS"}, + {"hex":"444b4b31010010000000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_FLAGS","text":"accesskey: flags 0x0, reserved 0x1000: ERR_INVALID_FLAGS"}, + {"hex":"444b4b31010020000000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_FLAGS","text":"accesskey: flags 0x0, reserved 0x2000: ERR_INVALID_FLAGS"}, + {"hex":"444b4b31010040000000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_FLAGS","text":"accesskey: flags 0x0, reserved 0x4000: ERR_INVALID_FLAGS"}, + {"hex":"444b4b31010080000000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_FLAGS","text":"accesskey: flags 0x0, reserved 0x8000: ERR_INVALID_FLAGS"}, + {"hex":"444b4b31010000010000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_FLAGS","text":"accesskey: flags 0x0, reserved 0x001: ERR_INVALID_FLAGS"}, + {"hex":"444b4b31010000020000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_FLAGS","text":"accesskey: flags 0x0, reserved 0x002: ERR_INVALID_FLAGS"}, + {"hex":"444b4b31010000040000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_FLAGS","text":"accesskey: flags 0x0, reserved 0x004: ERR_INVALID_FLAGS"}, + {"hex":"444b4b31010000080000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_FLAGS","text":"accesskey: flags 0x0, reserved 0x008: ERR_INVALID_FLAGS"}, + {"hex":"444b4b31010000100000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_FLAGS","text":"accesskey: flags 0x0, reserved 0x010: ERR_INVALID_FLAGS"}, + {"hex":"444b4b31010000200000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_FLAGS","text":"accesskey: flags 0x0, reserved 0x020: ERR_INVALID_FLAGS"}, + {"hex":"444b4b31010000400000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_FLAGS","text":"accesskey: flags 0x0, reserved 0x040: ERR_INVALID_FLAGS"}, + {"hex":"444b4b31010000800000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_FLAGS","text":"accesskey: flags 0x0, reserved 0x080: ERR_INVALID_FLAGS"}, {"hex":"444b4b31019500000000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_FLAGS","text":"accesskey: flags 0x95, reserved 0x000: ERR_INVALID_FLAGS"}, {"hex":"444b4b310100000000000000a70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INTEGRITY","text":"accesskey: BODY_LEN 0 outside 1..16777216: ERR_INTEGRITY"}, {"hex":"444b4b310100000001000000a70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INTEGRITY","text":"accesskey: truncated body: ERR_INTEGRITY"}, diff --git a/test/vectors/formats_vectors.g.dart b/test/vectors/formats_vectors.g.dart index 9d0d9ef..b5d02cd 100644 --- a/test/vectors/formats_vectors.g.dart +++ b/test/vectors/formats_vectors.g.dart @@ -11,6 +11,9 @@ const formatsFramingJson = r''' "prelude": [ {"hex":"","result":"ERR_INVALID_MAGIC","text":"capsule: ERR_INVALID_MAGIC"}, {"hex":"444b4b3101000000000000790000","result":"ERR_INVALID_MAGIC","text":"capsule: ERR_INVALID_MAGIC"}, + {"hex":"444b43310180000000000079000001be","result":"ERR_INVALID_FLAGS","text":"capsule: flags 0x80, reserved 0x0000: ERR_INVALID_FLAGS"}, + {"hex":"444b43310100800000000079000001be","result":"ERR_INVALID_FLAGS","text":"capsule: flags 0x0, reserved 0x8000: ERR_INVALID_FLAGS"}, + {"hex":"444b43310100008000000079000001be","result":"ERR_INVALID_FLAGS","text":"capsule: flags 0x0, reserved 0x0080: ERR_INVALID_FLAGS"}, {"hex":"444b433103000000551e1a8a00100001","result":"ERR_INTEGRITY","text":"capsule: PUBLIC_HEADER_LEN 1428036234 outside 1..1048576: ERR_INTEGRITY"}, {"hex":"444b4331007f0000522449dc80000007","result":"ERR_UNSUPPORTED_VERSION","text":"capsule: framing version 0: ERR_UNSUPPORTED_VERSION"}, {"hex":"444b433101000043c289e71600000079","result":"ERR_INVALID_FLAGS","text":"capsule: flags 0x0, reserved 0x0043: ERR_INVALID_FLAGS"}, @@ -106,6 +109,9 @@ const formatsFramingJson = r''' "dkk": [ {"capsule_digest":"600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","capsule_id":"fe68d3b3bb59db0c14b7ef57d8d6cb5e","credential_id":"e3c7be83cbf1fbd6b115c96411b3bd01","critical":[],"hex":"444b4b31010000000000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","material":"9c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c3657801","noncritical":[],"result":"ok","type":"x25519"}, {"hex":"444b4b","result":"ERR_INVALID_MAGIC","text":"accesskey: ERR_INVALID_MAGIC"}, + {"hex":"444b4b31010100000000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_FLAGS","text":"accesskey: flags 0x1, reserved 0x000: ERR_INVALID_FLAGS"}, + {"hex":"444b4b31010001000000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_FLAGS","text":"accesskey: flags 0x0, reserved 0x100: ERR_INVALID_FLAGS"}, + {"hex":"444b4b31010000010000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_FLAGS","text":"accesskey: flags 0x0, reserved 0x001: ERR_INVALID_FLAGS"}, {"hex":"444b4b31019500000000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_FLAGS","text":"accesskey: flags 0x95, reserved 0x000: ERR_INVALID_FLAGS"}, {"hex":"574b4b31010000000000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_MAGIC","text":"accesskey: ERR_INVALID_MAGIC"}, {"hex":"444b4b41010000000000008ca70073646174656b6579732d6163636573732d6b657901010250e3c7be83cbf1fbd6b115c96411b3bd010350fe68d3b3bb59db0c14b7ef57d8d6cb5e04667832353531390558209c09aeda759a8664a98120435fe0f6bf850000ac5ef0f9853ff46144c365780106a1005820600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43","result":"ERR_INVALID_MAGIC","text":"accesskey: ERR_INVALID_MAGIC"}, diff --git a/tool/formats_go_vectors.go b/tool/formats_go_vectors.go index afeea8e..29357ce 100644 --- a/tool/formats_go_vectors.go +++ b/tool/formats_go_vectors.go @@ -418,6 +418,14 @@ func preludeCases() []Case { add(base[:n]) } add(unhex("444b4b3101000000000000790000")) + // Each bit of FLAGS and of RESERVED alone. + for i := 5; i < 8; i++ { + for bit := range 8 { + b := bytes.Clone(base) + b[i] = 1 << bit + add(b) + } + } lengths := []uint32{0, 1, 2, 121, 1 << 20, 1<<20 + 1, 64 << 20, 64<<20 + 1, 1<<31 + 7, 0xffffffff} for range 220 { b := bytes.Clone(base) @@ -541,6 +549,14 @@ func dkkCases(dkks map[string][]byte) []Case { } add(append(bytes.Clone(base), 0)) add(append(bytes.Clone(base), 1, 2, 3)) + // Each bit of FLAGS and of RESERVED alone. + for i := 5; i < 8; i++ { + for bit := range 8 { + b := bytes.Clone(base) + b[i] = 1 << bit + add(b) + } + } for range 50 { b := bytes.Clone(base) switch rng.IntN(5) {