46QSC_CPLUSPLUS_ENABLED_START
90#if !defined(QSC_CSX_AUTHENTICATED)
91# define QSC_CSX_AUTHENTICATED
96#if defined(QSC_CSX_AUTHENTICATED)
113# define QSC_CSX_AUTH_QMAC
121#if defined(QSC_CSX_AUTHENTICATED)
122# if !defined(QSC_CSX_AUTH_KMAC24) && !defined(QSC_CSX_AUTH_KMACR12) && !defined(QSC_CSX_AUTH_QMAC)
123# define QSC_CSX_AUTH_KMAC24
127#if defined(QSC_CSX_AUTH_QMAC)
135#define QSC_CSX_BLOCK_SIZE 128ULL
141#define QSC_CSX_INFO_SIZE 48ULL
147#define QSC_CSX_KEY_SIZE 64ULL
149#if defined(QSC_CSX_AUTH_QMAC)
154#define QSC_CSX_MAC_SIZE 32ULL
160#define QSC_CSX_MAC_SIZE 64ULL
167#define QSC_CSX_NONCE_SIZE 16ULL
173#define QSC_CSX_STATE_SIZE 16ULL
199#if defined(QSC_CSX_AUTH_QMAC)
292QSC_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 common.h:520
QSC_EXPORT_API bool qsc_csx_transform(qsc_csx_state *ctx, uint8_t *output, const uint8_t *input, size_t length)
Transform an array of bytes. In encryption mode, the input plain-text is encrypted and then an authen...
Definition csx.c:834
QSC_EXPORT_API void qsc_csx_store_nonce(const qsc_csx_state *ctx, uint8_t nonce[QSC_CSX_NONCE_SIZE])
Retrieves the current nonce from the state.
Definition csx.c:826
QSC_EXPORT_API void qsc_csx_set_associated(qsc_csx_state *ctx, const uint8_t *data, size_t length)
Set the associated data string used in authenticating the message. The associated data may be packet ...
Definition csx.c:806
#define QSC_CSX_STATE_SIZE
The uint64 size of the internal state array.
Definition csx.h:173
QSC_EXPORT_API void qsc_csx_dispose(qsc_csx_state *ctx)
Dispose of the CSX cipher state.
Definition csx.c:711
QSC_EXPORT_API void qsc_csx_initialize(qsc_csx_state *ctx, const qsc_csx_keyparams *keyparams, bool encryption)
Initialize the state with the input cipher-key and optional info tweak.
Definition csx.c:732
#define QSC_CSX_NONCE_SIZE
The byte size of the nonce array.
Definition csx.h:167
QSC_EXPORT_API bool qsc_csx_extended_transform(qsc_csx_state *ctx, uint8_t *output, const uint8_t *input, size_t length, bool finalize)
A multi-call transform for a large array of bytes, such as required by file encryption....
Definition csx.c:898
QMAC function definitions.
SHA3 family of hash functions.
The key parameters structure containing key, nonce, and info arrays and lengths. Use this structure t...
Definition csx.h:184
uint8_t * nonce
Definition csx.h:187
const uint8_t * key
Definition csx.h:185
size_t infolen
Definition csx.h:189
size_t keylen
Definition csx.h:186
const uint8_t * info
Definition csx.h:188
The internal state structure containing the round-key array.
Definition csx.h:197
uint64_t counter
Definition csx.h:204
qsc_qmac_state kstate
Definition csx.h:200
uint64_t state[QSC_CSX_STATE_SIZE]
Definition csx.h:198
bool encrypt
Definition csx.h:205
The Keccak state array; state array must be initialized by the caller.
Definition sha3.h:240
The QMAC state.
Definition qmac.h:122