Implements a protocol for nodes to negotiate which post-quantum signature algorithm to use for communication. Supports Dilithium3, SPHINCS+ (128s/192s/256s), and FALCON (512/1024) with configurable preferences based on: - Security level (NIST 1-5) - Bandwidth constraints (signature size limits) - Algorithm family preference (lattice vs hash-based) Key features: - AlgorithmCapabilities for advertising node capabilities - AlgorithmNegotiator for selecting best common algorithm - Scoring strategies (local/remote preference, average, min/max) - Fallback algorithm selection (different family for resilience) - Session parameters with renegotiation support - Full test coverage (11 tests) This completes Milestone 2 (Enhanced Quantum Cryptography) of Phase 13.
51 lines
1.3 KiB
TOML
51 lines
1.3 KiB
TOML
[package]
|
|
name = "synor-crypto"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
authors.workspace = true
|
|
license.workspace = true
|
|
description = "Quantum-resistant cryptography for Synor blockchain"
|
|
|
|
[dependencies]
|
|
synor-types = { path = "../synor-types" }
|
|
|
|
# Classical cryptography
|
|
ed25519-dalek = { workspace = true }
|
|
x25519-dalek = { workspace = true }
|
|
rand = { workspace = true }
|
|
rand_core = { workspace = true }
|
|
|
|
# Post-quantum cryptography (NIST FIPS 203-206)
|
|
pqcrypto-dilithium = { workspace = true } # FIPS 204 (ML-DSA)
|
|
pqcrypto-kyber = { workspace = true } # FIPS 203 (ML-KEM)
|
|
pqcrypto-sphincsplus = { workspace = true } # FIPS 205 (SLH-DSA)
|
|
pqcrypto-falcon = { workspace = true } # FIPS 206 (FN-DSA)
|
|
pqcrypto-traits = { workspace = true }
|
|
|
|
# Hashing
|
|
sha3 = { workspace = true }
|
|
blake3 = { workspace = true }
|
|
|
|
# Key derivation
|
|
hkdf = "0.12"
|
|
pbkdf2 = { version = "0.12", features = ["simple"] }
|
|
hmac = "0.12"
|
|
|
|
# BIP-39 mnemonics
|
|
tiny-bip39 = "1.0"
|
|
|
|
# Utilities
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
borsh = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
zeroize = { version = "1.7", features = ["derive"] }
|
|
hex = { workspace = true }
|
|
|
|
[dev-dependencies]
|
|
criterion = { workspace = true }
|
|
proptest = { workspace = true }
|
|
|
|
[[bench]]
|
|
name = "crypto_bench"
|
|
harness = false
|