Faults injected one at a time found four that the vectors let through:
R2 at 32 segments, R3 counting code points instead of UTF-16 code units
in an astral NFD, U+036F kept by normalizeWords, and DEL let through by
checkWords. The generators now write both sides of each limit: 32 and 33
segments, 255 and 256 bytes in letters of two and four bytes, 255 and 256
UTF-16 code units of NFD and 252 and 258 from astral decompositions,
bases of 8 and 9 runes, extensions of 3 and 4 also astral, the first and
the last mark of U+0300 to U+036F and their neighbours, and U+001F,
U+007E, U+007F, U+0080 and U+00A0 in a word. All four faults are caught
now.
wordKeyPassword is the password P of spec §38.1, as wordKeySalt is S, and
wordKey uses both: the tests compiled to JavaScript check P against the
one of Go, so that a wrong separator of the words is caught there too,
not only by the keys of 600 000 iterations on the VM.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
"description":"The results of package wordkey of the Go reference (spec \u00a738.1) for lib/src/wordkey.dart; see tool/wordkey_go_vectors.go. Binary values are lower-case hex. normalize: a text and the words of wordkey.Normalize. check: words and the result of wordkey.Check, ok or the text of the error. keys: words, chain_hash, round and capsule_id; salt, the salt S of \u00a738.1; key, wordkey.Key; key_1000, the same PBKDF2-HMAC-SHA256 with 1000 iterations; recipient, that of wordkey.Identity. The first key is the vector of \u00a738.1.",
"description":"The results of package wordkey of the Go reference (spec \u00a738.1) for lib/src/wordkey.dart; see tool/wordkey_go_vectors.go. Binary values are lower-case hex. normalize: a text and the words of wordkey.Normalize. check: words and the result of wordkey.Check, ok or the text of the error. keys: words, chain_hash, round and capsule_id; password and salt, P and S of \u00a738.1; key, wordkey.Key; key_1000, the same PBKDF2-HMAC-SHA256 with 1000 iterations; recipient, that of wordkey.Identity. The first key is the vector of \u00a738.1.",
{"name":"line and paragraph separators","in":"756e6fe280a8646f73e280a974726573","words":["756e6f","646f73","74726573"]},
{"name":"control characters that are not white space","in":"756e6f01646f737f726573","words":["756e6f01646f737f726573"]},
{"name":"the first and the last mark of U+0300 to U+036F","in":"61cc8062cdaf63","words":["616263"]},
{"name":"U+02FF and U+0370, around U+0300 to U+036F","in":"61cbbf62cdb063","words":["61cbbf62cdb163"]},
{"name":"every mark of U+0300 to U+036F","in":"78cc80cc81cc82cc83cc84cc85cc86cc87cc88cc89cc8acc8bcc8ccc8dcc8ecc8fcc90cc91cc92cc93cc94cc95cc96cc97cc98cc99cc9acc9bcc9ccc9dcc9ecc9fcca0cca1cca2cca3cca4cca5cca6cca7cca8cca9ccaaccabccacccadccaeccafccb0ccb1ccb2ccb3ccb4ccb5ccb6ccb7ccb8ccb9ccbaccbbccbcccbdccbeccbfcd80cd81cd82cd83cd84cd85cd86cd87cd88cd89cd8acd8bcd8ccd8dcd8ecd8fcd90cd91cd92cd93cd94cd95cd96cd97cd98cd99cd9acd9bcd9ccd9dcd9ecd9fcda0cda1cda2cda3cda4cda5cda6cda7cda8cda9cdaacdabcdaccdadcdaecdaf79","words":["7879"]},
{"name":"white space 1 of \u00a738.1","in":"610962","words":["61","62"]},
{"name":"white space 2 of \u00a738.1","in":"610a62","words":["61","62"]},
{"name":"white space 3 of \u00a738.1","in":"610b62","words":["61","62"]},
{"name":"a word of three spaces given as it is","words":["202020","626262","636363","646464","656565","666666"],"result":"ok"},
{"name":"U+001F is a control","words":["611f62","626262","636363","646464","656565","666666"],"result":"wordkey: the words hold the control character U+001F"},
{"name":"U+007E is not","words":["617e62","626262","636363","646464","656565","666666"],"result":"ok"},
{"name":"U+007F is a control","words":["617f62","626262","636363","646464","656565","666666"],"result":"wordkey: the words hold the control character U+007F"},
{"name":"U+0080 is a control","words":["61c28062","626262","636363","646464","656565","666666"],"result":"wordkey: the words hold the control character U+0080"},
{"name":"U+00A0 inside a word given as it is is not","words":["61c2a062","626262","636363","646464","656565","666666"],"result":"ok"},
{"words":["d790d6b0","6172626f6c"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 1"},
{"words":["6d6172efb88f","6c61","d790d6b0","6b656c76696e","e2b1a5","cf83ceb1cf83","616c","eaadb0eaadb1eaadb2","f09090a8"],"result":"wordkey: the words hold the invisible character U+FE0F"},
{"words":["d790d6b0","e18492e185a1e186abe18480e185aee186a8e1848be185a5","e697a5e69cace8aa9e"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 2"},
{"words":["73747261c39f65"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 1"},
{"words":["d5a1","e697a5e69cace8aa9e","cf83ceb1cf83","c39f","ea9f9b","6e696e6f","6e696e6f"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 3"},
{"words":["d28378","70657272cdb86f2c","61","6e696e6f"],"result":"wordkey: the words hold U+0378, unassigned in Unicode 18.0.0"},
{"words":["6b656c76696e","e0b881e0b8b4","726573756d65","6172626f6c","61","6d6172","e2b1a5","f09f9880","f09f9880"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 4"},
{"words":["7665726465","cebfceb4cf85cf83cf83ceb5cf85cf83","706572726f2c","78efbfbdefb88fefbfbd"],"result":"wordkey: the words hold the invisible character U+FE0F"},
{"words":["c990","efbca6efbcb5efbcacefbcac","e182a0","e0b881e0b8b4"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 1"},
{"words":[],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 0"},
{"words":[],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 0"},
{"words":["6c756e61","63617361","c2a1686f6c6121","e284aa656c76696e","c4b07374616e62756c","63617361","6c756e61","63617361","6c756e61"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 5"},
{"words":["63617361","c990"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 1"},
{"words":["72c3a973756dc3a9","78","736f6c","6c756e61","efac80","6c756e61"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 3"},
{"words":["e182a0"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 0"},
{"words":["cea3ce91cea3","e284aa656c76696e","cea3ce91cea3","6465","63617361","434146c389"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 4"},
{"words":["70616e","e0b881e0b8b4","70616e","7472656e","706572726f","706572726f","7665726465","4e49c3914f"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 5"},
{"words":["6c756e61","e0b881e0b8b4","e284aa656c76696e","706572726f2c"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 3"},
{"words":["ea9e8c","65cc81","78efb8a0","d4b1","72c3a973756dc3a9","efbca6efbcb5efbcacefbcac","7472656e"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 3"},
{"words":["6d6172","d790d6b0","c8ba","736f6c","c8ba"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 2"},
{"words":["e284aa656c76696e","78efb8a0","736f6c","7665726465","c990"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 3"},
{"words":["d4b1"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 0"},
{"words":["70616e","d790d6b0","6c756e61","63617361","c2a1686f6c6121","e284aa656c76696e"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 5"},
{"words":[],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 0"},
{"words":["f0909080","c8ba"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 0"},
{"words":["706572726f2cf48fbfbd","70616e","e18ea0e18ea1e18ea2","6465","c990","636166c3a9","d09cd09ed0a1d09ad092d090","d09cd0bed181d0bad0b2d0b0efbfbe","61cca3cc81"],"result":"wordkey: the words hold U+FFFE, unassigned in Unicode 18.0.0"},
{"words":["6465","c3bc626572","d5a1","7665726465","e1bd80ceb4cf85cf83cf83ceb5cf8dcf82cdb8","c3816261636f"],"result":"wordkey: the words hold U+0378, unassigned in Unicode 18.0.0"},
{"words":["e1ba9e","6d6172","6465","6c61","63616e6369c3b36e","78efb8a0","6c756e61","706572726f"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 4"},
{"words":["6c756e61","706572726f2c","63617361","ed959ceab5adec96b4","616c"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 4"},
{"words":["736f6c"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 1"},
{"words":["d28378","6c756e61cdb8","70616e","cea3ce91cea3","61c3b16fc080","4e49c3914f"],"result":"wordkey: the words hold U+0378, unassigned in Unicode 18.0.0"},
{"words":["70616e","7665726465","78cd85","6c61","7665726465","61cc81cca3","78","6d6172","53545241c39f45"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 5"},
{"words":["736f6c","53545241c39f45","63617361","ed959ceab5adec96b4"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 4"},
{"words":["70616e","78e1aab0","7665726465","61c3b16f","7472656e","f09ea480","70616e"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 4"}
{"words":["d28378","6c756e61cdb8","70616e","cea3ce91cea3","61c3b16fc080","4e49c3914f"],"result":"wordkey: the words hold U+0378, unassigned in Unicode 18.0.0"}
],
"keys":[
{"name":"the vector of spec \u00a738.1","words":["706572726f","6c756e61","63617361","7665726465","7472656e","6d6172"],"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","round":1000,"capsule_id":"000102030405060708090a0b0c0d0e0f","salt":"DateKeys llave de palabras v2|52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971|1000|000102030405060708090a0b0c0d0e0f","key":"fceec4d8ca8de86c85a1f26ed49f82a2b38431bd0ce36db995ae7dfd49b96e41","key_1000":"1028e1b9b04902cc9d70b4a0bad785939b45f1b6d4c293378483c7be1c6f95c8","recipient":"age1fqk6hflp8q5um2qrl5ckd8lu4x75rhtuncfus7f7up3v3v0zss0stdpqkr"},
{"name":"normalized words of other scripts, the next round","words":["616261636f","6172626f6c","6e696e6f","cf83ceb1cf83","697374616e62756c","e18492e185a1e186abe18480e185aee186a8e1848be185a5","f09f9880"],"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","round":1001,"capsule_id":"000102030405060708090a0b0c0d0e0f","salt":"DateKeys llave de palabras v2|52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971|1001|000102030405060708090a0b0c0d0e0f","key":"d8f9ec679333a961472c33b35143958f7a867d6d701047310bd3869cde06eb72","key_1000":"82018540b63893f0839b4e18a84bcee538f60f5d54b38b6bbda1b607de73817e","recipient":"age1xedq0ct3kasmwtkxjk2s5z8z7y6pv52k6lrw82vj3e0yp02c6u2qld2s27"},
{"name":"the largest round of 53 bits, another chain hash and capsule_id","words":["706572726f","6c756e61","63617361","7665726465","7472656e","6d6172"],"chain_hash":"abababababababababababababababababababababababababababababababab","round":9007199254740991,"capsule_id":"ffffffffffffffffffffffffffffffff","salt":"DateKeys llave de palabras v2|abababababababababababababababababababababababababababababababab|9007199254740991|ffffffffffffffffffffffffffffffff","key":"32b1a83dee069045054c2d044fb83802ac5bdd4122883e22ccc4bf42efdf54c3","key_1000":"a1264e85f593acdd9d4ab3fb3621f787c77ae3b29dc2cf33f67c868d471225f8","recipient":"age19ys0af5dp7gm6wydupg7ej29wf08xuaypwn507k3kvg8lzxxyd7qweuwec"},
{"name":"a word of a surrogate in UTF-8 bytes, round 0, no capsule_id","words":["eda080","6c756e61","63617361","7665726465","7472656e","6d6172"],"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","round":0,"capsule_id":"","salt":"DateKeys llave de palabras v2|52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971|0|","key":"47261f98a8ac68e4f100c75e929bb3b9b719a43ca47a5e173bfeefa409a728a5","key_1000":"5c367b7a1282a777efd622bf070cc31048da05f9d9d79affd41df5da43bbcb7a","recipient":"age122r0ul49gphvqdtdq9sngwd70p3t26lslz2xsf7qgvjcywp6gacs7ymd0l"}
{"name":"the vector of spec \u00a738.1","words":["706572726f","6c756e61","63617361","7665726465","7472656e","6d6172"],"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","round":1000,"capsule_id":"000102030405060708090a0b0c0d0e0f","password":"706572726f206c756e612063617361207665726465207472656e206d6172","salt":"DateKeys llave de palabras v2|52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971|1000|000102030405060708090a0b0c0d0e0f","key":"fceec4d8ca8de86c85a1f26ed49f82a2b38431bd0ce36db995ae7dfd49b96e41","key_1000":"1028e1b9b04902cc9d70b4a0bad785939b45f1b6d4c293378483c7be1c6f95c8","recipient":"age1fqk6hflp8q5um2qrl5ckd8lu4x75rhtuncfus7f7up3v3v0zss0stdpqkr"},
{"name":"normalized words of other scripts, the next round","words":["616261636f","6172626f6c","6e696e6f","cf83ceb1cf83","697374616e62756c","e18492e185a1e186abe18480e185aee186a8e1848be185a5","f09f9880"],"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","round":1001,"capsule_id":"000102030405060708090a0b0c0d0e0f","password":"616261636f206172626f6c206e696e6f20cf83ceb1cf8320697374616e62756c20e18492e185a1e186abe18480e185aee186a8e1848be185a520f09f9880","salt":"DateKeys llave de palabras v2|52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971|1001|000102030405060708090a0b0c0d0e0f","key":"d8f9ec679333a961472c33b35143958f7a867d6d701047310bd3869cde06eb72","key_1000":"82018540b63893f0839b4e18a84bcee538f60f5d54b38b6bbda1b607de73817e","recipient":"age1xedq0ct3kasmwtkxjk2s5z8z7y6pv52k6lrw82vj3e0yp02c6u2qld2s27"},
{"name":"the largest round of 53 bits, another chain hash and capsule_id","words":["706572726f","6c756e61","63617361","7665726465","7472656e","6d6172"],"chain_hash":"abababababababababababababababababababababababababababababababab","round":9007199254740991,"capsule_id":"ffffffffffffffffffffffffffffffff","password":"706572726f206c756e612063617361207665726465207472656e206d6172","salt":"DateKeys llave de palabras v2|abababababababababababababababababababababababababababababababab|9007199254740991|ffffffffffffffffffffffffffffffff","key":"32b1a83dee069045054c2d044fb83802ac5bdd4122883e22ccc4bf42efdf54c3","key_1000":"a1264e85f593acdd9d4ab3fb3621f787c77ae3b29dc2cf33f67c868d471225f8","recipient":"age19ys0af5dp7gm6wydupg7ej29wf08xuaypwn507k3kvg8lzxxyd7qweuwec"},
{"name":"a word of a surrogate in UTF-8 bytes, round 0, no capsule_id","words":["eda080","6c756e61","63617361","7665726465","7472656e","6d6172"],"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","round":0,"capsule_id":"","password":"eda080206c756e612063617361207665726465207472656e206d6172","salt":"DateKeys llave de palabras v2|52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971|0|","key":"47261f98a8ac68e4f100c75e929bb3b9b719a43ca47a5e173bfeefa409a728a5","key_1000":"5c367b7a1282a777efd622bf070cc31048da05f9d9d79affd41df5da43bbcb7a","recipient":"age122r0ul49gphvqdtdq9sngwd70p3t26lslz2xsf7qgvjcywp6gacs7ymd0l"}
"description":"The results of package wordkey of the Go reference (spec \u00a738.1) for lib/src/wordkey.dart; see tool/wordkey_go_vectors.go. Binary values are lower-case hex. normalize: a text and the words of wordkey.Normalize. check: words and the result of wordkey.Check, ok or the text of the error. keys: words, chain_hash, round and capsule_id; salt, the salt S of \u00a738.1; key, wordkey.Key; key_1000, the same PBKDF2-HMAC-SHA256 with 1000 iterations; recipient, that of wordkey.Identity. The first key is the vector of \u00a738.1.",
"description":"The results of package wordkey of the Go reference (spec \u00a738.1) for lib/src/wordkey.dart; see tool/wordkey_go_vectors.go. Binary values are lower-case hex. normalize: a text and the words of wordkey.Normalize. check: words and the result of wordkey.Check, ok or the text of the error. keys: words, chain_hash, round and capsule_id; password and salt, P and S of \u00a738.1; key, wordkey.Key; key_1000, the same PBKDF2-HMAC-SHA256 with 1000 iterations; recipient, that of wordkey.Identity. The first key is the vector of \u00a738.1.",
{"name":"line and paragraph separators","in":"756e6fe280a8646f73e280a974726573","words":["756e6f","646f73","74726573"]},
{"name":"control characters that are not white space","in":"756e6f01646f737f726573","words":["756e6f01646f737f726573"]},
{"name":"the first and the last mark of U+0300 to U+036F","in":"61cc8062cdaf63","words":["616263"]},
{"name":"U+02FF and U+0370, around U+0300 to U+036F","in":"61cbbf62cdb063","words":["61cbbf62cdb163"]},
{"name":"every mark of U+0300 to U+036F","in":"78cc80cc81cc82cc83cc84cc85cc86cc87cc88cc89cc8acc8bcc8ccc8dcc8ecc8fcc90cc91cc92cc93cc94cc95cc96cc97cc98cc99cc9acc9bcc9ccc9dcc9ecc9fcca0cca1cca2cca3cca4cca5cca6cca7cca8cca9ccaaccabccacccadccaeccafccb0ccb1ccb2ccb3ccb4ccb5ccb6ccb7ccb8ccb9ccbaccbbccbcccbdccbeccbfcd80cd81cd82cd83cd84cd85cd86cd87cd88cd89cd8acd8bcd8ccd8dcd8ecd8fcd90cd91cd92cd93cd94cd95cd96cd97cd98cd99cd9acd9bcd9ccd9dcd9ecd9fcda0cda1cda2cda3cda4cda5cda6cda7cda8cda9cdaacdabcdaccdadcdaecdaf79","words":["7879"]},
{"name":"white space 1 of \u00a738.1","in":"610962","words":["61","62"]},
{"name":"white space 2 of \u00a738.1","in":"610a62","words":["61","62"]},
{"name":"white space 3 of \u00a738.1","in":"610b62","words":["61","62"]},
{"name":"a word of three spaces given as it is","words":["202020","626262","636363","646464","656565","666666"],"result":"ok"},
{"name":"U+001F is a control","words":["611f62","626262","636363","646464","656565","666666"],"result":"wordkey: the words hold the control character U+001F"},
{"name":"U+007E is not","words":["617e62","626262","636363","646464","656565","666666"],"result":"ok"},
{"name":"U+007F is a control","words":["617f62","626262","636363","646464","656565","666666"],"result":"wordkey: the words hold the control character U+007F"},
{"name":"U+0080 is a control","words":["61c28062","626262","636363","646464","656565","666666"],"result":"wordkey: the words hold the control character U+0080"},
{"name":"U+00A0 inside a word given as it is is not","words":["61c2a062","626262","636363","646464","656565","666666"],"result":"ok"},
{"words":["d790d6b0","6172626f6c"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 1"},
{"words":["6d6172efb88f","6c61","d790d6b0","6b656c76696e","e2b1a5","cf83ceb1cf83","616c","eaadb0eaadb1eaadb2","f09090a8"],"result":"wordkey: the words hold the invisible character U+FE0F"},
@ -767,17 +772,18 @@
{"words":["d790d6b0","e18492e185a1e186abe18480e185aee186a8e1848be185a5","e697a5e69cace8aa9e"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 2"},
{"words":["73747261c39f65"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 1"},
{"words":["d5a1","e697a5e69cace8aa9e","cf83ceb1cf83","c39f","ea9f9b","6e696e6f","6e696e6f"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 3"},
{"words":["d28378","70657272cdb86f2c","61","6e696e6f"],"result":"wordkey: the words hold U+0378, unassigned in Unicode 18.0.0"},
{"words":["6b656c76696e","e0b881e0b8b4","726573756d65","6172626f6c","61","6d6172","e2b1a5","f09f9880","f09f9880"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 4"},
{"words":["7665726465","cebfceb4cf85cf83cf83ceb5cf85cf83","706572726f2c","78efbfbdefb88fefbfbd"],"result":"wordkey: the words hold the invisible character U+FE0F"},
{"words":["c990","efbca6efbcb5efbcacefbcac","e182a0","e0b881e0b8b4"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 1"},
{"words":[],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 0"},
{"words":[],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 0"},
{"words":["6c756e61","63617361","c2a1686f6c6121","e284aa656c76696e","c4b07374616e62756c","63617361","6c756e61","63617361","6c756e61"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 5"},
{"words":["63617361","c990"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 1"},
{"words":["72c3a973756dc3a9","78","736f6c","6c756e61","efac80","6c756e61"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 3"},
{"words":["e182a0"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 0"},
{"words":["cea3ce91cea3","e284aa656c76696e","cea3ce91cea3","6465","63617361","434146c389"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 4"},
{"words":["70616e","e0b881e0b8b4","70616e","7472656e","706572726f","706572726f","7665726465","4e49c3914f"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 5"},
{"words":["6c756e61","e0b881e0b8b4","e284aa656c76696e","706572726f2c"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 3"},
{"words":["ea9e8c","65cc81","78efb8a0","d4b1","72c3a973756dc3a9","efbca6efbcb5efbcacefbcac","7472656e"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 3"},
{"words":["6d6172","d790d6b0","c8ba","736f6c","c8ba"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 2"},
{"words":["e284aa656c76696e","78efb8a0","736f6c","7665726465","c990"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 3"},
{"words":["d4b1"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 0"},
{"words":["70616e","d790d6b0","6c756e61","63617361","c2a1686f6c6121","e284aa656c76696e"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 5"},
{"words":[],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 0"},
{"words":["f0909080","c8ba"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 0"},
{"words":["706572726f2cf48fbfbd","70616e","e18ea0e18ea1e18ea2","6465","c990","636166c3a9","d09cd09ed0a1d09ad092d090","d09cd0bed181d0bad0b2d0b0efbfbe","61cca3cc81"],"result":"wordkey: the words hold U+FFFE, unassigned in Unicode 18.0.0"},
{"words":["6465","c3bc626572","d5a1","7665726465","e1bd80ceb4cf85cf83cf83ceb5cf8dcf82cdb8","c3816261636f"],"result":"wordkey: the words hold U+0378, unassigned in Unicode 18.0.0"},
{"words":[],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 0"},
@ -915,16 +921,12 @@
{"words":["e1ba9e","6d6172","6465","6c61","63616e6369c3b36e","78efb8a0","6c756e61","706572726f"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 4"},
{"words":["6c756e61","706572726f2c","63617361","ed959ceab5adec96b4","616c"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 4"},
{"words":["736f6c"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 1"},
{"words":["d28378","6c756e61cdb8","70616e","cea3ce91cea3","61c3b16fc080","4e49c3914f"],"result":"wordkey: the words hold U+0378, unassigned in Unicode 18.0.0"},
{"words":["70616e","7665726465","78cd85","6c61","7665726465","61cc81cca3","78","6d6172","53545241c39f45"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 5"},
{"words":["736f6c","53545241c39f45","63617361","ed959ceab5adec96b4"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 4"},
{"words":["70616e","78e1aab0","7665726465","61c3b16f","7472656e","f09ea480","70616e"],"result":"wordkey: a key of words needs at least 6 different words of 3 or more letters, not 4"}
{"words":["d28378","6c756e61cdb8","70616e","cea3ce91cea3","61c3b16fc080","4e49c3914f"],"result":"wordkey: the words hold U+0378, unassigned in Unicode 18.0.0"}
],
"keys":[
{"name":"the vector of spec \u00a738.1","words":["706572726f","6c756e61","63617361","7665726465","7472656e","6d6172"],"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","round":1000,"capsule_id":"000102030405060708090a0b0c0d0e0f","salt":"DateKeys llave de palabras v2|52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971|1000|000102030405060708090a0b0c0d0e0f","key":"fceec4d8ca8de86c85a1f26ed49f82a2b38431bd0ce36db995ae7dfd49b96e41","key_1000":"1028e1b9b04902cc9d70b4a0bad785939b45f1b6d4c293378483c7be1c6f95c8","recipient":"age1fqk6hflp8q5um2qrl5ckd8lu4x75rhtuncfus7f7up3v3v0zss0stdpqkr"},
{"name":"normalized words of other scripts, the next round","words":["616261636f","6172626f6c","6e696e6f","cf83ceb1cf83","697374616e62756c","e18492e185a1e186abe18480e185aee186a8e1848be185a5","f09f9880"],"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","round":1001,"capsule_id":"000102030405060708090a0b0c0d0e0f","salt":"DateKeys llave de palabras v2|52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971|1001|000102030405060708090a0b0c0d0e0f","key":"d8f9ec679333a961472c33b35143958f7a867d6d701047310bd3869cde06eb72","key_1000":"82018540b63893f0839b4e18a84bcee538f60f5d54b38b6bbda1b607de73817e","recipient":"age1xedq0ct3kasmwtkxjk2s5z8z7y6pv52k6lrw82vj3e0yp02c6u2qld2s27"},
{"name":"the largest round of 53 bits, another chain hash and capsule_id","words":["706572726f","6c756e61","63617361","7665726465","7472656e","6d6172"],"chain_hash":"abababababababababababababababababababababababababababababababab","round":9007199254740991,"capsule_id":"ffffffffffffffffffffffffffffffff","salt":"DateKeys llave de palabras v2|abababababababababababababababababababababababababababababababab|9007199254740991|ffffffffffffffffffffffffffffffff","key":"32b1a83dee069045054c2d044fb83802ac5bdd4122883e22ccc4bf42efdf54c3","key_1000":"a1264e85f593acdd9d4ab3fb3621f787c77ae3b29dc2cf33f67c868d471225f8","recipient":"age19ys0af5dp7gm6wydupg7ej29wf08xuaypwn507k3kvg8lzxxyd7qweuwec"},
{"name":"a word of a surrogate in UTF-8 bytes, round 0, no capsule_id","words":["eda080","6c756e61","63617361","7665726465","7472656e","6d6172"],"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","round":0,"capsule_id":"","salt":"DateKeys llave de palabras v2|52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971|0|","key":"47261f98a8ac68e4f100c75e929bb3b9b719a43ca47a5e173bfeefa409a728a5","key_1000":"5c367b7a1282a777efd622bf070cc31048da05f9d9d79affd41df5da43bbcb7a","recipient":"age122r0ul49gphvqdtdq9sngwd70p3t26lslz2xsf7qgvjcywp6gacs7ymd0l"}
{"name":"the vector of spec \u00a738.1","words":["706572726f","6c756e61","63617361","7665726465","7472656e","6d6172"],"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","round":1000,"capsule_id":"000102030405060708090a0b0c0d0e0f","password":"706572726f206c756e612063617361207665726465207472656e206d6172","salt":"DateKeys llave de palabras v2|52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971|1000|000102030405060708090a0b0c0d0e0f","key":"fceec4d8ca8de86c85a1f26ed49f82a2b38431bd0ce36db995ae7dfd49b96e41","key_1000":"1028e1b9b04902cc9d70b4a0bad785939b45f1b6d4c293378483c7be1c6f95c8","recipient":"age1fqk6hflp8q5um2qrl5ckd8lu4x75rhtuncfus7f7up3v3v0zss0stdpqkr"},
{"name":"normalized words of other scripts, the next round","words":["616261636f","6172626f6c","6e696e6f","cf83ceb1cf83","697374616e62756c","e18492e185a1e186abe18480e185aee186a8e1848be185a5","f09f9880"],"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","round":1001,"capsule_id":"000102030405060708090a0b0c0d0e0f","password":"616261636f206172626f6c206e696e6f20cf83ceb1cf8320697374616e62756c20e18492e185a1e186abe18480e185aee186a8e1848be185a520f09f9880","salt":"DateKeys llave de palabras v2|52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971|1001|000102030405060708090a0b0c0d0e0f","key":"d8f9ec679333a961472c33b35143958f7a867d6d701047310bd3869cde06eb72","key_1000":"82018540b63893f0839b4e18a84bcee538f60f5d54b38b6bbda1b607de73817e","recipient":"age1xedq0ct3kasmwtkxjk2s5z8z7y6pv52k6lrw82vj3e0yp02c6u2qld2s27"},
{"name":"the largest round of 53 bits, another chain hash and capsule_id","words":["706572726f","6c756e61","63617361","7665726465","7472656e","6d6172"],"chain_hash":"abababababababababababababababababababababababababababababababab","round":9007199254740991,"capsule_id":"ffffffffffffffffffffffffffffffff","password":"706572726f206c756e612063617361207665726465207472656e206d6172","salt":"DateKeys llave de palabras v2|abababababababababababababababababababababababababababababababab|9007199254740991|ffffffffffffffffffffffffffffffff","key":"32b1a83dee069045054c2d044fb83802ac5bdd4122883e22ccc4bf42efdf54c3","key_1000":"a1264e85f593acdd9d4ab3fb3621f787c77ae3b29dc2cf33f67c868d471225f8","recipient":"age19ys0af5dp7gm6wydupg7ej29wf08xuaypwn507k3kvg8lzxxyd7qweuwec"},
{"name":"a word of a surrogate in UTF-8 bytes, round 0, no capsule_id","words":["eda080","6c756e61","63617361","7665726465","7472656e","6d6172"],"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","round":0,"capsule_id":"","password":"eda080206c756e612063617361207665726465207472656e206d6172","salt":"DateKeys llave de palabras v2|52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971|0|","key":"47261f98a8ac68e4f100c75e929bb3b9b719a43ca47a5e173bfeefa409a728a5","key_1000":"5c367b7a1282a777efd622bf070cc31048da05f9d9d79affd41df5da43bbcb7a","recipient":"age122r0ul49gphvqdtdq9sngwd70p3t26lslz2xsf7qgvjcywp6gacs7ymd0l"}
{"line and paragraph separators","uno\u2028dos\u2029tres"},
{"control characters that are not white space","uno\x01dos\x7fres"},
{"the first and the last mark of U+0300 to U+036F","a\u0300b\u036fc"},
{"U+02FF and U+0370, around U+0300 to U+036F","a\u02ffb\u0370c"},
{"every mark of U+0300 to U+036F","x\u0300\u0301\u0302\u0303\u0304\u0305\u0306\u0307\u0308\u0309\u030a\u030b\u030c\u030d\u030e\u030f\u0310\u0311\u0312\u0313\u0314\u0315\u0316\u0317\u0318\u0319\u031a\u031b\u031c\u031d\u031e\u031f\u0320\u0321\u0322\u0323\u0324\u0325\u0326\u0327\u0328\u0329\u032a\u032b\u032c\u032d\u032e\u032f\u0330\u0331\u0332\u0333\u0334\u0335\u0336\u0337\u0338\u0339\u033a\u033b\u033c\u033d\u033e\u033f\u0340\u0341\u0342\u0343\u0344\u0345\u0346\u0347\u0348\u0349\u034a\u034b\u034c\u034d\u034e\u034f\u0350\u0351\u0352\u0353\u0354\u0355\u0356\u0357\u0358\u0359\u035a\u035b\u035c\u035d\u035e\u035f\u0360\u0361\u0362\u0363\u0364\u0365\u0366\u0367\u0368\u0369\u036a\u036b\u036c\u036d\u036e\u036fy"},
{"a word of three spaces given as it is",[]string{" ","bbb","ccc","ddd","eee","fff"}},
// The edges of the controls of unicode.IsControl, C0 and C1.
{"U+001F is a control",[]string{"a\x1fb","bbb","ccc","ddd","eee","fff"}},
{"U+007E is not",[]string{"a~b","bbb","ccc","ddd","eee","fff"}},
{"U+007F is a control",[]string{"a\x7fb","bbb","ccc","ddd","eee","fff"}},
{"U+0080 is a control",[]string{"a\u0080b","bbb","ccc","ddd","eee","fff"}},
{"U+00A0 inside a word given as it is is not",[]string{"a\u00a0b","bbb","ccc","ddd","eee","fff"}},
}
varout[]checkCase
for_,n:=rangenamed{
@ -391,7 +402,7 @@ func main() {
}{
{"description","The results of package wordkey of the Go reference (spec \u00a738.1) for lib/src/wordkey.dart; see tool/wordkey_go_vectors.go. "+
"Binary values are lower-case hex. normalize: a text and the words of wordkey.Normalize. check: words and the result of wordkey.Check, ok or the text of the error. "+
"keys: words, chain_hash, round and capsule_id; salt, the salt S of \u00a738.1; key, wordkey.Key; key_1000, the same PBKDF2-HMAC-SHA256 with 1000 iterations; recipient, that of wordkey.Identity. The first key is the vector of \u00a738.1."},
"keys: words, chain_hash, round and capsule_id; password and salt, P and S of \u00a738.1; key, wordkey.Key; key_1000, the same PBKDF2-HMAC-SHA256 with 1000 iterations; recipient, that of wordkey.Identity. The first key is the vector of \u00a738.1."},