diff --git a/README.md b/README.md index 0a73dbb..e317aa2 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,11 @@ And this project includes below external libraries. * bitcoinj core v0.15.10 * web3j core v4.8.7 -Download and use 'ecdsa-keygen-java-1.1' in 'release' tab or [here](release/). +Download and use 'ecdsa-keygen-java-1.3.jar' in 'release' tab or [here](release/). + +```sh +implementation files('./ecdsa-keygen-java-1.3.jar') +``` ## BTCKeyPair diff --git a/lib/src/main/java/com/wuin/ecdsakeyj/BTCKeyPair.java b/lib/src/main/java/com/wuin/ecdsakeyj/BTCKeyPair.java index 8697776..76a7fa2 100644 --- a/lib/src/main/java/com/wuin/ecdsakeyj/BTCKeyPair.java +++ b/lib/src/main/java/com/wuin/ecdsakeyj/BTCKeyPair.java @@ -21,7 +21,7 @@ public class BTCKeyPair extends ECDSAKeyPair { private ECKey keypair; - public BTCKeyPair() { + private BTCKeyPair() { String _priv = createPrivateKey(); if (_priv != null) { this.priv = _priv; @@ -29,31 +29,48 @@ public BTCKeyPair() { createPublicKey(); } - public BTCKeyPair(String priv, Boolean useSeed) { - if (useSeed) { - byte[] sh = Util.sha3(priv); - byte[] shb = Base58.encode(sh).getBytes(); - shb = Arrays.copyOfRange(shb, 0, shb.length - 4); - - BigInteger k = new BigInteger(shb); - BigInteger n = new BigInteger("115792089237316195423570985008687907852837564279074904382605163141518161494336"); - - k = k.mod(n); - k = k.add(new BigInteger("1")); - String key = Util.bytesToHexString(k.toByteArray()); - - try { - String _priv = encodeKey(key); - this.priv = _priv; - } catch (Exception e) { - Util.raiseError("Fail to generate BTC Keypair from seed."); - } - } else { - this.priv = priv; + private BTCKeyPair(String priv) { + this.priv = priv; + createPublicKey(); + } + + private BTCKeyPair(byte[] seed) { + byte[] shb = Base58.encode(seed).getBytes(); + shb = Arrays.copyOfRange(shb, 0, shb.length - 4); + + BigInteger k = new BigInteger(shb); + BigInteger n = new BigInteger("115792089237316195423570985008687907852837564279074904382605163141518161494336"); + + k = k.mod(n); + k = k.add(new BigInteger("1")); + String key = Util.bytesToHexString(k.toByteArray()); + + try { + String _priv = encodeKey(key); + this.priv = _priv; + } catch (Exception e) { + Util.raiseError("Fail to generate BTC Keypair from seed."); } createPublicKey(); } + public static BTCKeyPair create() { + return new BTCKeyPair(); + } + + public static BTCKeyPair fromPrivateKey(String priv) { + return new BTCKeyPair(priv); + } + + public static BTCKeyPair fromSeed(String seed) { + byte[] sh = Util.sha3(seed); + return new BTCKeyPair(sh); + } + + public static BTCKeyPair fromSeed(byte[] seed) { + return new BTCKeyPair(seed); + } + private String createPrivateKey() { try { ECKey keypair = new ECKey(); diff --git a/lib/src/main/java/com/wuin/ecdsakeyj/ETHKeyPair.java b/lib/src/main/java/com/wuin/ecdsakeyj/ETHKeyPair.java index 3b67a3a..fab6cfb 100644 --- a/lib/src/main/java/com/wuin/ecdsakeyj/ETHKeyPair.java +++ b/lib/src/main/java/com/wuin/ecdsakeyj/ETHKeyPair.java @@ -22,7 +22,7 @@ public class ETHKeyPair extends ECDSAKeyPair { private ECKeyPair keypair; - public ETHKeyPair() { + private ETHKeyPair() { String _priv = createPrivateKey(); if(_priv != null) { this.priv = _priv; @@ -30,11 +30,19 @@ public ETHKeyPair() { createPublicKey(); } - public ETHKeyPair(String priv) { + private ETHKeyPair(String priv) { super(priv); createPublicKey(); } + public static ETHKeyPair create() { + return new ETHKeyPair(); + } + + public static ETHKeyPair fromPrivateKey(String priv) { + return new ETHKeyPair(priv); + } + private String createPrivateKey() { try { return new ECKey().getPrivateKeyAsHex(); diff --git a/release/ecdsa-keygen-java-1.3.jar b/release/ecdsa-keygen-java-1.3.jar new file mode 100644 index 0000000..80a1163 Binary files /dev/null and b/release/ecdsa-keygen-java-1.3.jar differ