/** * Creates an ECKey given the private key only. * * @param privKeyBytes - * @return - */ public static ECKey fromPrivate(byte[] privKeyBytes) { return fromPrivate(new BigInteger(1, privKeyBytes)); }
this.key = ECKey.fromPrivate(priKey); this.keyPath = keyPath; this.keyName = keyName;
@Test public void testEqualsObject() { ECKey key0 = new ECKey(); ECKey key1 = ECKey.fromPrivate(privateKey); ECKey key2 = ECKey.fromPrivate(privateKey); assertNotEquals(key0, key1); assertEquals(key1, key1); assertEquals(key1, key2); }
/** * Verified via https://etherchain.org/verify/signature */ @Test public void testEthereumSignToHex() { ECKey key = ECKey.fromPrivate(privateKey); byte[] messageHash = HashUtil.sha3(exampleMessage.getBytes()); ECDSASignature signature = key.sign(messageHash); String output = signature.toHex(); log.debug("Signature\t: " + output + " (Hex, length: " + output.length() + ")"); assertEquals(signatureHex, output); }
@Test public void testEthereumSign() { ECKey key = ECKey.fromPrivate(privateKey); log.debug("Secret\t: " + Hex.toHexString(key.getPrivKeyBytes())); log.debug("Pubkey\t: " + Hex.toHexString(key.getPubKey())); log.debug("Data\t: " + exampleMessage); byte[] messageHash = HashUtil.sha3(exampleMessage.getBytes()); ECDSASignature signature = key.sign(messageHash); String output = signature.toBase64(); log.debug("Sign\t: " + output + " (Base64, length: " + output.length() + ")"); assertEquals(sigBase64, output); }
@Test public void test3() { BigInteger privKey = new BigInteger("cd244b3015703ddf545595da06ada5516628c5feadbf49dc66049c4b370cc5d8", 16); byte[] addr = ECKey.fromPrivate(privKey).getAddress(); assertEquals("89b44e4d3c81ede05d0f5de8d1a68f754d73d997", Hex.toHexString(addr)); }
@Test public void test4() { byte[] cowBytes = sha3("cow".getBytes()); byte[] addr = ECKey.fromPrivate(cowBytes).getAddress(); assertEquals("CD2A3D9F938E13CD947EC05ABC7FE734DF8DD826", Hex.toHexString(addr).toUpperCase()); }
@Test public void test10() { BigInteger privKey = new BigInteger("74ef8a796480dda87b4bc550b94c408ad386af0f65926a392136286784d63858", 16); byte[] addr = ECKey.fromPrivate(privKey).getAddress(); assertEquals("ba73facb4f8291f09f27f90fe1213537b910065e", Hex.toHexString(addr)); }
@Test public void testToString() { ECKey key = ECKey.fromPrivate(BigInteger.TEN); // An example private key. assertEquals("pub:04a0434d9e47f3c86235477c7b1ae6ae5d3442d49b1943c2b752a68e2a47e247c7893aba425419bc27a3b6c7e693a24c696f794c2ed877a1593cbee53b037368d7", key.toString()); }
@Test public void test5() { byte[] horseBytes = sha3("horse".getBytes()); byte[] addr = ECKey.fromPrivate(horseBytes).getAddress(); assertEquals("13978AEE95F38490E9769C39B2773ED763D9CD5F", Hex.toHexString(addr).toUpperCase()); }
@Test // encrypt decrypt round trip public void test2() { BigInteger privKey = new BigInteger("5e173f6ac3c669587538e7727cf19b782a4f2fda07c1eaa662c593e5e85e3051", 16); byte[] payload = Hex.decode("1122334455"); ECKey ecKey = ECKey.fromPrivate(privKey); ECPoint pubKeyPoint = ecKey.getPubKeyPoint(); byte[] cipher = new byte[0]; try { cipher = ECIESCoder.encrypt(pubKeyPoint, payload); } catch (Throwable e) { log.error(e.getMessage()); } log.debug(Hex.toHexString(cipher)); byte[] decrypted_payload = new byte[0]; try { decrypted_payload = ECIESCoder.decrypt(privKey, cipher); } catch (Throwable e) { log.error(e.getMessage()); } log.debug(Hex.toHexString(decrypted_payload)); }
@Test public void testHashCode() { Assert.assertEquals(-351262686, ECKey.fromPrivate(privateKey).hashCode()); }
@Test public void testVerifySignature5() { ECKey key = ECKey.fromPrivate(privateKey); byte[] messageHash = HashUtil.sha3(exampleMessage.getBytes()); ECDSASignature signature = key.sign(messageHash); assertTrue(key.verify(messageHash, signature)); }
@Test public void testSignVerify() { ECKey key = ECKey.fromPrivate(privateKey); String message = "This is an example of a signed message."; byte[] input = HashUtil.sha3(message.getBytes()); ECDSASignature sig = key.sign(input); assertTrue(sig.validateComponents()); assertTrue(key.verify(input, sig)); }
@Test // cpp keys demystified public void test13() { // us.secret() a4627abc2a3c25315bff732cb22bc128f203912dd2a840f31e66efb27a47d2b1 // us.public() caa3d5086b31529bb00207eabf244a0a6c54d807d2ac0ec1f3b1bdde0dbf8130c115b1eaf62ce0f8062bcf70c0fefbc97cec79e7faffcc844a149a17fcd7bada // us.address() 47d8cb63a7965d98b547b9f0333a654b60ffa190 ECKey key = ECKey.fromPrivate(Hex.decode("a4627abc2a3c25315bff732cb22bc128f203912dd2a840f31e66efb27a47d2b1")); String address = Hex.toHexString(key.getAddress()); String pubkey = Hex.toHexString(key.getPubKeyPoint().getEncoded(/* uncompressed form */ false)); log.info("address: " + address); log.info("pubkey: " + pubkey); assertEquals("47d8cb63a7965d98b547b9f0333a654b60ffa190", address); assertEquals("04caa3d5086b31529bb00207eabf244a0a6c54d807d2ac0ec1f3b1bdde0dbf8130c115b1eaf62ce0f8062bcf70c0fefbc97cec79e7faffcc844a149a17fcd7bada", pubkey); }
@Test public void testFromPrivateKey() { ECKey key = ECKey.fromPrivate(privateKey); assertTrue(key.isPubKeyCanonical()); assertTrue(key.hasPrivKey()); assertArrayEquals(pubKey, key.getPubKey()); }
@Test public void testVerifySignature6() throws SignatureException { // generate ECkey object with privateKey ECKey key = ECKey.fromPrivate(privateKey); // check public key with pubKey assertArrayEquals(pubKey, key.getPubKey()); // generate messageHash with exampleMessage byte[] messageHash = HashUtil.sha3(exampleMessage.getBytes()); // generate ECDSASignature with ECKey, messageHash ECDSASignature signature = key.sign(messageHash); // verify the sign message assertTrue(key.verify(messageHash, signature)); // get public key with messageHash, ECDSASignature ECKey keyFromSig = ECKey.signatureToKey(messageHash, signature); byte[] pubKeyFromSig = keyFromSig.getPubKey(); assertArrayEquals(pubKey, pubKeyFromSig); // verify the sign message assertTrue(keyFromSig.verify(messageHash, signature)); }