public static byte[] getSeedFromMnemonicCodesStr(String mnemonicCodesStr) throws SDKException { if(mnemonicCodesStr == null || mnemonicCodesStr.equals("")){ throw new SDKException(ErrorCode.ParamErr("mnemonicCodesStr should not be null")); } String[] mnemonicCodesArray = mnemonicCodesStr.split(" "); byte[] seed = new SeedCalculator() .withWordsFromWordList(English.INSTANCE) .calculateSeed(Arrays.asList(mnemonicCodesArray), ""); return seed; }
public static byte[] getSeedFromMnemonicCodesStr(String mnemonicCodesStr) throws SDKException { if(mnemonicCodesStr == null || mnemonicCodesStr.equals("")){ throw new SDKException(ErrorCode.ParamErr("mnemonicCodesStr should not be null")); } String[] mnemonicCodesArray = mnemonicCodesStr.split(" "); byte[] seed = new SeedCalculator() .withWordsFromWordList(English.INSTANCE) .calculateSeed(Arrays.asList(mnemonicCodesArray), ""); return seed; }
private static String calculateSeedHex(String mnemonic, String passphrase) { final String seed1 = calculateSeed(mnemonic, passphrase, new SeedCalculator()); final String seed2 = calculateSeed(mnemonic, passphrase, new SeedCalculator(JavaxPBKDF2WithHmacSHA512.INSTANCE)); assertEquals(seed1, seed2); return seed1; }
private static String calculateSeedHex(Collection<? extends CharSequence> mnemonic, String passphrase, WordList wordList, ValidateMode validateMode) { mnemonic = mnemonic.stream() .map(sequence -> validateMode == ValidateMode.EXPECTING_BAD_WORD ? sequence : preventToStringAndSubSequence(sequence)) .collect(Collectors.toList()); final String seed1 = calculateSeed(mnemonic, passphrase, new SeedCalculator() .withWordsFromWordList(wordList)); final SeedCalculatorByWordListLookUp seedCalculatorWithWords = new SeedCalculator(JavaxPBKDF2WithHmacSHA512.INSTANCE) .withWordsFromWordList(wordList); final String seed2 = calculateSeed(mnemonic, passphrase, seedCalculatorWithWords); final String seed3ForReuse = calculateSeed(mnemonic, passphrase, seedCalculatorWithWords); assertEquals(seed1, seed2); assertEquals(seed1, seed3ForReuse); return seed1; }
@Test public void bip39_non_normalized_Japanese_word_not_found() { final String unNormalizedMnemonicWithBadWord = Normalizer.normalize("あおぞらAlan あいこくしん あいこくしん あいこくしん", Normalizer.Form.NFC); assertEquals(toHex(new SeedCalculator().calculateSeed(unNormalizedMnemonicWithBadWord, "")), calculateSeedHex(unNormalizedMnemonicWithBadWord, "", Japanese.INSTANCE, ValidateMode.EXPECTING_BAD_WORD)); }
@Test public void bip39_english_word_not_found() { final String mnemonicWithBadWord = "solar puppies hawk oxygen trip brief erase slot fossil mechanic filter voice"; assertEquals(toHex(new SeedCalculator().calculateSeed(mnemonicWithBadWord, "")), calculateSeedHex(mnemonicWithBadWord, "", English.INSTANCE, ValidateMode.EXPECTING_BAD_WORD)); }
private static void testSeedGeneration(TestVector testVector) { final byte[] seed = new SeedCalculator().calculateSeed(testVector.mnemonic, testVector.passphrase); assertEquals(testVector.seed, toHex(seed)); assertEquals(testVector.bip32Xprv, ExtendedPrivateKey.fromSeed(seed, Bitcoin.MAIN_NET).extendedBase58()); }