List of usage examples for org.bouncycastle.crypto.digests KeccakDigest update
public void update(byte[] in, int inOff, int len)
From source file:org.ethereum.crypto.Keccak256Helper.java
License:Open Source License
private static byte[] keccak256(byte[] message, int start, int length, KeccakDigest digest, boolean bouncyencoder) { byte[] hash = new byte[digest.getDigestSize()]; if (message.length != 0) { digest.update(message, start, length); }//from w w w .j av a2 s. c om digest.doFinal(hash, 0); return hash; }
From source file:org.ethereum.crypto.Keccak256Helper.java
License:Open Source License
private static byte[] doKeccak256(byte[] message, KeccakDigest digest, boolean bouncyencoder) { byte[] hash = new byte[digest.getDigestSize()]; if (message.length != 0) { digest.update(message, 0, message.length); }/* w w w. j a v a2 s. co m*/ digest.doFinal(hash, 0); return hash; }
From source file:org.ethereum.crypto.Keccak256Helper.java
License:Open Source License
private static byte[] doKeccak256(byte[] m1, byte[] m2, KeccakDigest digest, boolean bouncyencoder) { byte[] hash = new byte[digest.getDigestSize()]; digest.update(m1, 0, m1.length); digest.update(m2, 0, m2.length);/*from w w w . j a v a2 s. com*/ digest.doFinal(hash, 0); return hash; }
From source file:org.ethereum.net.rlpx.EncryptionHandshake.java
License:Open Source License
void agreeSecret(byte[] initiatePacket, byte[] responsePacket) { BigInteger secretScalar = remoteEphemeralKey.multiply(ephemeralKey.getPrivKey()).normalize().getXCoord() .toBigInteger();//from w ww . j a v a2s . co m byte[] agreedSecret = ByteUtil.bigIntegerToBytes(secretScalar, SECRET_SIZE); byte[] sharedSecret = Keccak256Helper.keccak256(agreedSecret, Keccak256Helper.keccak256(responderNonce, initiatorNonce)); byte[] aesSecret = Keccak256Helper.keccak256(agreedSecret, sharedSecret); secrets = new Secrets(); secrets.aes = aesSecret; secrets.mac = Keccak256Helper.keccak256(agreedSecret, aesSecret); secrets.token = Keccak256Helper.keccak256(sharedSecret); KeccakDigest mac1 = new KeccakDigest(MAC_SIZE); mac1.update(xor(secrets.mac, responderNonce), 0, secrets.mac.length); byte[] buf = new byte[32]; new KeccakDigest(mac1).doFinal(buf, 0); mac1.update(initiatePacket, 0, initiatePacket.length); new KeccakDigest(mac1).doFinal(buf, 0); KeccakDigest mac2 = new KeccakDigest(MAC_SIZE); mac2.update(xor(secrets.mac, initiatorNonce), 0, secrets.mac.length); new KeccakDigest(mac2).doFinal(buf, 0); mac2.update(responsePacket, 0, responsePacket.length); new KeccakDigest(mac2).doFinal(buf, 0); if (isInitiator) { secrets.egressMac = mac1; secrets.ingressMac = mac2; } else { secrets.egressMac = mac2; secrets.ingressMac = mac1; } }
From source file:org.ethereum.net.rlpx.FrameCodec.java
License:Open Source License
private byte[] updateMac(KeccakDigest mac, byte[] seed, int offset, byte[] out, int outOffset, boolean egress) throws IOException { byte[] aesBlock = new byte[mac.getDigestSize()]; doSum(mac, aesBlock);//from ww w .j a va2s . c o m makeMacCipher().processBlock(aesBlock, 0, aesBlock, 0); // Note that although the mac digest size is 32 bytes, we only use 16 bytes in the computation int length = 16; for (int i = 0; i < length; i++) { aesBlock[i] ^= seed[i + offset]; } mac.update(aesBlock, 0, length); byte[] result = new byte[mac.getDigestSize()]; doSum(mac, result); if (egress) { System.arraycopy(result, 0, out, outOffset, length); } else { for (int i = 0; i < length; i++) { if (out[i + outOffset] != result[i]) { throw new IOException("MAC mismatch"); } } } return result; }