Leancrypto 0.12.0
Post-Quantum Cryptographic Library
Loading...
Searching...
No Matches
lc_dilithium.h File Reference
#include "ext_headers.h"
+ Include dependency graph for lc_dilithium.h:

Go to the source code of this file.

Data Structures

struct  lc_dilithium_sk
 Dilithium secret key. More...
 
struct  lc_dilithium_pk
 Dilithium public key. More...
 
struct  lc_dilithium_sig
 Dilithium signature. More...
 
struct  lc_dilithium_ed25519_sk
 Dilithium secret key. More...
 
struct  lc_dilithium_ed25519_pk
 Dilithium public key. More...
 
struct  lc_dilithium_ed25519_sig
 Dilithium signature. More...
 
union  lc_dilithium_sk.key
 
union  lc_dilithium_pk.key
 
union  lc_dilithium_sig.sig
 
union  lc_dilithium_ed25519_sk.key
 
union  lc_dilithium_ed25519_pk.key
 
union  lc_dilithium_ed25519_sig.sig
 

Enumerations

enum  lc_dilithium_type { LC_DILITHIUM_UNKNOWN , LC_DILITHIUM_87 , LC_DILITHIUM_65 , LC_DILITHIUM_44 }
 

Functions

static int lc_dilithium_ctx_alloc (struct lc_dilithium_ctx **ctx)
 Allocates Dilithium context on heap.
 
static void lc_dilithium_ctx_zero_free (struct lc_dilithium_ctx *ctx)
 Zeroizes and frees Dilithium context on heap.
 
static void lc_dilithium_ctx_zero (struct lc_dilithium_ctx *ctx)
 Zeroizes Dilithium context either on heap or on stack.
 
static enum lc_dilithium_type lc_dilithium_sk_type (const struct lc_dilithium_sk *sk)
 Obtain Dilithium type from secret key.
 
static enum lc_dilithium_type lc_dilithium_pk_type (const struct lc_dilithium_pk *pk)
 Obtain Dilithium type from public key.
 
static enum lc_dilithium_type lc_dilithium_sig_type (const struct lc_dilithium_sig *sig)
 Obtain Dilithium type from signature.
 
static LC_PURE unsigned int lc_dilithium_sk_size (enum lc_dilithium_type dilithium_type)
 Return the size of the Dilithium secret key.
 
static LC_PURE unsigned int lc_dilithium_pk_size (enum lc_dilithium_type dilithium_type)
 Return the size of the Dilithium public key.
 
static LC_PURE unsigned int lc_dilithium_sig_size (enum lc_dilithium_type dilithium_type)
 Return the size of the Dilithium signature.
 
static 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.
 
static 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.
 
static 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.
 
static 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.
 
static 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.
 
static 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.
 
static 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.
 
static 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.
 
static 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.
 
static int lc_dilithium_sign_init (struct lc_dilithium_ctx *ctx, const struct lc_dilithium_sk *sk)
 Initializes a signature operation.
 
static 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.
 
static 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.
 
static 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.
 
static int lc_dilithium_verify_init (struct lc_dilithium_ctx *ctx, const struct lc_dilithium_pk *pk)
 Initializes a signature verification operation.
 
static 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.
 
static int lc_dilithium_verify_final (const struct lc_dilithium_sig *sig, struct lc_dilithium_ctx *ctx, const struct lc_dilithium_pk *pk)
 Verifies signature.
 
static int lc_dilithium_ed25519_ctx_alloc (struct lc_dilithium_ed25519_ctx **ctx)
 Allocates Dilithium-ED25519 context on heap.
 
static void lc_dilithium_ed25519_ctx_zero_free (struct lc_dilithium_ed25519_ctx *ctx)
 Zeroizes and frees Dilithium-ED25519 context on heap.
 
static void lc_dilithium_ed25519_ctx_zero (struct lc_dilithium_ed25519_ctx *ctx)
 Zeroizes Dilithium-ED25519 context either on heap or on stack.
 
static enum lc_dilithium_type lc_dilithium_ed25519_sk_type (const struct lc_dilithium_ed25519_sk *sk)
 Obtain Dilithium type from secret key.
 
