#include "permutations.h" #include "round.h" #if !ASCON_UNROLL_LOOPS || ASCON_SINGLE_PERM const uint8_t constants[][2] = {{0xc, 0xc}, {0x9, 0xc}, {0xc, 0x9}, {0x9, 0x9}, {0x6, 0xc}, {0x3, 0xc}, {0x6, 0x9}, {0x3, 0x9}, {0xc, 0x6}, {0x9, 0x6}, {0xc, 0x3}, {0x9, 0x3}}; #endif #if ASCON_INLINE_PERM #elif ASCON_SINGLE_PERM void P(state_t* s, uint8_t rounds) { printstate(" permutation input", s); for (int i = START(rounds); i < 12; i++) ROUND(s, constants[i][0], constants[i][1]); } #else /* !ASCON_INLINE_PERM && !ASCON_SINGLE_PERM */ void P12(state_t* s) { printstate(" permutation input", s); P12ROUNDS(s); } #if defined(CRYPTO_ABYTES) && ASCON_RATE == 16 void P8(state_t* s) { printstate(" permutation input", s); P8ROUNDS(s); } #endif #if defined(CRYPTO_ABYTES) && ASCON_RATE == 8 void P6(state_t* s) { printstate(" permutation input", s); P6ROUNDS(s); } #endif #endif