From 4411eb87029c3442b9b98a21acc7ac33b91e457f Mon Sep 17 00:00:00 2001 From: Devrandom Date: Sun, 19 Jul 2015 11:02:08 -0700 Subject: [PATCH] Don't derive private keys just to check if they exist --- .../java/org/bitcoinj/crypto/DeterministicKey.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/org/bitcoinj/crypto/DeterministicKey.java b/core/src/main/java/org/bitcoinj/crypto/DeterministicKey.java index 43d56a0c..92d19476 100644 --- a/core/src/main/java/org/bitcoinj/crypto/DeterministicKey.java +++ b/core/src/main/java/org/bitcoinj/crypto/DeterministicKey.java @@ -320,7 +320,7 @@ public class DeterministicKey extends ECKey { /** {@inheritDoc} */ @Override public boolean hasPrivKey() { - return findOrDerivePrivateKey() != null; + return findParentWithPrivKey() != null; } @Nullable @@ -407,13 +407,18 @@ public class DeterministicKey extends ECKey { return derivePrivateKeyDownwards(cursor, parentalPrivateKeyBytes); } - @Nullable - private BigInteger findOrDerivePrivateKey() { + private DeterministicKey findParentWithPrivKey() { DeterministicKey cursor = this; while (cursor != null) { if (cursor.priv != null) break; cursor = cursor.parent; } + return cursor; + } + + @Nullable + private BigInteger findOrDerivePrivateKey() { + DeterministicKey cursor = findParentWithPrivKey(); if (cursor == null) return null; return derivePrivateKeyDownwards(cursor, cursor.priv.toByteArray());