Skip to main content

Module safe_api

Module safe_api 

Source
Expand description

High-level safe Rust SDK for FN-DSA (FIPS 206) post-quantum digital signatures.

FN-DSA (FFT over NTRU-Lattice-Based Digital Signature Algorithm) is the NIST standardization of the Falcon signature scheme as FIPS 206.

§Quick Start

use falcon::safe_api::{FnDsaKeyPair, FnDsaSignature, DomainSeparation};

let kp = FnDsaKeyPair::generate(9).unwrap();
let sig = kp.sign(b"Hello, post-quantum world!", &DomainSeparation::None).unwrap();
FnDsaSignature::verify(sig.to_bytes(), kp.public_key(), b"Hello, post-quantum world!", &DomainSeparation::None).unwrap();

§Domain Separation (FIPS 206 §6)

FIPS 206 defines two signing modes:

let kp = FnDsaKeyPair::generate(9).unwrap();

// Pure FN-DSA with an application context string
let ctx = DomainSeparation::Context(b"my-protocol-v1");
let sig = kp.sign(b"msg", &ctx).unwrap();
FnDsaSignature::verify(sig.to_bytes(), kp.public_key(), b"msg", &ctx).unwrap();

// HashFN-DSA (pre-hash with SHA-256)
let ph = DomainSeparation::Prehashed { alg: PreHashAlgorithm::Sha256, context: b"" };
let sig2 = kp.sign(b"msg", &ph).unwrap();
FnDsaSignature::verify(sig2.to_bytes(), kp.public_key(), b"msg", &ph).unwrap();

§Security Levels

lognVariantNIST LevelPrivate KeyPublic KeySignature
9FN-DSA-512I1281 B897 B666 B
10FN-DSA-1024V2305 B1793 B1280 B

Structs§

FnDsaExpandedKey
A precomputed Falcon signing tree for fast repeated signing.
FnDsaKeyPair
An FN-DSA key pair (private key + public key).
FnDsaSignature
An FN-DSA / HashFN-DSA digital signature.

Enums§

DomainSeparation
Domain separation context for FN-DSA / HashFN-DSA (FIPS 206 §6).
FalconError
Errors returned by the FN-DSA API.
PreHashAlgorithm
Pre-hash algorithm selector for HashFN-DSA (FIPS 206 §6.2).

Type Aliases§

FalconKeyPair
Type alias for backward compatibility.
FalconSignature
Type alias for backward compatibility.