From e0d9683bd54c4e60d71840ad1ab2409016a3e0f9 Mon Sep 17 00:00:00 2001 From: HashEngineering Date: Sun, 11 Mar 2018 22:09:26 -0700 Subject: [PATCH] DeterministicKeyChain: Allow encrypting DeterministicKeyChain with arbitrary path --- .../org/bitcoinj/wallet/DeterministicKeyChain.java | 1 + core/src/test/java/org/bitcoinj/wallet/WalletTest.java | 10 ++++++++++ 2 files changed, 11 insertions(+) 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);