From 94b1c7667cd78244d7696fb1137d5dcd28c2263e Mon Sep 17 00:00:00 2001 From: Michael Heller <21163552+mdheller@users.noreply.github.com> Date: Sat, 4 Jul 2026 11:29:47 -0400 Subject: [PATCH] fix(fixtures): recover corrupt lane1_submit_request frame (dropped nibble) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `make verify` (CI `ci` job) was red on main: verify_fixtures_strict.py aborted with "non-hexadecimal number found" because the lane1_submit_request frame in fixtures/vectors_hex_prophet_lane1.txt was odd-length (1561 hex chars) — a single hex nibble was dropped when the vector was first committed (bee3137), so this job has been red since. The other five lane1 frames verify cleanly. The frame carries a BLAKE2b-MAC AEAD tag, which acts as a strong recovery oracle: brute-forcing a single-nibble insertion at every position yields exactly one reconstruction whose recomputed blake2b(aad, key=0) equals its embedded tag — a dropped 'f' at hex position 1035. That uniqueness (false-match ~2^-128) makes this a verified recovery of the original frame, not a fabricated value. The frame now passes the same AEAD check as lane1 frames 2-6. make verify green end-to-end. --- fixtures/vectors_hex_prophet_lane1.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fixtures/vectors_hex_prophet_lane1.txt b/fixtures/vectors_hex_prophet_lane1.txt index de92b44..000fa8a 100644 --- a/fixtures/vectors_hex_prophet_lane1.txt +++ b/fixtures/vectors_hex_prophet_lane1.txt @@ -1,4 +1,4 @@ -lane1_submit_request f502f32af502f301f502f300f502f512d0f300d9242e82cc40704bef88147ddd2d36f2692a4d0d6e7e3c1eb8ff43175a34cf84d0f300169e96ef5438b146c4fc18af142d3ecb5fab99e8da18106944f4d7302ee2901db4f30165766964656e63652e7631a2f3025375626d697445766964656e63652e524551f2f6221a6374782d636173652d303030311668756d616e3a70657465722c726f6c653a646f6d61696e5f73757065727669736f722873636f70653a64696c6967656e63652f6d656d6f01002a706f6c6963792d62756e646c652d323032362d30341a636173655f65766964656e6365147265737472696374656401306f626a2d636173652d303030312d636f6e74726163742d6110636f6e74726163741e6170706c69636174696f6e2f7064660236546172676574436f20537570706c6965722041677265656d656e748e017368613235363a376437613063396531623531643562336438633066346139656638633331383066303166376232613131633264336534663561366237633864396530663131317662796f733a2f2f63616e6f6e6963616c2f636173652d303030312f636f6e7472616374732f737570706c6965722d61677265656d656e742e70646628323032362d30342d31325431323a30303a30305a0610746172676574636f10737570706c696572207465726d696e6174696f6e2d7269736b003270726762d636173652d303030312d636f6e74726163742d6126676f6f676c655f64726976655f696e676573742c6f70657261746f725f73656c65637465645f636f70791668756d616e3a706574657228323032362d30342d31325431323a30333a30305a486764726976653a2f2f636173652d303030312f736f757263652f636f6e74726163742d61042872656b6f723a2f2f656e7472792f6162633132332c73636974743a2f2f726563656970742f78797a37383900027a53656c65637465642061732063616e6469646174652065766964656e636520666f72207465726d696e6174696f6e2d726967687473207265766965772ee1f30158a62c29f0a29b9b097983c66e5b372a +lane1_submit_request f502f32af502f301f502f300f502f512d0f300d9242e82cc40704bef88147ddd2d36f2692a4d0d6e7e3c1eb8ff43175a34cf84d0f300169e96ef5438b146c4fc18af142d3ecb5fab99e8da18106944f4d7302ee2901db4f30165766964656e63652e7631a2f3025375626d697445766964656e63652e524551f2f6221a6374782d636173652d303030311668756d616e3a70657465722c726f6c653a646f6d61696e5f73757065727669736f722873636f70653a64696c6967656e63652f6d656d6f01002a706f6c6963792d62756e646c652d323032362d30341a636173655f65766964656e6365147265737472696374656401306f626a2d636173652d303030312d636f6e74726163742d6110636f6e74726163741e6170706c69636174696f6e2f7064660236546172676574436f20537570706c6965722041677265656d656e748e017368613235363a376437613063396531623531643562336438633066346139656638633331383066303166376232613131633264336534663561366237633864396530663131317662796f733a2f2f63616e6f6e6963616c2f636173652d303030312f636f6e7472616374732f737570706c6965722d61677265656d656e742e70646628323032362d30342d31325431323a30303a30305a0610746172676574636f10737570706c696572207465726d696e6174696f6e2d7269736b003270726f762d636173652d303030312d636f6e74726163742d6126676f6f676c655f64726976655f696e676573742c6f70657261746f725f73656c65637465645f636f70791668756d616e3a706574657228323032362d30342d31325431323a30333a30305a486764726976653a2f2f636173652d303030312f736f757263652f636f6e74726163742d61042872656b6f723a2f2f656e7472792f6162633132332c73636974743a2f2f726563656970742f78797a37383900027a53656c65637465642061732063616e6469646174652065766964656e636520666f72207465726d696e6174696f6e2d726967687473207265766965772ee1f30158a62c29f0a29b9b097983c66e5b372a lane1_submit_response f502f32af502f301f502f300f502f512d0f300d9242e82cc40704bef88147ddd2d36f2692a4d0d6e7e3c1eb8ff43175a34cf84d0f300169e96ef5438b146c4fc18af142d3ecb5fab99e8da18106944f4d7302ee2901db4f30165766964656e63652e7631a2f3025375626d697445766964656e63652e525350b1f601247375622d636173652d303030312d3030303134726370742d636173652d303030312d7375626d69742d3030303101306f626a2d636173652d303030312d636f6e74726163742d61127375626d6974746564e1f301ca972a6716c8eeac4b3520527afe99db lane1_verify_request f502f32af502f301f502f300f502f512d0f300d9242e82cc40704bef88147ddd2d36f2692a4d0d6e7e3c1eb8ff43175a34cf84d0f300169e96ef5438b146c4fc18af142d3ecb5fab99e8da18106944f4d7302ee2901db4f30165766964656e63652e7631a2f30256657269667945766964656e63652e524551e7f601247375622d636173652d303030312d303030311a6374782d636173652d303030310c7374726963742a706f6c6963792d62756e646c652d323032362d30341a636173655f65766964656e6365147265737472696374656401e1f301031544bd04c1e1a9ee4c8a86ab452be8 lane1_verify_response f502f32af502f301f502f300f502f512d0f300d9242e82cc40704bef88147ddd2d36f2692a4d0d6e7e3c1eb8ff43175a34cf84d0f300169e96ef5438b146c4fc18af142d3ecb5fab99e8da18106944f4d7302ee2901db4f30165766964656e63652e7631a2f30256657269667945766964656e63652e525350b3f601247375622d636173652d303030312d303030312a76657269666965645f776974685f74656e73696f6e1f85eb51b81eed3f295c8fc2f528cc3f34726370742d636173652d303030312d7665726966792d30303031042e72656b6f723a2f2f656e7472792f7665726966793435363273636974743a2f2f726563656970742f7265706c617932323200e1f3010a78a3f9e1e9cb34708b88ddee22bb59