Skip to content

OFUZORCHUKWUEMEKE/crypto-primitives-rust

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

17 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ” crypto-primitives-rust

Building cryptographic primitives from scratch in Rust β€” ECC, BLS signatures, pairings, Pedersen commitments, and zero-knowledge proof building blocks. Strictly for learning.

⚠️ DO NOT USE IN PRODUCTION. This code is educational only. It has not been audited, is not constant-time, and is not secure for any real-world application.


Projects

πŸ“ ecc/ β€” Elliptic Curve Cryptography from Scratch

A ground-up implementation of ECC without any external crypto libraries. Everything is built by hand to understand the math.

Module What it implements
field.rs Finite field arithmetic (Fβ‚š) β€” add, subtract, multiply, modular exponentiation, modular inverse
point.rs Elliptic curve points β€” point addition, point doubling, point at infinity
scalar.rs Scalar multiplication β€” double-and-add algorithm, O(log k)
ecdsa.rs Toy ECDSA β€” key generation, message signing, signature verification

Key concepts: Finite fields, elliptic curve group law, discrete logarithm problem, digital signatures.


πŸ“ bls/ β€” BLS Signatures & Pairings βœ…

Pairing-based cryptography using arkworks on BLS12-381.

Part File What it covers
1 groups.rs G₁/Gβ‚‚ generators, scalar multiplication, identity
2 pairings.rs Bilinear pairing e(P,Q), bilinearity, non-degeneracy
3 bls.rs keygen, sign, verify via e(Οƒ, Gβ‚‚) == e(H(m), pk)
4–5 aggregate.rs Aggregate N signatures β†’ 1, size comparison

Ethereum context: Ethereum PoS uses BLS12-381 for validator attestations β€” 1M signatures collapsed into one 96-byte signature.


πŸ“ pedersen-commitment/ β€” Pedersen Commitments βœ…

Commit to a secret value without revealing it: C = vΒ·G + rΒ·H.

Part File What it covers
1 generator.rs G (standard) and H (hash-derived), why independence matters
2 commit.rs commit(v, r), verify(v, r, C), hiding & binding demos
3 homomorphic.rs C1 + C2 = Commit(v1+v2, r1+r2), balance proofs

Real-world use: Monero (hidden amounts), Mimblewimble, Bulletproofs, ZK-SNARKs.


Running

# Run ECC project
cd ecc && cargo test

# Run BLS project
cd bls && cargo run      # see all demonstrations
cd bls && cargo test     # run unit tests

# Run Pedersen Commitment project
cd pedersen-commitment && cargo run # see demonstration
cd pedersen-commitment && cargo test # run unit tests

Learning Roadmap

ECC (from scratch) βœ…
 └──▢ BLS Signatures & Aggregation βœ…
       └──▢ Pedersen Commitments βœ…
             └──▢ Polynomial Commitments (KZG / IPA) πŸ”²
                   └──▢ ZK-SNARKs (PLONK / Groth16) πŸ”²

About

πŸ” Building cryptographic primitives from scratch in Rust β€” ECC, BLS signatures, pairings, and zero-knowledge proof building blocks. Strictly for learning.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages