nrfxlib API 3.3.99
Loading...
Searching...
No Matches
ocrypto_ascon_aead.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2016 - 2025 Nordic Semiconductor ASA
3 * Copyright (c) since 2013 Oberon microsystems AG
4 *
5 * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
6 */
7
8
23#ifndef OCRYPTO_ASCON_AEAD_H
24#define OCRYPTO_ASCON_AEAD_H
25
26#include <stddef.h>
27#include <stdint.h>
28
29
30#ifdef __cplusplus
31extern "C" {
32#endif
33
34
38#define ocrypto_ascon_aead128_key_BYTES (16)
39
43#define ocrypto_ascon_aead128_tag_BYTES (16)
44
48#define ocrypto_ascon_aead128_nonce_BYTES (16)
49
50
52typedef struct {
53 uint64_t s[5];
54 uint8_t key[16];
55 uint8_t data[16];
56 uint8_t length;
57 uint8_t aad;
58} ocrypto_ascon_aead_ctx;
83void ocrypto_ascon_aead128_init(ocrypto_ascon_aead_ctx *ctx, const uint8_t key[16], const uint8_t nonce[16]);
84
101void ocrypto_ascon_aead128_update_aad(ocrypto_ascon_aead_ctx *ctx, const uint8_t *aa, size_t aa_len);
102
119void ocrypto_ascon_aead128_update_enc(ocrypto_ascon_aead_ctx *ctx, uint8_t* ct, const uint8_t* pt, size_t pt_len);
120
137void ocrypto_ascon_aead128_update_dec(ocrypto_ascon_aead_ctx *ctx, uint8_t* pt, const uint8_t* ct, size_t ct_len);
138
147void ocrypto_ascon_aead128_final_enc(ocrypto_ascon_aead_ctx *ctx, uint8_t tag[16]);
148
160int ocrypto_ascon_aead128_final_dec(ocrypto_ascon_aead_ctx *ctx, const uint8_t tag[16]);
161
180 uint8_t* ct, uint8_t tag[16], const uint8_t* pt, size_t pt_len,
181 const uint8_t key[16], const uint8_t nonce[16], const uint8_t *aa, size_t aa_len);
182
201 uint8_t* pt, const uint8_t tag[16], const uint8_t* ct, size_t ct_len,
202 const uint8_t key[16], const uint8_t nonce[16], const uint8_t *aa, size_t aa_len);
203
204#ifdef __cplusplus
205}
206#endif
207
208#endif
209
void ocrypto_ascon_aead128_init(ocrypto_ascon_aead_ctx *ctx, const uint8_t key[16], const uint8_t nonce[16])
void ocrypto_ascon_aead128_final_enc(ocrypto_ascon_aead_ctx *ctx, uint8_t tag[16])
int ocrypto_ascon_aead128_decrypt(uint8_t *pt, const uint8_t tag[16], const uint8_t *ct, size_t ct_len, const uint8_t key[16], const uint8_t nonce[16], const uint8_t *aa, size_t aa_len)
void ocrypto_ascon_aead128_update_enc(ocrypto_ascon_aead_ctx *ctx, uint8_t *ct, const uint8_t *pt, size_t pt_len)
void ocrypto_ascon_aead128_update_dec(ocrypto_ascon_aead_ctx *ctx, uint8_t *pt, const uint8_t *ct, size_t ct_len)
void ocrypto_ascon_aead128_update_aad(ocrypto_ascon_aead_ctx *ctx, const uint8_t *aa, size_t aa_len)
int ocrypto_ascon_aead128_final_dec(ocrypto_ascon_aead_ctx *ctx, const uint8_t tag[16])
void ocrypto_ascon_aead128_encrypt(uint8_t *ct, uint8_t tag[16], const uint8_t *pt, size_t pt_len, const uint8_t key[16], const uint8_t nonce[16], const uint8_t *aa, size_t aa_len)