Skip to main content

darkpool_crypto/
lib.rs

1//! Cryptographic primitives for the `DarkPool` protocol (BJJ, Poseidon2, AES, ECDH, KDF, DLEQ).
2//!
3//! All implementations maintain cross-language byte-identical parity with TypeScript, Noir, and Solidity.
4
5pub mod aes;
6pub mod bjj;
7pub mod dleq;
8pub mod ecdh;
9pub mod error;
10pub mod field;
11pub mod kdf;
12pub mod poseidon;
13
14pub use aes::{aes128_decrypt, aes128_encrypt, kdf_to_aes_key_iv};
15pub use bjj::{
16    u256_to_le_bytes, PublicKey, SecretKey, SharedSecret, BASE8, BASE8_X, BASE8_Y, SUBGROUP_ORDER,
17};
18pub use dleq::{generate_dleq_proof, RawDleqProof};
19pub use ecdh::{
20    bjj_is_on_curve, bjj_scalar_mul, derive_public_key_from_sk, derive_shared_secret_bjj,
21};
22pub use error::CryptoError;
23pub use field::{
24    address_to_field, deserialize_fr, field_to_address, fr_to_u256, from_noir_hex, poseidon_hash,
25    poseidon_hash_fr, random_bjj_scalar, random_field, serialize_fr, string_to_fr, to_noir_decimal,
26    to_noir_hex, u256_to_fr,
27};
28pub use kdf::Kdf;
29pub use poseidon::{IPoseidonHasher, NoxHasher};