Expand description
Note-specific crypto: packing, encryption, nullifier derivation.
Re-exports pure primitives from darkpool_crypto.
Structs§
Enums§
Functions§
- address_
to_ field - Convert an Ethereum address to a field element.
- aes128_
decrypt - Decrypt 208-byte AES-128-CBC ciphertext, returning 192 bytes on success.
- aes128_
encrypt - Encrypt 192-byte plaintext using AES-128-CBC with PKCS#7 padding. Returns 208 bytes.
- bjj_
is_ on_ curve - Check
a*x^2 + y^2 == 1 + d*x^2*y^2 - bjj_
scalar_ mul scalar * pointwith full validation (on-curve + subgroup check).- calculate_
public_ memo_ id - decrypt_
note_ from_ fields - derive_
nullifier_ path_ a NullifierHash= Poseidon(noteNullifier)- derive_
nullifier_ path_ b NullifierHash= Poseidon(sharedSecret, commitment,leafIndex)- derive_
public_ key_ from_ sk PK = sk * Base8- derive_
shared_ secret_ bjj - ECDH shared secret derivation. Returns X coordinate of
sk * pk. - encrypt_
memo_ note_ 3party - 3-party ECDH memo encryption: S = a * b * c * G shared between sender (a), recipient (b/ivk), and compliance (c).
- encrypt_
note_ for_ deposit_ aes - Encrypt a note for deposit. Returns (
packed_fields,ephemeral_pk). - field_
to_ address - Convert a field element back to an Ethereum address (last 20 bytes).
- fr_
to_ u256 - Convert
ark_bn254::Frto ethers U256. - from_
noir_ hex - Parse a Noir hex string (0x-prefixed or raw) back to U256.
- generate_
dleq_ proof - kdf_
to_ aes_ key_ iv - Derive AES key (last 16 bytes of Poseidon) and IV from shared secret.
- pack_
ciphertext_ to_ fields - Pack 208-byte ciphertext into 7 field elements (LE, 31+31+31+31+31+31+22).
- pack_
note_ plaintext - Pack a
NotePlaintextinto 192 bytes (6 × 32-byte BE fields). - poseidon_
hash - Poseidon2 hash over U256 values. Output matches
std::hash::poseidon2in Noir. - random_
bjj_ scalar - Random BJJ scalar (mod subgroup order L, ~2^251). Required for Noir circuits
where
ScalarField::<63>needs values < 2^252;random_field()would fail ~67% of the time. - random_
field - Generate a random BN254 scalar field element.
- recipient_
decrypt_ 3party - Returns (note,
shared_secret) –shared_secretis needed for Path B nullifier derivation. - string_
to_ fr - Convert string to field element: left-pad to 32 bytes, interpret as Fr, then Poseidon hash.
- to_
noir_ decimal - Convert U256 to Noir decimal string.
- to_
noir_ hex - Convert U256 to Noir-compatible hex string (0x-prefixed, 64 chars, lowercase).
- u256_
to_ fr - Convert ethers U256 to
ark_bn254::Fr. Values >= modulus are silently reduced. - unpack_
ciphertext_ from_ fields - unpack_
note_ plaintext