Expand description
Anonymous Credentials (Idemix-style) for privacy-preserving authentication
This module implements a simplified anonymous credential system inspired by IBM’s Idemix (Identity Mixer). It provides:
- Credential issuance without revealing user identity
- Selective disclosure of attributes
- Unlinkable presentations (same credential, different presentations are unlinkable)
- Revocation support
§Example
use chie_crypto::anonymous_credentials::*;
// Setup issuer
let issuer = Issuer::new();
// User creates credential request
let user = User::new();
let request = user.create_credential_request(&issuer.public_key()).unwrap();
// Issuer issues credential with attributes
let mut attributes = std::collections::HashMap::new();
attributes.insert("age".to_string(), vec![18]); // Age >= 18
attributes.insert("country".to_string(), vec![1]); // Country code 1
let credential = issuer.issue_credential(&request, &attributes).unwrap();
// User creates presentation revealing only age >= 18
let mut revealed = std::collections::HashSet::new();
revealed.insert("age".to_string());
let presentation = user.create_presentation(&credential, &revealed).unwrap();
// Verifier checks presentation
assert!(issuer.verify_presentation(&presentation, &revealed).unwrap());Structs§
- Anonymous
Credential - Anonymous credential
- Credential
Presentation - Credential presentation (proof of possession without revealing credential)
- Credential
Request - Credential request from user
- Issuer
- Issuer of anonymous credentials
- Issuer
Public Key - Issuer public key
- User
- User holding anonymous credentials
Enums§
- Anon
Cred Error - Anonymous credentials error types
Type Aliases§
- Anon
Cred Result - Result type for anonymous credentials operations