C-sigma: Easy-to-use Sigma proofs in C using libsodium
6 hours ago
- #libsodium
- #zero-knowledge-proofs
- #cryptography
- Clean, simple C implementation of Sigma protocols with Fiat-Shamir transformation for non-interactive zero-knowledge proofs.
- Supports Schnorr Protocol for proving knowledge of discrete logarithm.
- Supports Chaum-Pedersen Protocol for proving discrete logarithm equality (DLEQ).
- Non-interactive proofs using Fiat-Shamir transformation with SHAKE128.
- Minimal API with just 6 functions for complete functionality.
- Direct use of byte arrays without abstractions or wrapper types.
- Built on libsodium's Ristretto255 group operations for security.
- Includes initialization function `sigma_init()` to wrap `sodium_init()`.
- Provides functions for proving and verifying Schnorr and Chaum-Pedersen proofs.
- Detailed use cases for both protocols including digital signatures, authentication, and verifiable encryption.
- Comparison table between Schnorr and Chaum-Pedersen protocols.
- Technical specifications including elliptic curve group, hash function, proof sizes, and security level.