HashUtils.customizableSecureHashAlgorithmKECCAK128Simple( buffer, 0, n * numberOfByte, dualModeSampler++, seed, seedOffset, Polynomial.RANDOM ); HashUtils.customizableSecureHashAlgorithmKECCAK256Simple( buffer, 0, n * numberOfByte, dualModeSampler++, seed, seedOffset, Polynomial.RANDOM ); ((bBit + 1 + 7) / 8); HashUtils.customizableSecureHashAlgorithmKECCAK128Simple( buffer, 0, HashUtils.SECURE_HASH_ALGORITHM_KECCAK_128_RATE, dualModeSampler++, ((bBit + 1 + 7) / 8); HashUtils.customizableSecureHashAlgorithmKECCAK256Simple( buffer, 0, HashUtils.SECURE_HASH_ALGORITHM_KECCAK_256_RATE, dualModeSampler++,
/****************************************************************************************************************************************** * Description: Hash Function to Generate C' for Heuristic qTESLA Security Category-1 and Category-3 (Option for Size or Speed) ******************************************************************************************************************************************/ private static void hashFunction(byte[] output, int outputOffset, int[] V, final byte[] message, int messageOffset, int n, int d, int q) { int mask; int cL; byte[] T = new byte[n + Polynomial.MESSAGE]; for (int i = 0; i < n; i++) { /* If V[i] > Q / 2 Then V[i] = V[i] - Q */ mask = (q / 2 - V[i]) >> 31; V[i] = ((V[i] - q) & mask) | (V[i] & (~mask)); cL = V[i] & ((1 << d) - 1); /* If cL > 2 ^ (d - 1) Then cL = cL - 2 ^ d */ mask = ((1 << (d - 1)) - cL) >> 31; cL = ((cL - (1 << d)) & mask) | (cL & (~mask)); T[i] = (byte)((V[i] - cL) >> d); } System.arraycopy(message, messageOffset, T, n, Polynomial.MESSAGE); if (q == Parameter.Q_I) { HashUtils.secureHashAlgorithmKECCAK128(output, outputOffset, Polynomial.HASH, T, 0, n + Polynomial.MESSAGE); } if (q == Parameter.Q_III_SIZE || q == Parameter.Q_III_SPEED) { HashUtils.secureHashAlgorithmKECCAK256(output, outputOffset, Polynomial.HASH, T, 0, n + Polynomial.MESSAGE); } }
HashUtils.customizableSecureHashAlgorithmKECCAK128Simple( randomness, 0, HashUtils.SECURE_HASH_ALGORITHM_KECCAK_128_RATE, domainSeparator++, HashUtils.customizableSecureHashAlgorithmKECCAK128Simple( randomness, 0, HashUtils.SECURE_HASH_ALGORITHM_KECCAK_128_RATE, domainSeparator++,
long z; HashUtils.customizableSecureHashAlgorithmKECCAK256Simple( seedExpander, 0, n * Const.LONG_SIZE / Const.INT_SIZE, domainSeparator++, seed, seedOffset, Polynomial.RANDOM ); HashUtils.customizableSecureHashAlgorithmKECCAK256Simple( seedExpander, 0, n * Const.LONG_SIZE / Const.INT_SIZE, domainSeparator++, seed, seedOffset, Polynomial.RANDOM );
HashUtils.customizableSecureHashAlgorithmKECCAK128Simple( buffer, 0, HashUtils.SECURE_HASH_ALGORITHM_KECCAK_128_RATE * generatorA, dualModeSampler++, HashUtils.customizableSecureHashAlgorithmKECCAK128Simple( buffer, 0, HashUtils.SECURE_HASH_ALGORITHM_KECCAK_128_RATE * numberOfBlock, dualModeSampler++,
long z; HashUtils.customizableSecureHashAlgorithmKECCAK256Simple( seedExpander, 0, Parameter.N_III_P * Const.LONG_SIZE / Const.INT_SIZE, domainSeparator++, seed, seedOffset, Polynomial.RANDOM ); HashUtils.customizableSecureHashAlgorithmKECCAK256Simple( seedExpander, 0, Parameter.N_III_P * Const.LONG_SIZE / Const.INT_SIZE, domainSeparator++, seed, seedOffset, Polynomial.RANDOM );
HashUtils.secureHashAlgorithmKECCAK128(output, outputOffset, Polynomial.HASH, T, 0, n * k + Polynomial.MESSAGE); HashUtils.secureHashAlgorithmKECCAK256(output, outputOffset, Polynomial.HASH, T, 0, n * k + Polynomial.MESSAGE);
HashUtils.customizableSecureHashAlgorithmKECCAK128Simple( buffer, 0, n * numberOfByte, dualModeSampler++, seed, seedOffset, Polynomial.RANDOM ); HashUtils.customizableSecureHashAlgorithmKECCAK256Simple( buffer, 0, n * numberOfByte, dualModeSampler++, seed, seedOffset, Polynomial.RANDOM ); ((bBit + 1 + 7) / 8); HashUtils.customizableSecureHashAlgorithmKECCAK128Simple( buffer, 0, HashUtils.SECURE_HASH_ALGORITHM_KECCAK_128_RATE, dualModeSampler++, ((bBit + 1 + 7) / 8); HashUtils.customizableSecureHashAlgorithmKECCAK256Simple( buffer, 0, HashUtils.SECURE_HASH_ALGORITHM_KECCAK_256_RATE, dualModeSampler++,
HashUtils.customizableSecureHashAlgorithmKECCAK128Simple( buffer, 0, HashUtils.SECURE_HASH_ALGORITHM_KECCAK_128_RATE * numberOfBlock, dualModeSampler++, HashUtils.customizableSecureHashAlgorithmKECCAK128Simple( buffer, 0, HashUtils.SECURE_HASH_ALGORITHM_KECCAK_128_RATE * numberOfBlock, dualModeSampler++,
HashUtils.secureHashAlgorithmKECCAK128(randomnessExtended, 0, Polynomial.SEED * 4, randomness, 0, Polynomial.RANDOM); HashUtils.secureHashAlgorithmKECCAK256(randomnessExtended, 0, Polynomial.SEED * 4, randomness, 0, Polynomial.RANDOM); HashUtils.secureHashAlgorithmKECCAK128( randomnessExtended, 0, Polynomial.SEED * (k + 3), randomness, 0, Polynomial.RANDOM ); HashUtils.secureHashAlgorithmKECCAK256( randomnessExtended, 0, Polynomial.SEED * (k + 3), randomness, 0, Polynomial.RANDOM ); HashUtils.secureHashAlgorithmKECCAK128( randomnessInput, Polynomial.RANDOM + Polynomial.SEED, Polynomial.MESSAGE, message, 0, messageLength ); HashUtils.secureHashAlgorithmKECCAK128( randomness, 0, Polynomial.SEED, randomnessInput, 0, Polynomial.RANDOM + Polynomial.SEED + Polynomial.MESSAGE ); HashUtils.secureHashAlgorithmKECCAK256( randomnessInput, Polynomial.RANDOM + Polynomial.SEED, Polynomial.MESSAGE, message, 0, messageLength ); HashUtils.secureHashAlgorithmKECCAK256( randomness, 0, Polynomial.SEED, randomnessInput, 0, Polynomial.RANDOM + Polynomial.SEED + Polynomial.MESSAGE ); HashUtils.secureHashAlgorithmKECCAK128(
long buffer; HashUtils.customizableSecureHashAlgorithmKECCAK128Simple( seedExpander, 0, Parameter.N_I_P * Const.LONG_SIZE / Const.INT_SIZE, domainSeparator++, seed, seedOffset, Polynomial.RANDOM ); HashUtils.customizableSecureHashAlgorithmKECCAK128Simple( seedExpander, 0, Parameter.N_I_P * Const.LONG_SIZE / Const.INT_SIZE, domainSeparator++, seed, seedOffset, Polynomial.RANDOM );
long buffer; HashUtils.customizableSecureHashAlgorithmKECCAK128Simple( seedExpander, 0, Parameter.N_I * Const.LONG_SIZE / Const.INT_SIZE, domainSeparator++, seed, seedOffset, Polynomial.RANDOM ); HashUtils.customizableSecureHashAlgorithmKECCAK128Simple( seedExpander, 0, Parameter.N_I * Const.LONG_SIZE / Const.INT_SIZE, domainSeparator++, seed, seedOffset, Polynomial.RANDOM );