/** * Sign the hashed data by sha3(). * * @param hashedData hashed data * @return signature as byte[65] */ public byte[] signHashedData(byte[] hashedData) { return key.sign(hashedData).toBinary(); }
@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)); }
/** * Sign the plain data. * * @param data plain data * @return signature as byte[65] */ public byte[] sign(byte[] data) { return key.sign(HashUtil.sha3(data)).toBinary(); }
/** * 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 testVerifySignature5() { ECKey key = ECKey.fromPrivate(privateKey); byte[] messageHash = HashUtil.sha3(exampleMessage.getBytes()); ECDSASignature signature = key.sign(messageHash); assertTrue(key.verify(messageHash, signature)); }
private void testProviderRoundTrip(Provider provider) { ECKey key = new ECKey(provider, secureRandom); String message = "The quick brown fox jumps over the lazy dog."; byte[] input = HashUtil.sha3(message.getBytes()); ECDSASignature sig = key.sign(input); assertTrue(sig.validateComponents()); assertTrue(key.verify(input, sig)); }
@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)); }