iden3 is a next-generation private access control based on self-sovereign identity, designed for decentralised and trust-minimised environments.
Everyone has the right to liberty and equality, the right freely to participate in their community, and the right to privacy.
The aim of the iden3 protocol is to empower people and create a more inclusive and egalitarian foundation for better human relationships through open-source cryptography and decentralised technologies.
-
Crypto library (go-iden3-crypto)
Implementation of Poseidon hash and Baby JubJub Elliptic curve -
Merkle tree sql library (go-merkletree-sql)
Implementation of Sparse Merkle tree -
Core library (go-iden3-core)
Identity core primitives -
Circuits (circuits)
Identity circuits -
Go-circuits (go-circuits)
Library for transformation go-core primitives to json inputs for identity circuits -
Prover server (prover-server)
Wrapper on snarkjs for ZK proof generation -
Authorization library (go-iden3-auth)
Library for authentication with zkp verification (edited)
pip3 install mkdocs
In case you have a rendering problem with the pieces of code, please execute:
pip install --upgrade mkdocs
pip install mkdocs-material
pip3 install mkdocs-markdown-graphviz==1.3
At the mkdocs directory execute:
mkdocs serve
auth
** signal input genesisID;
// random number, which should be stored by user
// if there is a need to generate the same userID (ProfileID) output for different proofs
signal input profileNonce;
// user state
** signal input state;
** signal input claimsTreeRoot;
** signal input revTreeRoot;
** signal input rootsTreeRoot;
// Auth claim
** signal input authClaim[8];
// auth claim. merkle tree proof of inclusion to claim tree
** signal input authClaimIncMtp[IdOwnershipLevels];
// auth claim - rev nonce. merkle tree proof of non-inclusion to rev tree
** signal input authClaimNonRevMtp[IdOwnershipLevels];
** signal input authClaimNonRevMtpNoAux;
** signal input authClaimNonRevMtpAuxHi;
** signal input authClaimNonRevMtpAuxHv;
// challenge signature
** signal input challenge;
** signal input challengeSignatureR8x;
** signal input challengeSignatureR8y;
** signal input challengeSignatureS;
// global identity state tree on chain
signal input gistRoot;
// proof of inclusion or exclusion of the user in the global state
signal input gistMtp[onChainLevels];
signal input gistMtpAuxHi;
signal input gistMtpAuxHv;
signal input gistMtpNoAux;