@Test(expected = IllegalArgumentException.class) public void testInvalidPrivateKey() throws Exception { // Expecting an IllegalArgumentException for using an non EC private key PrivateKey privateKey = KeyPairGenerator.getInstance("DSA").generateKeyPair().getPrivate(); new ECKey( Security.getProvider("SunEC"), privateKey, ECKey.fromPublicOnly(pubKey).getPubKeyPoint()); }
@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 // 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 keyRecovery() { ECKey key = new ECKey(); String message = "Hello World!"; byte[] hash = HashUtil.sha256(message.getBytes()); ECKey.ECDSASignature sig = key.doSign(hash); key = ECKey.fromPublicOnly(key.getPubKeyPoint()); boolean found = false; for (int i = 0; i < 4; i++) { ECKey key2 = ECKey.recoverFromSignature(i, sig, hash); checkNotNull(key2); if (key.equals(key2)) { found = true; break; } } assertTrue(found); }