Module anonymous_credentials

Module anonymous_credentials 

Source
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§

AnonymousCredential
Anonymous credential
CredentialPresentation
Credential presentation (proof of possession without revealing credential)
CredentialRequest
Credential request from user
Issuer
Issuer of anonymous credentials
IssuerPublicKey
Issuer public key
User
User holding anonymous credentials

Enums§

AnonCredError
Anonymous credentials error types

Type Aliases§

AnonCredResult
Result type for anonymous credentials operations