refactor(core,keys): BIP-39's English list moves into halkyon_core
The list a recovery phrase's words are of moves from halkyon_keys into halkyon_core, exported as bip39English, so that the server module can take a waiting account's matching code from it (Halkyon Learn's ADR 0021, D33) without depending on halkyon_keys and libsodium. Its test (2048 words, sorted, the published file's SHA-256, unique by their first four letters) moves along; its MIT licence too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
90ba4f0b94
commit
b2aa7667c4
1 changed files with 41 additions and 20 deletions
26
packages/halkyon_core/test/bip39_english_test.dart
Normal file
26
packages/halkyon_core/test/bip39_english_test.dart
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
import 'package:crypto/crypto.dart';
|
||||
import 'package:halkyon_core/halkyon_core.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
void main() {
|
||||
test("the word list is BIP-39's English list: 2,048 words, sorted, each "
|
||||
'once', () {
|
||||
expect(bip39English, hasLength(2048));
|
||||
expect(bip39English.toSet(), hasLength(2048));
|
||||
expect([...bip39English]..sort(), bip39English);
|
||||
// The SHA-256 of english.txt, a word a line.
|
||||
expect(
|
||||
sha256.convert('${bip39English.join('\n')}\n'.codeUnits).toString(),
|
||||
'2f5eed53a4727b4bf8880d8f3f199efc90e58503646d9ff8eff3a2ed3b24dbda',
|
||||
);
|
||||
});
|
||||
|
||||
test('no two words begin with the same four letters', () {
|
||||
expect(
|
||||
bip39English
|
||||
.map((word) => word.substring(0, word.length.clamp(0, 4)))
|
||||
.toSet(),
|
||||
hasLength(2048),
|
||||
);
|
||||
});
|
||||
}
|
||||
Loading…
Reference in a new issue