mnemonicToEntropy function
This function is used to compute entropy from mnemonic.
Implementation
Uint8List mnemonicToEntropy(var mnemonic) {
final language = mnemonicLanguage(mnemonic);
if (language == Language.unknown) {
throw ArgumentError(_invalidMnemonic);
}
final words = formatMnemonic(mnemonic);
final list = language.wordlist;
final bits = words.map((word) {
final index = list.indexOf(word);
if (index == -1) {
throw ArgumentError(_invalidMnemonic);
}
return index.toRadixString(2).padLeft(11, '0');
}).join('');
final entropyBits = bits.substring(0, bits.length - bits.length ~/ 33);
final dividerIndex = (bits.length ~/ 33) * 32;
final checksumBits = bits.substring(dividerIndex);
final regex = RegExp(r".{1,8}", caseSensitive: false, multiLine: false);
final chunks = regex.allMatches(entropyBits).map((m) => m.group(0)).toList();
final entropy = chunks.map((binary) => _binaryToInt(binary!)).toList();
// calculate the checksum and compare
final newChecksum = _entropyChecksumBits(Uint8List.fromList(entropy));
if (newChecksum != checksumBits) {
throw StateError(_invalidChecksum);
}
return Uint8List.fromList(entropy);
}