#include "api.h" #include "ascon.h" #include "permutations.h" #include "printstate.h" void ascon_core(state_t* s, uint8_t* out, const uint8_t* in, uint64_t tlen, const uint8_t* ad, uint64_t adlen, const uint8_t* npub, const uint8_t* k, uint8_t mode); int crypto_aead_encrypt(uint8_t* c, uint64_t* clen, const uint8_t* m, uint64_t mlen, const uint8_t* ad, uint64_t adlen, const uint8_t* nsec, const uint8_t* npub, const uint8_t* k) { state_t s; (void)nsec; /* set ciphertext size */ *clen = mlen + CRYPTO_ABYTES; /* ascon encryption */ ascon_core(&s, c, m, mlen, ad, adlen, npub, k, ASCON_ENCRYPT); /* set tag */ STOREBYTES(c + mlen, s.x3, 8); STOREBYTES(c + mlen + 8, s.x4, 8); return 0; }