public long doFinal() throws DataLengthException, IllegalStateException { // NOTE: 2 distinct shifts to avoid "64-bit shift" when wordPos == 0 m >>>= ((7 - wordPos) << 3); m >>>= 8; m |= (((wordCount << 3) + wordPos) & 0xffL) << 56; processMessageWord(); v2 ^= 0xffL; applySipRounds(d); long result = v0 ^ v1 ^ v2 ^ v3; reset(); return result; }
protected void applySipRounds(int n) { long r0 = v0, r1 = v1, r2 = v2, r3 = v3; for (int r = 0; r < n; ++r) { r0 += r1; r2 += r3; r1 = rotateLeft(r1, 13); r3 = rotateLeft(r3, 16); r1 ^= r0; r3 ^= r2; r0 = rotateLeft(r0, 32); r2 += r1; r0 += r3; r1 = rotateLeft(r1, 17); r3 = rotateLeft(r3, 21); r1 ^= r2; r3 ^= r0; r2 = rotateLeft(r2, 32); } v0 = r0; v1 = r1; v2 = r2; v3 = r3; }
public Mac24() { super(new org.bouncycastle.crypto.macs.SipHash()); } }
public void update(byte input) throws IllegalStateException { m >>>= 8; m |= (input & 0xffL) << 56; if (++wordPos == 8) { processMessageWord(); wordPos = 0; } }
protected void processMessageWord() { ++wordCount; v3 ^= m; applySipRounds(c); v0 ^= m; }
public int doFinal(byte[] out, int outOff) throws DataLengthException, IllegalStateException { long result = doFinal(); Pack.longToLittleEndian(result, out, outOff); return 8; }
public void init(CipherParameters params) throws IllegalArgumentException { if (!(params instanceof KeyParameter)) { throw new IllegalArgumentException("'params' must be an instance of KeyParameter"); } KeyParameter keyParameter = (KeyParameter)params; byte[] key = keyParameter.getKey(); if (key.length != 16) { throw new IllegalArgumentException("'params' must be a 128-bit key"); } this.k0 = Pack.littleEndianToLong(key, 0); this.k1 = Pack.littleEndianToLong(key, 8); reset(); }
public void update(byte input) throws IllegalStateException { m >>>= 8; m |= (input & 0xffL) << 56; if (++wordPos == 8) { processMessageWord(); wordPos = 0; } }
protected void processMessageWord() { ++wordCount; v3 ^= m; applySipRounds(c); v0 ^= m; }
public int doFinal(byte[] out, int outOff) throws DataLengthException, IllegalStateException { long result = doFinal(); Pack.longToLittleEndian(result, out, outOff); return 8; }
public void init(CipherParameters params) throws IllegalArgumentException { if (!(params instanceof KeyParameter)) { throw new IllegalArgumentException("'params' must be an instance of KeyParameter"); } KeyParameter keyParameter = (KeyParameter)params; byte[] key = keyParameter.getKey(); if (key.length != 16) { throw new IllegalArgumentException("'params' must be a 128-bit key"); } this.k0 = Pack.littleEndianToLong(key, 0); this.k1 = Pack.littleEndianToLong(key, 8); reset(); }
public long doFinal() throws DataLengthException, IllegalStateException { // NOTE: 2 distinct shifts to avoid "64-bit shift" when wordPos == 0 m >>>= ((7 - wordPos) << 3); m >>>= 8; m |= (((wordCount << 3) + wordPos) & 0xffL) << 56; processMessageWord(); v2 ^= 0xffL; applySipRounds(d); long result = v0 ^ v1 ^ v2 ^ v3; reset(); return result; }
processMessageWord(); processMessageWord(); m = n; processMessageWord(); wordPos = 0;
protected void applySipRounds(int n) { long r0 = v0, r1 = v1, r2 = v2, r3 = v3; for (int r = 0; r < n; ++r) { r0 += r1; r2 += r3; r1 = rotateLeft(r1, 13); r3 = rotateLeft(r3, 16); r1 ^= r0; r3 ^= r2; r0 = rotateLeft(r0, 32); r2 += r1; r0 += r3; r1 = rotateLeft(r1, 17); r3 = rotateLeft(r3, 21); r1 ^= r2; r3 ^= r0; r2 = rotateLeft(r2, 32); } v0 = r0; v1 = r1; v2 = r2; v3 = r3; }
public Mac48() { super(new org.bouncycastle.crypto.macs.SipHash(4, 8)); } }
processMessageWord(); processMessageWord(); m = n; processMessageWord(); wordPos = 0;