Leancrypto
0.12.0
Post-Quantum Cryptographic Library
Loading...
Searching...
No Matches
sym
api
lc_chacha20_private.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2022 - 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_CHACHA20_PRIVATE_H
21
#define LC_CHACHA20_PRIVATE_H
22
23
#include "ext_headers.h"
24
25
#ifdef __cplusplus
26
extern
"C"
{
27
#endif
28
30
#define LC_CC20_KEY_SIZE 32
31
#define LC_CC20_KEY_SIZE_WORDS (LC_CC20_KEY_SIZE / sizeof(uint32_t))
32
33
/* State according to RFC 7539 section 2.3 */
34
struct
lc_sym_state {
35
uint32_t constants[4];
36
union
{
37
uint32_t u[LC_CC20_KEY_SIZE_WORDS];
38
uint8_t b[LC_CC20_KEY_SIZE];
39
} key;
40
uint32_t counter;
41
uint32_t nonce[3];
42
};
43
44
#define LC_CC20_BLOCK_SIZE sizeof(struct lc_sym_state)
45
#define LC_CC20_BLOCK_SIZE_WORDS (LC_CC20_BLOCK_SIZE / sizeof(uint32_t))
47
48
#ifdef __cplusplus
49
}
50
#endif
51
52
#endif
/* LC_CHACHA20_PRIVATE_H */
Generated by
1.11.0