diff --git a/core/src/main/java/org/bitcoinj/wallet/DeterministicKeyChain.java b/core/src/main/java/org/bitcoinj/wallet/DeterministicKeyChain.java index 2438c91f..a3d5f565 100644 --- a/core/src/main/java/org/bitcoinj/wallet/DeterministicKeyChain.java +++ b/core/src/main/java/org/bitcoinj/wallet/DeterministicKeyChain.java @@ -433,6 +433,7 @@ public class DeterministicKeyChain implements EncryptableKeyChain { checkNotNull(chain.seed); checkArgument(!chain.rootKey.isEncrypted(), "Chain already encrypted"); + setAccountPath(chain.getAccountPath()); this.issuedExternalKeys = chain.issuedExternalKeys; this.issuedInternalKeys = chain.issuedInternalKeys; diff --git a/core/src/test/java/org/bitcoinj/wallet/WalletTest.java b/core/src/test/java/org/bitcoinj/wallet/WalletTest.java index 990b0d3b..1cfb1356 100644 --- a/core/src/test/java/org/bitcoinj/wallet/WalletTest.java +++ b/core/src/test/java/org/bitcoinj/wallet/WalletTest.java @@ -165,6 +165,16 @@ public class WalletTest extends TestWithWallet { basicSpendingCommon(encryptedWallet, myEncryptedAddress, OTHER_ADDRESS, encryptedWallet); } + @Test + public void encryptWalletWithArbitraryPath() throws Exception { + final byte[] ENTROPY = Sha256Hash.hash("don't use a string seed like this in real life".getBytes()); + KeyChainGroup keyChainGroup = new KeyChainGroup(UNITTEST, + new DeterministicSeed(ENTROPY, "", 1389353062L), + DeterministicKeyChain.BIP44_ACCOUNT_ZERO_PATH); + Wallet encryptedWallet = new Wallet(UNITTEST, keyChainGroup); + encryptedWallet.encrypt(PASSWORD1); + } + @Test public void basicSpendingFromP2SH() throws Exception { createMarriedWallet(2, 2);