@anoncitizen/core
v1.3.0
Published
Core TypeScript SDK for AnonCitizen ZK Aadhaar verification
Maintainers
Readme
@anoncitizen/core
Core TypeScript SDK for privacy-preserving Aadhaar identity verification using zero-knowledge proofs.
Installation
npm install @anoncitizen/coreUsage
import { AnonCitizen } from "@anoncitizen/core";
const ac = new AnonCitizen({
wasmUrl: "./aadhaar-verifier.wasm",
zkeyUrl: "./aadhaar-verifier.zkey",
verificationKey: vkey,
});
// Set UIDAI RSA public key
ac.setPublicKey(uidaiCertPem);
// Parse Aadhaar QR code
const payload = await ac.parseQR(qrData);
// Generate ZK proof with selective disclosure
const proof = await ac.prove({
qrData,
nullifierSeed: 42n,
revealAgeAbove18: true,
revealGender: false,
revealState: false,
revealPinCode: false,
});
// Verify off-chain
const result = await ac.verify(proof);
console.log(result.valid); // true
console.log(result.ageAbove18); // true
console.log(result.nullifier); // BigInt
// Format for on-chain verification
const calldata = ac.formatForContract(proof);API
AnonCitizen class
constructor(config)— Initialize with WASM/zkey URLs and optional verification keysetPublicKey(certOrKey)— Set UIDAI RSA public key (PEM, DER, or pre-parsed)parseQR(qrData)— Parse Aadhaar QR code into structured payloadprove(request)— Generate a Groth16 ZK proofverify(proof)— Verify proof off-chainformatForContract(proof)— Format proof for Solidity contract call
Standalone functions
parseQRCode(qrData)— Parse QR without SDK instancegenerateProof(payload, publicKey, request, wasmPath, zkeyPath)— Low-level proof generationverifyProofOffChain(proof, verificationKey)— Low-level verificationformatProofForContract(proof)— Format for on-chain usehashSignal(signal)— Poseidon hash for signal bindinggenerateNullifierSeed(appId)— Deterministic nullifier seed from app ID
Circuit Artifacts
The WASM and zkey files are not bundled with this package. Host them on IPFS or a CDN and provide URLs in the config.
License
MIT