static enum lc_dilithium_type lc_dilithium_ed25519_pk_type (const struct lc_dilithium_ed25519_pk *pk)
 Obtain Dilithium type from public key.
 
static enum lc_dilithium_type lc_dilithium_ed25519_sig_type (const struct lc_dilithium_ed25519_sig *sig)
 Obtain Dilithium type from signature.
 
static LC_PURE unsigned int lc_dilithium_ed25519_sk_size (enum lc_dilithium_type dilithium_type)
 Return the size of the Dilithium secret key.
 
static LC_PURE unsigned int lc_dilithium_ed25519_pk_size (enum lc_dilithium_type dilithium_type)
 Return the size of the Dilithium public key.
 
static LC_PURE unsigned int lc_dilithium_ed25519_sig_size (enum lc_dilithium_type dilithium_type)
 Return the size of the Dilithium signature.
 
static 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.
 
static 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.
 
static 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.
 
static 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.
 
static 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.
 
static 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.
 
static 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.
 
static 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.
 
static 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.
 
static int lc_dilithium_ed25519_sign_update (struct lc_dilithium_ed25519_ctx *ctx, const uint8_t *m, size_t mlen)
 Updates signature in stream mode.
 
static 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.
 
static 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.
 
static 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.
 
static 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.
 
static 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.
 

Data Structure Documentation

◆ lc_dilithium_sk

struct lc_dilithium_sk

Dilithium secret key.

Definition at line 99 of file lc_dilithium.h.

Data Fields
enum lc_dilithium_type dilithium_type
union lc_dilithium_sk.key key

◆ lc_dilithium_pk

struct lc_dilithium_pk

Dilithium public key.

Definition at line 117 of file lc_dilithium.h.

Data Fields
enum lc_dilithium_type dilithium_type
union lc_dilithium_pk.key key

◆ lc_dilithium_sig

struct lc_dilithium_sig

Dilithium signature.

Definition at line 135 of file lc_dilithium.h.

Data Fields
enum lc_dilithium_type dilithium_type
union lc_dilithium_sig.sig sig

◆ lc_dilithium_ed25519_sk

struct lc_dilithium_ed25519_sk

Dilithium secret key.

Definition at line 1162 of file lc_dilithium.h.

Data Fields
enum lc_dilithium_type dilithium_type
union lc_dilithium_ed25519_sk.key key

◆ lc_dilithium_ed25519_pk

struct lc_dilithium_ed25519_pk

Dilithium public key.

Definition at line 1180 of file lc_dilithium.h.

Data Fields
enum lc_dilithium_type dilithium_type
union lc_dilithium_ed25519_pk.key key

◆ lc_dilithium_ed25519_sig

struct lc_dilithium_ed25519_sig

Dilithium signature.

Definition at line 1198 of file lc_dilithium.h.

Data Fields
enum lc_dilithium_type dilithium_type
union lc_dilithium_ed25519_sig.sig sig

◆ lc_dilithium_sk.key

union lc_dilithium_sk.key

Definition at line 101 of file lc_dilithium.h.

◆ lc_dilithium_pk.key

union lc_dilithium_pk.key

Definition at line 119 of file lc_dilithium.h.

◆ lc_dilithium_sig.sig

union lc_dilithium_sig.sig

Definition at line 137 of file lc_dilithium.h.

◆ lc_dilithium_ed25519_sk.key

union lc_dilithium_ed25519_sk.key

Definition at line 1164 of file lc_dilithium.h.

◆ lc_dilithium_ed25519_pk.key

union lc_dilithium_ed25519_pk.key

Definition at line 1182 of file lc_dilithium.h.

◆ lc_dilithium_ed25519_sig.sig

union lc_dilithium_ed25519_sig.sig

Definition at line 1200 of file lc_dilithium.h.

Enumeration Type Documentation

◆ lc_dilithium_type

Enumerator
LC_DILITHIUM_UNKNOWN 

Unknown key type

LC_DILITHIUM_87 

Dilithium 87

LC_DILITHIUM_65 

Dilithium 65

LC_DILITHIUM_44 

Dilithium 44

Definition at line 54 of file lc_dilithium.h.