Implements WASM-compatible Dilithium3 (ML-DSA-65) signatures using the pure Rust pqc_dilithium crate. This provides NIST Security Category 3 post-quantum signature support for the web wallet. Changes: - Add pqc_dilithium dependency with WASM feature - Create DilithiumSigningKey wrapper for WASM bindings - Add dilithiumVerify and dilithiumSizes helper functions - Update tests to work on both native and WASM targets - Update README to reflect completed Dilithium3 support Key sizes (Dilithium3 / ML-DSA-65): - Public Key: 1,952 bytes - Signature: 3,293 bytes
55 lines
1.2 KiB
TOML
55 lines
1.2 KiB
TOML
[package]
|
|
name = "synor-crypto-wasm"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
description = "WASM-compatible cryptography for Synor web wallet"
|
|
license = "MIT OR Apache-2.0"
|
|
|
|
[lib]
|
|
crate-type = ["cdylib", "rlib"]
|
|
|
|
[dependencies]
|
|
# WASM bindings
|
|
wasm-bindgen = "0.2"
|
|
js-sys = "0.3"
|
|
|
|
# Classical cryptography (pure Rust, WASM compatible)
|
|
ed25519-dalek = { version = "2.1", default-features = false, features = ["rand_core"] }
|
|
rand = { version = "0.8", default-features = false, features = ["std_rng"] }
|
|
getrandom = { version = "0.2", features = ["js"] }
|
|
|
|
# Hashing (pure Rust)
|
|
sha3 = "0.10"
|
|
blake3 = "1.5"
|
|
|
|
# Key derivation (pure Rust)
|
|
hkdf = "0.12"
|
|
pbkdf2 = { version = "0.12", features = ["simple"] }
|
|
hmac = "0.12"
|
|
|
|
# BIP-39
|
|
bip39 = { package = "tiny-bip39", version = "1.0" }
|
|
|
|
# Post-quantum cryptography (WASM compatible)
|
|
pqc_dilithium = { version = "0.2", default-features = false, features = ["wasm"] }
|
|
|
|
# Serialization
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
serde-wasm-bindgen = "0.6"
|
|
|
|
# Utilities
|
|
hex = "0.4"
|
|
zeroize = { version = "1.7", features = ["derive"] }
|
|
|
|
[dev-dependencies]
|
|
wasm-bindgen-test = "0.3"
|
|
|
|
[features]
|
|
default = []
|
|
# Enable when we have WASM-compatible Dilithium
|
|
pqc = []
|
|
|
|
[profile.release]
|
|
# Optimize for size in WASM
|
|
lto = true
|
|
opt-level = "s"
|