Signet Forge 0.1.0
C++20 Parquet library with AI-native extensions
DEMO
Loading...
Searching...
No Matches
signet::forge::crypto::DilithiumSign Class Reference

Dilithium-3 digital signature scheme (NIST FIPS 204 / ML-DSA-65). More...

#include <post_quantum.hpp>

Classes

struct  SignKeyPair
 Dilithium-3 signing keypair: public key for verification, secret key for signing. More...
 

Static Public Member Functions

static expected< SignKeyPairgenerate_keypair ()
 Generate a Dilithium-3 signing keypair.
 
static expected< std::vector< uint8_t > > sign (const uint8_t *message, size_t msg_size, const uint8_t *secret_key, size_t sk_size)
 Sign a message with the secret key.
 
static expected< bool > verify (const uint8_t *message, size_t msg_size, const uint8_t *signature, size_t sig_size, const uint8_t *public_key, size_t pk_size)
 Verify a signature against a message and public key.
 

Static Public Attributes

static constexpr size_t PUBLIC_KEY_SIZE = 1952
 Dilithium-3 public key size (stub default).
 
static constexpr size_t SECRET_KEY_SIZE = 4000
 Dilithium-3 secret key size (stub default).
 
static constexpr size_t SIGNATURE_MAX_SIZE = 3293
 Maximum Dilithium-3 signature size (stub default).
 

Detailed Description

Dilithium-3 digital signature scheme (NIST FIPS 204 / ML-DSA-65).

Used to sign Parquet file footers for tamper detection. Provides approximately 192-bit post-quantum security for digital signatures.

Two modes of operation:

  • Bundled mode (default): Test-only SHA-256-based stubs. NOT cryptographically secure and rejected unless SIGNET_ALLOW_STUB_PQ is explicitly defined.
  • liboqs mode (SIGNET_HAS_LIBOQS): Real NIST-standardized Dilithium-3.
See also
KyberKem for post-quantum key encapsulation

Definition at line 1004 of file post_quantum.hpp.

Member Function Documentation

◆ generate_keypair()

static expected< SignKeyPair > signet::forge::crypto::DilithiumSign::generate_keypair ( )
inlinestatic

Generate a Dilithium-3 signing keypair.

Returns
SignKeyPair with public_key and secret_key, or an error on failure.

Definition at line 1046 of file post_quantum.hpp.

◆ sign()

static expected< std::vector< uint8_t > > signet::forge::crypto::DilithiumSign::sign ( const uint8_t *  message,
size_t  msg_size,
const uint8_t *  secret_key,
size_t  sk_size 
)
inlinestatic

Sign a message with the secret key.

Parameters
messagePointer to the message bytes to sign.
msg_sizeMessage length in bytes.
secret_keyPointer to the Dilithium-3 secret key.
sk_sizeMust equal SECRET_KEY_SIZE.
Returns
Signature (up to SIGNATURE_MAX_SIZE bytes), or an error on failure.

Definition at line 1132 of file post_quantum.hpp.

◆ verify()

static expected< bool > signet::forge::crypto::DilithiumSign::verify ( const uint8_t *  message,
size_t  msg_size,
const uint8_t *  signature,
size_t  sig_size,
const uint8_t *  public_key,
size_t  pk_size 
)
inlinestatic

Verify a signature against a message and public key.

Parameters
messagePointer to the original message bytes.
msg_sizeMessage length in bytes.
signaturePointer to the signature bytes.
sig_sizeSignature length (must be <= SIGNATURE_MAX_SIZE).
public_keyPointer to the Dilithium-3 public key.
pk_sizeMust equal PUBLIC_KEY_SIZE.
Returns
True if the signature is valid, false otherwise.

Definition at line 1234 of file post_quantum.hpp.

Member Data Documentation

◆ PUBLIC_KEY_SIZE

constexpr size_t signet::forge::crypto::DilithiumSign::PUBLIC_KEY_SIZE = 1952
staticconstexpr

Dilithium-3 public key size (stub default).

Definition at line 1015 of file post_quantum.hpp.

◆ SECRET_KEY_SIZE

constexpr size_t signet::forge::crypto::DilithiumSign::SECRET_KEY_SIZE = 4000
staticconstexpr

Dilithium-3 secret key size (stub default).

Definition at line 1016 of file post_quantum.hpp.

◆ SIGNATURE_MAX_SIZE

constexpr size_t signet::forge::crypto::DilithiumSign::SIGNATURE_MAX_SIZE = 3293
staticconstexpr

Maximum Dilithium-3 signature size (stub default).

Definition at line 1017 of file post_quantum.hpp.


The documentation for this class was generated from the following file: