31#include "ext_headers.h"
33#if defined __has_include
35#if __has_include("lc_dilithium_87.h")
37#define LC_DILITHIUM_87_ENABLED
40#if __has_include("lc_dilithium_65.h")
42#define LC_DILITHIUM_65_ENABLED
45#if __has_include("lc_dilithium_44.h")
47#define LC_DILITHIUM_44_ENABLED
51#error "Compiler misses __has_include"
109#ifdef LC_DILITHIUM_87_ENABLED
112#ifdef LC_DILITHIUM_65_ENABLED
115#ifdef LC_DILITHIUM_44_ENABLED
127#ifdef LC_DILITHIUM_87_ENABLED
130#ifdef LC_DILITHIUM_65_ENABLED
133#ifdef LC_DILITHIUM_44_ENABLED
145#ifdef LC_DILITHIUM_87_ENABLED
148#ifdef LC_DILITHIUM_65_ENABLED
151#ifdef LC_DILITHIUM_44_ENABLED
200#ifdef LC_DILITHIUM_87_ENABLED
201#define LC_DILITHIUM_CTX_ON_STACK_AHAT(name) \
202 LC_DILITHIUM_87_CTX_ON_STACK_AHAT(name)
203#elif defined(LC_DILITHIUM_65_ENABLED)
204LC_DILITHIUM_CTX_ON_STACK_AHAT(name)
206#elif defined(LC_DILITHIUM_44_ENABLED)
207LC_DILITHIUM_CTX_ON_STACK_AHAT(name)
282 const uint8_t *userctx,
size_t userctxlen);
300 const uint8_t *external_mu,
301 size_t external_mu_len);
482 struct lc_rng_ctx *rng_ctx,
508 const uint8_t *seed,
size_t seedlen,
540 struct lc_rng_ctx *rng_ctx);
575 struct lc_rng_ctx *rng_ctx);
630 struct lc_rng_ctx *rng_ctx);
723#ifdef LC_DILITHIUM_ED25519_SIG
749#ifdef LC_DILITHIUM_87_ENABLED
752#ifdef LC_DILITHIUM_65_ENABLED
755#ifdef LC_DILITHIUM_44_ENABLED
767#ifdef LC_DILITHIUM_87_ENABLED
770#ifdef LC_DILITHIUM_65_ENABLED
773#ifdef LC_DILITHIUM_44_ENABLED
785#ifdef LC_DILITHIUM_87_ENABLED
788#ifdef LC_DILITHIUM_65_ENABLED
791#ifdef LC_DILITHIUM_44_ENABLED
859 const uint8_t *userctx,
872 const uint8_t *randomizer,
873 size_t randomizerlen);
958 const uint8_t *dilithium_src_key,
959 size_t dilithium_src_key_len,
960 const uint8_t *ed25519_src_key,
961 size_t ed25519_src_key_len);
980 const uint8_t *dilithium_src_key,
981 size_t dilithium_src_key_len,
982 const uint8_t *ed25519_src_key,
983 size_t ed25519_src_key_len);
1003 const uint8_t *dilithium_src_sig,
1004 size_t dilithium_src_sig_len,
1005 const uint8_t *ed25519_src_sig,
1006 size_t ed25519_src_sig_len);
1024 size_t *dilithium_key_len,
1025 uint8_t **ed25519_key,
size_t *ed25519_key_len,
1044 size_t *dilithium_key_len,
1045 uint8_t **ed25519_key,
size_t *ed25519_key_len,
1065 size_t *dilithium_sig_len,
1066 uint8_t **ed25519_sig,
size_t *ed25519_sig_len,
1082 struct lc_rng_ctx *rng_ctx,
1103 const uint8_t *m,
size_t mlen,
1105 struct lc_rng_ctx *rng_ctx);
1136 const uint8_t *m,
size_t mlen,
1138 struct lc_rng_ctx *rng_ctx);
1169 const uint8_t *m,
size_t mlen);
1187 struct lc_rng_ctx *rng_ctx);
1205 const uint8_t *m,
size_t mlen,
1235 const uint8_t *m,
size_t mlen,
1267 const uint8_t *m,
size_t mlen);
1288#ifdef LC_DILITHIUM_ED448_SIG
1317#ifdef LC_DILITHIUM_87_ENABLED
1320#ifdef LC_DILITHIUM_65_ENABLED
1323#ifdef LC_DILITHIUM_44_ENABLED
1335#ifdef LC_DILITHIUM_87_ENABLED
1338#ifdef LC_DILITHIUM_65_ENABLED
1341#ifdef LC_DILITHIUM_44_ENABLED
1353#ifdef LC_DILITHIUM_87_ENABLED
1356#ifdef LC_DILITHIUM_65_ENABLED
1359#ifdef LC_DILITHIUM_44_ENABLED
1427 const uint8_t *userctx,
size_t userctxlen);
1439 const uint8_t *randomizer,
1440 size_t randomizerlen);
1525 const uint8_t *dilithium_src_key,
1526 size_t dilithium_src_key_len,
1527 const uint8_t *ed448_src_key,
1528 size_t ed448_src_key_len);
1547 const uint8_t *dilithium_src_key,
1548 size_t dilithium_src_key_len,
1549 const uint8_t *ed448_src_key,
1550 size_t ed448_src_key_len);
1570 const uint8_t *dilithium_src_sig,
1571 size_t dilithium_src_sig_len,
1572 const uint8_t *ed448_src_sig,
1573 size_t ed448_src_sig_len);
1591 size_t *dilithium_key_len, uint8_t **ed448_key,
1592 size_t *ed448_key_len,
1611 size_t *dilithium_key_len, uint8_t **ed448_key,
1612 size_t *ed448_key_len,
1632 size_t *dilithium_sig_len, uint8_t **ed448_sig,
1633 size_t *ed448_sig_len,
1649 struct lc_rng_ctx *rng_ctx,
1670 const uint8_t *m,
size_t mlen,
1672 struct lc_rng_ctx *rng_ctx);
1703 const uint8_t *m,
size_t mlen,
1705 struct lc_rng_ctx *rng_ctx);
1736 const uint8_t *m,
size_t mlen);
1754 struct lc_rng_ctx *rng_ctx);
1772 const uint8_t *m,
size_t mlen,
1802 const uint8_t *m,
size_t mlen,
1834 const uint8_t *m,
size_t mlen);
int lc_dilithium_sign(struct lc_dilithium_sig *sig, const uint8_t *m, size_t mlen, const struct lc_dilithium_sk *sk, struct lc_rng_ctx *rng_ctx)
Computes signature in one shot.
int lc_dilithium_pk_load(struct lc_dilithium_pk *pk, const uint8_t *src_key, size_t src_key_len)
Load a Dilithium public key provided with a buffer into the leancrypto data structure.
int lc_dilithium_sig_load(struct lc_dilithium_sig *sig, const uint8_t *src_sig, size_t src_sig_len)
Load a Dilithium signature provided with a buffer into the leancrypto data structure.
void lc_dilithium_ctx_userctx(struct lc_dilithium_ctx *ctx, const uint8_t *userctx, size_t userctxlen)
Specify the optional user context string to be applied with the Dilithium signature operation.
int lc_dilithium_sign_update(struct lc_dilithium_ctx *ctx, const uint8_t *m, size_t mlen)
Add more data to an already initialized signature state.
void lc_dilithium_ctx_hash(struct lc_dilithium_ctx *ctx, const struct lc_hash *hash)
Set the hash type that was used for pre-hashing the message. The message digest is used with the Hash...
int lc_dilithium_sk_ptr(uint8_t **dilithium_key, size_t *dilithium_key_len, struct lc_dilithium_sk *sk)
Obtain the reference to the Dilithium key and its length.
void lc_dilithium_ctx_zero_free(struct lc_dilithium_ctx *ctx)
Zeroizes and frees Dilithium context on heap.
int lc_dilithium_sign_ctx(struct lc_dilithium_sig *sig, struct lc_dilithium_ctx *ctx, const uint8_t *m, size_t mlen, const struct lc_dilithium_sk *sk, struct lc_rng_ctx *rng_ctx)
Computes signature woth user context in one shot.
int lc_dilithium_verify(const struct lc_dilithium_sig *sig, const uint8_t *m, size_t mlen, const struct lc_dilithium_pk *pk)
Verifies signature in one shot.
LC_PURE unsigned int lc_dilithium_sig_size(enum lc_dilithium_type dilithium_type)
Return the size of the Dilithium signature.
void lc_dilithium_ctx_zero(struct lc_dilithium_ctx *ctx)
Zeroizes Dilithium context either on heap or on stack.
int lc_dilithium_verify_final(const struct lc_dilithium_sig *sig, struct lc_dilithium_ctx *ctx, const struct lc_dilithium_pk *pk)
Verifies signature.
enum lc_dilithium_type lc_dilithium_sig_type(const struct lc_dilithium_sig *sig)
Obtain Dilithium type from signature.
void lc_dilithium_ctx_drop_ahat(struct lc_dilithium_ctx *ctx)
Invalidate the expanded key that potentially is stored in the context.
int lc_dilithium_ctx_alloc(struct lc_dilithium_ctx **ctx)
Allocate stack memory for the Dilithium stream context and additional parameter relevant for the sign...
int lc_dilithium_verify_init(struct lc_dilithium_ctx *ctx, const struct lc_dilithium_pk *pk)
Initializes a signature verification operation.
void lc_dilithium_ctx_internal(struct lc_dilithium_ctx *ctx)
Mark the Dilithium context to execute ML-DSA.Sign_internal / ML-DSA.Verify_internal.
LC_PURE unsigned int lc_dilithium_pk_size(enum lc_dilithium_type dilithium_type)
Return the size of the Dilithium public key.
int lc_dilithium_pk_ptr(uint8_t **dilithium_key, size_t *dilithium_key_len, struct lc_dilithium_pk *pk)
Obtain the reference to the Dilithium key and its length.
LC_PURE unsigned int lc_dilithium_sk_size(enum lc_dilithium_type dilithium_type)
Return the size of the Dilithium secret key.
int lc_dilithium_sign_init(struct lc_dilithium_ctx *ctx, const struct lc_dilithium_sk *sk)
Initializes a signature operation.
int lc_dilithium_verify_ctx(const struct lc_dilithium_sig *sig, struct lc_dilithium_ctx *ctx, const uint8_t *m, size_t mlen, const struct lc_dilithium_pk *pk)
Verifies signature with Dilithium context in one shot.
int lc_dilithium_sig_ptr(uint8_t **dilithium_sig, size_t *dilithium_sig_len, struct lc_dilithium_sig *sig)
Obtain the reference to the Dilithium signature and its length.
int lc_dilithium_keypair_from_seed(struct lc_dilithium_pk *pk, struct lc_dilithium_sk *sk, const uint8_t *seed, size_t seedlen, enum lc_dilithium_type dilithium_type)
Generates Dilithium public and private key from a given seed.
int lc_dilithium_sk_load(struct lc_dilithium_sk *sk, const uint8_t *src_key, size_t src_key_len)
Load a Dilithium secret key provided with a buffer into the leancrypto data structure.
enum lc_dilithium_type lc_dilithium_pk_type(const struct lc_dilithium_pk *pk)
Obtain Dilithium type from public key.
int lc_dilithium_keypair(struct lc_dilithium_pk *pk, struct lc_dilithium_sk *sk, struct lc_rng_ctx *rng_ctx, enum lc_dilithium_type dilithium_type)
Generates Dilithium public and private key.
int lc_dilithium_sign_final(struct lc_dilithium_sig *sig, struct lc_dilithium_ctx *ctx, const struct lc_dilithium_sk *sk, struct lc_rng_ctx *rng_ctx)
Computes signature.
int lc_dilithium_verify_update(struct lc_dilithium_ctx *ctx, const uint8_t *m, size_t mlen)
Add more data to an already initialized signature state.
int lc_dilithium_ctx_alloc_ahat(struct lc_dilithium_ctx **ctx)
Allocates Dilithium context on heap with support to keep the internal representation of the key.
enum lc_dilithium_type lc_dilithium_sk_type(const struct lc_dilithium_sk *sk)
Obtain Dilithium type from secret key.
void lc_dilithium_ctx_external_mu(struct lc_dilithium_ctx *ctx, const uint8_t *external_mu, size_t external_mu_len)
Specify the optional external mu value.
int lc_hash(const struct lc_hash *hash, const uint8_t *in, size_t inlen, uint8_t *digest)
Calculate message digest - one-shot.
int lc_dilithium_ed25519_sig_load(struct lc_dilithium_ed25519_sig *sig, const uint8_t *dilithium_src_sig, size_t dilithium_src_sig_len, const uint8_t *ed25519_src_sig, size_t ed25519_src_sig_len)
Load a Dilithium signature provided with a buffer into the leancrypto data structure.
int lc_dilithium_ed25519_sign(struct lc_dilithium_ed25519_sig *sig, const uint8_t *m, size_t mlen, const struct lc_dilithium_ed25519_sk *sk, struct lc_rng_ctx *rng_ctx)
Computes signature in one shot.
void lc_dilithium_ed25519_ctx_zero_free(struct lc_dilithium_ed25519_ctx *ctx)
Zeroizes and frees Dilithium-ED25519 context on heap.
int lc_dilithium_ed448_sig_ptr(uint8_t **dilithium_sig, size_t *dilithium_sig_len, uint8_t **ed448_sig, size_t *ed448_sig_len, struct lc_dilithium_ed448_sig *sig)
Obtain the reference to the Dilithium signature and its length.
int lc_dilithium_ed448_pk_ptr(uint8_t **dilithium_key, size_t *dilithium_key_len, uint8_t **ed448_key, size_t *ed448_key_len, struct lc_dilithium_ed448_pk *pk)
Obtain the reference to the Dilithium key and its length.
int lc_dilithium_ed448_sign_final(struct lc_dilithium_ed448_sig *sig, struct lc_dilithium_ed448_ctx *ctx, const struct lc_dilithium_ed448_sk *sk, struct lc_rng_ctx *rng_ctx)
Computes signature in stream mode.
int lc_dilithium_ed25519_pk_ptr(uint8_t **dilithium_key, size_t *dilithium_key_len, uint8_t **ed25519_key, size_t *ed25519_key_len, struct lc_dilithium_ed25519_pk *pk)
Obtain the reference to the Dilithium key and its length.
LC_PURE unsigned int lc_dilithium_ed448_sig_size(enum lc_dilithium_type dilithium_type)
Return the size of the Dilithium signature.
int lc_dilithium_ed25519_sign_update(struct lc_dilithium_ed25519_ctx *ctx, const uint8_t *m, size_t mlen)
Updates signature in stream mode.
int lc_dilithium_ed25519_sign_ctx(struct lc_dilithium_ed25519_sig *sig, struct lc_dilithium_ed25519_ctx *ctx, const uint8_t *m, size_t mlen, const struct lc_dilithium_ed25519_sk *sk, struct lc_rng_ctx *rng_ctx)
Computes signature with Dilithium context in one shot.
enum lc_dilithium_type lc_dilithium_ed448_sig_type(const struct lc_dilithium_ed448_sig *sig)
Obtain Dilithium type from signature.
int lc_dilithium_ed25519_sig_ptr(uint8_t **dilithium_sig, size_t *dilithium_sig_len, uint8_t **ed25519_sig, size_t *ed25519_sig_len, struct lc_dilithium_ed25519_sig *sig)
Obtain the reference to the Dilithium signature and its length.
int lc_dilithium_ed25519_sk_ptr(uint8_t **dilithium_key, size_t *dilithium_key_len, uint8_t **ed25519_key, size_t *ed25519_key_len, struct lc_dilithium_ed25519_sk *sk)
Obtain the reference to the Dilithium key and its length.
void lc_dilithium_ed448_ctx_zero(struct lc_dilithium_ed448_ctx *ctx)
Zeroizes Dilithium-ED448 context either on heap or on stack.
int lc_dilithium_ed25519_ctx_alloc(struct lc_dilithium_ed25519_ctx **ctx)
Allocates Dilithium-ED25519 context on heap.
LC_PURE unsigned int lc_dilithium_ed25519_pk_size(enum lc_dilithium_type dilithium_type)
Return the size of the Dilithium public key.
int lc_dilithium_ed448_sign_update(struct lc_dilithium_ed448_ctx *ctx, const uint8_t *m, size_t mlen)
Updates signature in stream mode.
int lc_dilithium_ed448_verify_init(struct lc_dilithium_ed448_ctx *ctx, const struct lc_dilithium_ed448_pk *pk)
Initializes signature verification operation in stream mode.
void lc_dilithium_ed25519_ctx_randomizer(struct lc_dilithium_ed25519_ctx *ctx, const uint8_t *randomizer, size_t randomizerlen)
Specify the optional randomizer to be applied with the Dilithium-ED25519 signature operation.
int lc_dilithium_ed25519_sign_final(struct lc_dilithium_ed25519_sig *sig, struct lc_dilithium_ed25519_ctx *ctx, const struct lc_dilithium_ed25519_sk *sk, struct lc_rng_ctx *rng_ctx)
Computes signature in stream mode.
enum lc_dilithium_type lc_dilithium_ed448_pk_type(const struct lc_dilithium_ed448_pk *pk)
Obtain Dilithium type from public key.
void lc_dilithium_ed448_ctx_zero_free(struct lc_dilithium_ed448_ctx *ctx)
Zeroizes and frees Dilithium-ED448 context on heap.
int lc_dilithium_ed25519_verify_update(struct lc_dilithium_ed25519_ctx *ctx, const uint8_t *m, size_t mlen)
Updates signature verification in stream mode.
LC_PURE unsigned int lc_dilithium_ed448_pk_size(enum lc_dilithium_type dilithium_type)
Return the size of the Dilithium public key.
int lc_dilithium_ed25519_verify_final(const struct lc_dilithium_ed25519_sig *sig, struct lc_dilithium_ed25519_ctx *ctx, const struct lc_dilithium_ed25519_pk *pk)
Verifies signature in stream mode.
LC_PURE unsigned int lc_dilithium_ed25519_sk_size(enum lc_dilithium_type dilithium_type)
Return the size of the Dilithium secret key.
int lc_dilithium_ed448_sk_ptr(uint8_t **dilithium_key, size_t *dilithium_key_len, uint8_t **ed448_key, size_t *ed448_key_len, struct lc_dilithium_ed448_sk *sk)
Obtain the reference to the Dilithium key and its length.
void lc_dilithium_ed448_ctx_internal(struct lc_dilithium_ed448_ctx *ctx)
Mark the Dilithium context to execute ML-DSA.Sign_internal / ML-DSA.Verify_internal.
int lc_dilithium_ed25519_sk_load(struct lc_dilithium_ed25519_sk *sk, const uint8_t *dilithium_src_key, size_t dilithium_src_key_len, const uint8_t *ed25519_src_key, size_t ed25519_src_key_len)
Load a Dilithium secret key provided with a buffer into the leancrypto data structure.
void lc_dilithium_ed25519_ctx_userctx(struct lc_dilithium_ed25519_ctx *ctx, const uint8_t *userctx, size_t userctxlen)
Specify the optional user context string to be applied with the Dilithium-ED25519 signature operation...
int lc_dilithium_ed25519_verify_ctx(const struct lc_dilithium_ed25519_sig *sig, struct lc_dilithium_ed25519_ctx *ctx, const uint8_t *m, size_t mlen, const struct lc_dilithium_ed25519_pk *pk)
Verifies signature with Dilithium context in one shot.
void lc_dilithium_ed25519_ctx_zero(struct lc_dilithium_ed25519_ctx *ctx)
Zeroizes Dilithium-ED25519 context either on heap or on stack.
int lc_dilithium_ed448_pk_load(struct lc_dilithium_ed448_pk *pk, const uint8_t *dilithium_src_key, size_t dilithium_src_key_len, const uint8_t *ed448_src_key, size_t ed448_src_key_len)
Load a Dilithium public key provided with a buffer into the leancrypto data structure.
enum lc_dilithium_type lc_dilithium_ed25519_pk_type(const struct lc_dilithium_ed25519_pk *pk)
Obtain Dilithium type from public key.
int lc_dilithium_ed448_verify(const struct lc_dilithium_ed448_sig *sig, const uint8_t *m, size_t mlen, const struct lc_dilithium_ed448_pk *pk)
Verifies signature in one shot.
int lc_dilithium_ed448_sign(struct lc_dilithium_ed448_sig *sig, const uint8_t *m, size_t mlen, const struct lc_dilithium_ed448_sk *sk, struct lc_rng_ctx *rng_ctx)
Computes signature in one shot.
int lc_dilithium_ed448_sig_load(struct lc_dilithium_ed448_sig *sig, const uint8_t *dilithium_src_sig, size_t dilithium_src_sig_len, const uint8_t *ed448_src_sig, size_t ed448_src_sig_len)
Load a Dilithium signature provided with a buffer into the leancrypto data structure.
int lc_dilithium_ed25519_pk_load(struct lc_dilithium_ed25519_pk *pk, const uint8_t *dilithium_src_key, size_t dilithium_src_key_len, const uint8_t *ed25519_src_key, size_t ed25519_src_key_len)
Load a Dilithium public key provided with a buffer into the leancrypto data structure.
enum lc_dilithium_type lc_dilithium_ed448_sk_type(const struct lc_dilithium_ed448_sk *sk)
Obtain Dilithium type from secret key.
int lc_dilithium_ed25519_verify(const struct lc_dilithium_ed25519_sig *sig, const uint8_t *m, size_t mlen, const struct lc_dilithium_ed25519_pk *pk)
Verifies signature in one shot.
int lc_dilithium_ed25519_sign_init(struct lc_dilithium_ed25519_ctx *ctx, const struct lc_dilithium_ed25519_sk *sk)
Initializes signature operation in stream mode.
LC_PURE unsigned int lc_dilithium_ed448_sk_size(enum lc_dilithium_type dilithium_type)
Return the size of the Dilithium secret key.
int lc_dilithium_ed25519_verify_init(struct lc_dilithium_ed25519_ctx *ctx, const struct lc_dilithium_ed25519_pk *pk)
Initializes signature verification operation in stream mode.
LC_PURE unsigned int lc_dilithium_ed25519_sig_size(enum lc_dilithium_type dilithium_type)
Return the size of the Dilithium signature.
void lc_dilithium_ed25519_ctx_internal(struct lc_dilithium_ed25519_ctx *ctx)
Mark the Dilithium context to execute ML-DSA.Sign_internal / ML-DSA.Verify_internal.
int lc_dilithium_ed448_verify_update(struct lc_dilithium_ed448_ctx *ctx, const uint8_t *m, size_t mlen)
Updates signature verification in stream mode.
void lc_dilithium_ed25519_ctx_hash(struct lc_dilithium_ed25519_ctx *ctx, const struct lc_hash *hash)
Set the hash type that was used for pre-hashing the message. The message digest ist used with the Has...
int lc_dilithium_ed448_verify_final(const struct lc_dilithium_ed448_sig *sig, struct lc_dilithium_ed448_ctx *ctx, const struct lc_dilithium_ed448_pk *pk)
Verifies signature in stream mode.
enum lc_dilithium_type lc_dilithium_ed25519_sig_type(const struct lc_dilithium_ed25519_sig *sig)
Obtain Dilithium type from signature.
void lc_dilithium_ed448_ctx_randomizer(struct lc_dilithium_ed448_ctx *ctx, const uint8_t *randomizer, size_t randomizerlen)
Specify the optional randomizer to be applied with the Dilithium-ED25519 signature operation.
int lc_dilithium_ed25519_keypair(struct lc_dilithium_ed25519_pk *pk, struct lc_dilithium_ed25519_sk *sk, struct lc_rng_ctx *rng_ctx, enum lc_dilithium_type dilithium_type)
Generates Dilithium public and private key.
void lc_dilithium_ed448_ctx_hash(struct lc_dilithium_ed448_ctx *ctx, const struct lc_hash *hash)
Set the hash type that was used for pre-hashing the message. The message digest ist used with the Has...
enum lc_dilithium_type lc_dilithium_ed25519_sk_type(const struct lc_dilithium_ed25519_sk *sk)
Obtain Dilithium type from secret key.
int lc_dilithium_ed448_sign_init(struct lc_dilithium_ed448_ctx *ctx, const struct lc_dilithium_ed448_sk *sk)
Initializes signature operation in stream mode.
int lc_dilithium_ed448_sk_load(struct lc_dilithium_ed448_sk *sk, const uint8_t *dilithium_src_key, size_t dilithium_src_key_len, const uint8_t *ed448_src_key, size_t ed448_src_key_len)
Load a Dilithium secret key provided with a buffer into the leancrypto data structure.
int lc_dilithium_ed448_verify_ctx(const struct lc_dilithium_ed448_sig *sig, struct lc_dilithium_ed448_ctx *ctx, const uint8_t *m, size_t mlen, const struct lc_dilithium_ed448_pk *pk)
Verifies signature with Dilithium context in one shot.
void lc_dilithium_ed448_ctx_userctx(struct lc_dilithium_ed448_ctx *ctx, const uint8_t *userctx, size_t userctxlen)
Specify the optional user context string to be applied with the Dilithium-ED448 signature operation.
int lc_dilithium_ed448_ctx_alloc(struct lc_dilithium_ed448_ctx **ctx)
Allocates Dilithium-ED448 context on heap.
int lc_dilithium_ed448_sign_ctx(struct lc_dilithium_ed448_sig *sig, struct lc_dilithium_ed448_ctx *ctx, const uint8_t *m, size_t mlen, const struct lc_dilithium_ed448_sk *sk, struct lc_rng_ctx *rng_ctx)
Computes signature with Dilithium context in one shot.
int lc_dilithium_ed448_keypair(struct lc_dilithium_ed448_pk *pk, struct lc_dilithium_ed448_sk *sk, struct lc_rng_ctx *rng_ctx, enum lc_dilithium_type dilithium_type)
Generates Dilithium public and private key.
enum lc_dilithium_type dilithium_type
union lc_dilithium_sk::@023140266173122376146257253052136150224201312302 key
int lc_dilithium_pct(const struct lc_dilithium_pk *pk, const struct lc_dilithium_sk *sk)
Pairwise consistency check as per FIPS 140 IG.
union lc_dilithium_sig::@253200045274042000141376221122043356131046366147 sig
union lc_dilithium_ed448_sk::@253041030320102372376017002314034324161003101335 key
union lc_dilithium_ed25519_pk::@374037170017044037351117321345333072171140134203 key
enum lc_dilithium_type dilithium_type
union lc_dilithium_ed448_sig::@212243107342061271066346165004203111066243276363 sig
enum lc_dilithium_type dilithium_type
enum lc_dilithium_type dilithium_type
enum lc_dilithium_type dilithium_type
enum lc_dilithium_type dilithium_type
enum lc_dilithium_type dilithium_type
enum lc_dilithium_type dilithium_type
enum lc_dilithium_type dilithium_type
union lc_dilithium_pk::@322212144176246142345120113132130212345020203246 key
union lc_dilithium_ed448_pk::@254046247170216132141170276332304267377124000115 key
union lc_dilithium_ed25519_sig::@153124376101002147233177111226011157256271352356 sig
union lc_dilithium_ed25519_sk::@127001250111262044130262306377154372363326114117 key
struct lc_dilithium_44_sig sig
struct lc_dilithium_44_sig sig
#define LC_DILITHIUM_44_CTX_ON_STACK_AHAT(name)
Allocate stack memory for the Dilithium stream context and additional parameter relevant for the sign...
uint8_t sig[LC_DILITHIUM_CRYPTO_BYTES]
#define LC_DILITHIUM_65_CTX_ON_STACK_AHAT(name)
Allocate stack memory for the Dilithium stream context and additional parameter relevant for the sign...
Dilithium stream context.
Dilithium stream context.