diff --git a/core/src/main/java/org/bitcoinj/crypto/MnemonicCode.java b/core/src/main/java/org/bitcoinj/crypto/MnemonicCode.java index 8955517d..1419297a 100644 --- a/core/src/main/java/org/bitcoinj/crypto/MnemonicCode.java +++ b/core/src/main/java/org/bitcoinj/crypto/MnemonicCode.java @@ -34,6 +34,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import static com.google.common.base.Preconditions.checkNotNull; import static org.bitcoinj.core.Utils.HEX; /** @@ -119,6 +120,7 @@ public class MnemonicCode { * Convert mnemonic word list to seed. */ public static byte[] toSeed(List words, String passphrase) { + checkNotNull(passphrase, "A null passphrase is not allowed."); // To create binary seed from mnemonic, we use PBKDF2 function // with mnemonic sentence (in UTF-8) used as a password and diff --git a/core/src/test/java/org/bitcoinj/crypto/MnemonicCodeTest.java b/core/src/test/java/org/bitcoinj/crypto/MnemonicCodeTest.java index 0f59546b..69840535 100644 --- a/core/src/test/java/org/bitcoinj/crypto/MnemonicCodeTest.java +++ b/core/src/test/java/org/bitcoinj/crypto/MnemonicCodeTest.java @@ -212,6 +212,12 @@ public class MnemonicCodeTest { mc.toMnemonic(entropy); } + @Test(expected = NullPointerException.class) + public void testNullPassphrase() throws Exception { + List code = split("legal winner thank year wave sausage worth useful legal winner thank yellow"); + MnemonicCode.toSeed(code, null); + } + public static List split(String words) { return new ArrayList(Arrays.asList(words.split("\\s+"))); }