3
0
mirror of https://github.com/Qortal/altcoinj.git synced 2025-02-13 18:55:52 +00:00

DeterministicKey: override hasPrivKey and getSecretBytes to reflect the private key derivation strategy used.

This commit is contained in:
Mike Hearn 2015-04-17 14:52:41 +01:00
parent 9faa4a686b
commit ef9e49d5e7
2 changed files with 15 additions and 12 deletions

View File

@ -304,6 +304,18 @@ public class DeterministicKey extends ECKey {
return super.isPubKeyOnly() && (parent == null || parent.isPubKeyOnly()); return super.isPubKeyOnly() && (parent == null || parent.isPubKeyOnly());
} }
/** {@inheritDoc} */
@Override
public boolean hasPrivKey() {
return findOrDerivePrivateKey() != null;
}
@Nullable
@Override
public byte[] getSecretBytes() {
return priv != null ? getPrivKeyBytes() : null;
}
/** /**
* A deterministic key is considered to be encrypted if it has access to encrypted private key bytes, OR if its * A deterministic key is considered to be encrypted if it has access to encrypted private key bytes, OR if its
* parent does. The reason is because the parent would be encrypted under the same key and this key knows how to * parent does. The reason is because the parent would be encrypted under the same key and this key knows how to

View File

@ -61,18 +61,9 @@ public class RedeemData {
* Returns the first key that has private bytes * Returns the first key that has private bytes
*/ */
public ECKey getFullKey() { public ECKey getFullKey() {
for (ECKey key : keys) { for (ECKey key : keys)
//TODO: don't use exception catching here to test. It's better to use hasPrivKey, but currently it's not working if (key.hasPrivKey())
// as expected for DeterministicKeys (it doesn't test if it's possible to derive private key)
try {
if (key.getPrivKey() != null)
return key; return key;
} catch (IllegalStateException e) {
// no private bytes. Proceed to the next key
} catch (ECKey.MissingPrivateKeyException e) {
}
}
return null; return null;
} }
} }