57#if defined(QSC_SYSTEM_AESNI_ENABLED)
58# include "intrinsics.h"
59# include <immintrin.h>
62QSC_CPLUSPLUS_ENABLED_START
125#if !defined(QSC_RCS_AUTHENTICATED)
126# define QSC_RCS_AUTHENTICATED
145#define QSC_RCS_BLOCK_SIZE 32U
151#define QSC_RCS256_KEY_SIZE 32U
157#define QSC_RCS256_MAC_SIZE 32U
163#define QSC_RCS512_KEY_SIZE 64U
169#define QSC_RCS512_MAC_SIZE 64U
175#define QSC_RCS_NONCE_SIZE 32U
209#if defined(QSC_SYSTEM_AESNI_ENABLED)
211# if defined(QSC_SYSTEM_HAS_AVX512)
212 __m512i roundkeysw[31U];
304QSC_CPLUSPLUS_ENABLED_END
Contains common definitions for the Quantum Secure Cryptographic (QSC) library.
#define QSC_EXPORT_API
API export macro for Microsoft compilers when importing from a DLL.
Definition qsccommon.h:645
QSC_EXPORT_API void qsc_rcs_initialize(qsc_rcs_state *ctx, const qsc_rcs_keyparams *keyparams, bool encryption)
Initialize the state with the input cipher-key and optional info tweak.
Definition rcs.c:1117
rcs_cipher_type
The pre-defined cipher mode implementations.
Definition rcs.h:181
@ RCS512
Definition rcs.h:183
@ RCS256
Definition rcs.h:182
QSC_EXPORT_API void qsc_rcs_store_nonce(const qsc_rcs_state *ctx, uint8_t nonce[QSC_RCS_NONCE_SIZE])
Retrieves the current nonce from the state.
Definition rcs.c:1168
#define QSC_RCS_NONCE_SIZE
The nonce size in bytes.
Definition rcs.h:175
QSC_EXPORT_API bool qsc_rcs_transform(qsc_rcs_state *ctx, uint8_t *output, const uint8_t *input, size_t length)
Transform an array of bytes.
Definition rcs.c:1178
QSC_EXPORT_API void qsc_rcs_set_associated(qsc_rcs_state *ctx, const uint8_t *data, size_t length)
Set the associated data string used in authenticating the message.
Definition rcs.c:1150
QSC_EXPORT_API bool qsc_rcs_extended_transform(qsc_rcs_state *ctx, uint8_t *output, const uint8_t *input, size_t length, bool finalize)
A multi-call transform for a large array of bytes.
Definition rcs.c:1259
QSC_EXPORT_API void qsc_rcs_dispose(qsc_rcs_state *ctx)
Dispose of the RCS cipher state.
Definition rcs.c:1091
SHA3 family of hash functions.
The Keccak state array; state array must be initialized by the caller.
Definition sha3.h:256
The key parameters structure containing key, nonce, and info arrays and lengths.
Definition rcs.h:195
uint8_t * nonce
Definition rcs.h:198
const uint8_t * key
Definition rcs.h:196
size_t infolen
Definition rcs.h:200
size_t keylen
Definition rcs.h:197
const uint8_t * info
Definition rcs.h:199
The internal state structure containing the round-key array.
Definition rcs.h:207
uint32_t roundkeys[248U]
Definition rcs.h:215
uint64_t counter
Definition rcs.h:221
rcs_cipher_type ctype
Definition rcs.h:208
size_t roundkeylen
Definition rcs.h:217
size_t rounds
Definition rcs.h:218
qsc_keccak_state kstate
Definition rcs.h:219
uint8_t nonce[QSC_RCS_NONCE_SIZE]
Definition rcs.h:220
bool encrypt
Definition rcs.h:222