core.h 810 Bytes
Newer Older
Ferdinand Bachmann committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
#ifndef CORE_H_
#define CORE_H_

#include "api.h"
#include "endian.h"
#include "permutations.h"

#define ASCON_AD 0
#define ASCON_ENC 1
#define ASCON_DEC 2

#define RATE (128 / 8)
#define PA_ROUNDS 12
#define PB_ROUNDS 8
#define IV                                                        \
  ((u64)(8 * (CRYPTO_KEYBYTES)) << 0 | (u64)(8 * (RATE)) << 8 | \
   (u64)(PA_ROUNDS) << 16 | (u64)(PB_ROUNDS) << 24)

void process_data(state* s, unsigned char* out, const unsigned char* in,
                  unsigned long long len, u8 mode);

void ascon_core(state* s, unsigned char* out, const unsigned char* in,
                unsigned long long tlen, const unsigned char* ad,
                unsigned long long adlen, const unsigned char* npub,
                const unsigned char* k, u8 mode);

#endif  // CORE_H_