public ECB() { super(new SEEDEngine()); } }
private int phaseCalc2(int r0, int ki0, int r1, int ki1) { return G(phaseCalc1(r0, ki0, r1, ki1) + G((r0 ^ ki0) ^ (r1 ^ ki1))); } }
private long F(int ki0, int ki1, long r) { int r0 = (int)(r >> 32); int r1 = (int)r; int rd1 = phaseCalc2(r0, ki0, r1, ki1); int rd0 = rd1 + phaseCalc1(r0, ki0, r1, ki1); return ((long)rd0 << 32) | (rd1 & 0xffffffffL); }
private int[] createWorkingKey(byte[] inKey) { int[] key = new int[32]; long lower = bytesToLong(inKey, 0); long upper = bytesToLong(inKey, 8); int key0 = extractW0(lower); int key1 = extractW1(lower); int key2 = extractW0(upper); int key3 = extractW1(upper); for (int i = 0; i < 16; i++) { key[2 * i] = G(key0 + key2 - KC[i]); key[2 * i + 1] = G(key1 - key3 + KC[i]); if (i % 2 == 0) { lower = rotateRight8(lower); key0 = extractW0(lower); key1 = extractW1(lower); } else { upper = rotateLeft8(upper); key2 = extractW0(upper); key3 = extractW1(upper); } } return key; }
long l = bytesToLong(in, inOff + 0); long r = bytesToLong(in, inOff + 8); r = l ^ F(wKey[2 * i], wKey[(2 * i) + 1], r); l = nl; r = l ^ F(wKey[2 * i], wKey[(2 * i) + 1], r); l = nl; longToBytes(out, outOff + 0, r); longToBytes(out, outOff + 8, l);
public void init(boolean forEncryption, CipherParameters params) throws IllegalArgumentException { this.forEncryption = forEncryption; wKey = createWorkingKey(((KeyParameter)params).getKey()); }
private int[] createWorkingKey(byte[] inKey) { int[] key = new int[32]; long lower = bytesToLong(inKey, 0); long upper = bytesToLong(inKey, 8); int key0 = extractW0(lower); int key1 = extractW1(lower); int key2 = extractW0(upper); int key3 = extractW1(upper); for (int i = 0; i < 16; i++) { key[2 * i] = G(key0 + key2 - KC[i]); key[2 * i + 1] = G(key1 - key3 + KC[i]); if (i % 2 == 0) { lower = rotateRight8(lower); key0 = extractW0(lower); key1 = extractW1(lower); } else { upper = rotateLeft8(upper); key2 = extractW0(upper); key3 = extractW1(upper); } } return key; }
long l = bytesToLong(in, inOff + 0); long r = bytesToLong(in, inOff + 8); r = l ^ F(wKey[2 * i], wKey[(2 * i) + 1], r); l = nl; r = l ^ F(wKey[2 * i], wKey[(2 * i) + 1], r); l = nl; longToBytes(out, outOff + 0, r); longToBytes(out, outOff + 8, l);
public void init(boolean forEncryption, CipherParameters params) throws IllegalArgumentException { this.forEncryption = forEncryption; wKey = createWorkingKey(((KeyParameter)params).getKey()); }
public SEEDWrapEngine() { super(new SEEDEngine()); } }
private long F(int ki0, int ki1, long r) { int r0 = (int)(r >> 32); int r1 = (int)r; int rd1 = phaseCalc2(r0, ki0, r1, ki1); int rd0 = rd1 + phaseCalc1(r0, ki0, r1, ki1); return ((long)rd0 << 32) | (rd1 & 0xffffffffL); }
private int phaseCalc2(int r0, int ki0, int r1, int ki1) { return G(phaseCalc1(r0, ki0, r1, ki1) + G((r0 ^ ki0) ^ (r1 ^ ki1))); } }
public BlockCipher get() { return new SEEDEngine(); } });
public SEEDWrapEngine() { super(new SEEDEngine()); } }
protected BlockCipher createSEEDBlockCipher() { return new CBCBlockCipher(new SEEDEngine()); }
public CMAC() { super(new CMac(new SEEDEngine())); } }
public Poly1305() { super(new org.spongycastle.crypto.macs.Poly1305(new SEEDEngine())); } }
public CBC() { super(new CBCBlockCipher(new SEEDEngine()), 128); } }