#include #include #include typedef unsigned char u8; typedef unsigned long long u64; typedef long long i64; /* ---------------------------------------------------------------- */ #define ROTR(x,n) (((x)>>(n))|((x)<<(64-(n)))) /* ---------------------------------------------------------------- */ void load64(u64* x, u8* S) { int i; *x = 0; for (i = 0; i < 8; ++i) *x |= ((u64) S[i]) << (56 - i * 8); } /* ---------------------------------------------------------------- */ void store64(u8* S, u64 x) { int i; for (i = 0; i < 8; ++i) S[i] = (u8) (x >> (56 - i * 8)); } /* ---------------------------------------------------------------- */ void Ascon_Initialize(void *S){ memset(S,0,40); } /* ---------------------------------------------------------------- */ void Ascon_AddBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length){ unsigned int i; assert(offset < 40); assert(offset+length <= 40); for(i=0; i