From f4cce4c3c0dee3bb73dc294f68b099afeab4a766 Mon Sep 17 00:00:00 2001 From: Mike Hearn Date: Wed, 28 Jan 2015 16:13:24 +0100 Subject: [PATCH] ECKey: add a sanity check for private keys that are zero or one. This should never happen but there have been reports from the wild that somehow once or twice someone managed to get a private key of zero into their wallet. --- core/src/main/java/org/bitcoinj/core/ECKey.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/src/main/java/org/bitcoinj/core/ECKey.java b/core/src/main/java/org/bitcoinj/core/ECKey.java index dab26de7..afa5c2cf 100644 --- a/core/src/main/java/org/bitcoinj/core/ECKey.java +++ b/core/src/main/java/org/bitcoinj/core/ECKey.java @@ -182,6 +182,11 @@ public class ECKey implements EncryptableItem, Serializable { } protected ECKey(@Nullable BigInteger priv, ECPoint pub) { + if (priv != null) { + // Try and catch buggy callers or bad key imports, etc. + checkArgument(!priv.equals(BigInteger.ZERO)); + checkArgument(!priv.equals(BigInteger.ONE)); + } this.priv = priv; this.pub = new LazyECPoint(checkNotNull(pub)); }