Leancrypto
0.12.0
Post-Quantum Cryptographic Library
Loading...
Searching...
No Matches
aead
api
lc_ascon_lightweight.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2024, Stephan Mueller <smueller@chronox.de>
3
*
4
* License: see LICENSE file in root directory
5
*
6
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
7
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
8
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
9
* WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
10
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
11
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
12
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
13
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
14
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
15
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
16
* USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH
17
* DAMAGE.
18
*/
19
20
#ifndef LC_ASCON_LIGHTWEIGHT_H
21
#define LC_ASCON_LIGHTWEIGHT_H
22
23
#include "
lc_ascon_aead.h
"
24
#include "
lc_ascon_hash.h
"
25
26
#ifdef __cplusplus
27
extern
"C"
{
28
#endif
29
31
#define LC_AL_STATE_SIZE (LC_ASCON_HASH_STATE_SIZE + LC_ASCON_ALIGNMENT)
32
#define LC_AL_CTX_SIZE(x) \
33
(sizeof(struct lc_aead) + sizeof(struct lc_ascon_cryptor) + \
34
LC_AL_STATE_SIZE)
36
48
int
lc_al_alloc
(
const
struct
lc_hash
*hash,
struct
lc_aead_ctx **ctx);
49
59
#define LC_AL_CTX_ON_STACK(name, hash) \
60
_Pragma("GCC diagnostic push") \
61
_Pragma("GCC diagnostic ignored \"-Wvla\"") _Pragma( \
62
"GCC diagnostic ignored \"-Wdeclaration-after-statement\"") \
63
LC_ALIGNED_BUFFER(name##_ctx_buf, \
64
LC_AL_CTX_SIZE(hash), \
65
LC_ASCON_ALIGNMENT); \
66
struct lc_aead_ctx *name = (struct lc_aead_ctx *)name##_ctx_buf; \
67
LC_ASCON_SET_CTX(name, hash); \
68
struct lc_ascon_cryptor *__name_ascon_crypto = name->aead_state; \
69
__name_ascon_crypto->statesize = LC_ASCON_HASH_STATE_SIZE; \
70
__name_ascon_crypto->taglen = 16; \
71
_Pragma("GCC diagnostic pop")
72
/* invocation of lc_ak_zero_free(name); not needed */
73
74
#ifdef __cplusplus
75
}
76
#endif
77
78
#endif
/* LC_ASCON_LIGHTWEIGHT_H */
lc_hash
void lc_hash(const struct lc_hash *hash, const uint8_t *in, size_t inlen, uint8_t *digest)
Calculate message digest - one-shot.
lc_ascon_aead.h
lc_ascon_hash.h
lc_al_alloc
int lc_al_alloc(const struct lc_hash *hash, struct lc_aead_ctx **ctx)
Allocate Ascon Lightweight cryptor context on heap.
Generated by
1.11.0