decode method

  1. @override
List<int> decode(
  1. String mnemonic
)
override

Decodes a Monero mnemonic string into entropy.

-mnemonic: The Monero mnemonic string to decode.

Implementation

@override
List<int> decode(String mnemonic) {
  final mn = MoneroMnemonic.fromString(mnemonic);
  final wcount = mn.wordsCount();
  MoneroWordsNum.values.firstWhere(
    (element) => element.value == wcount,
    orElse:
        () =>
            throw ArgumentException.invalidOperationArguments(
              "decode",
              name: "mnemonic",
              reason: "Invalid mnemonic length.",
            ),
  );
  final lang = findLanguage(mn);
  final words = mn.toList();
  validateCheckSum(words, lang.$2);
  List<int> entropyBytes = List.empty();
  for (int i = 0; i < words.length ~/ 3; i++) {
    final String word1 = words[i * 3];
    final String word2 = words[i * 3 + 1];
    final String word3 = words[i * 3 + 2];
    final List<int> chunkBytes = MnemonicUtils.wordsToBytesChunk(
      word1,
      word2,
      word3,
      lang.$1,
      endian: Endian.little,
    );
    entropyBytes = [...entropyBytes, ...chunkBytes];
  }
  return entropyBytes;
}