Home > eID > Library-Evaluation
Library Evaluation
Last modified: 2026-10-28
Description
In 2025 the eid-privacy project (WP2) rated open-source libraries for e-ID and anonymous credentials, to pick the
basis for its proofs of concept (eid-privacy-WP2-Libraries). Each library got a score from 1 to 5 on six criteria;
the mean is its quality score. The scores show the state in mid-2025 and are a quick assessment, not an audit.
The project then used docknetwork-crypto for BBS + Bulletproofs and Noir for circuits (GHE26-MS2).
Criteria
Each criterion is rated 5 (excellent), 4 (good), 3 (adequate), 2 (poor) or 1 (very poor / missing).
| Criterion |
Short |
5 means |
1 means |
| Software structure / architecture / engineering |
Str |
Well organised, clear separation of concerns, modular and extensible |
No clear architecture, very hard to understand or maintain |
| Unit tests & CI/CD |
Test |
Coverage > 80 %, integration tests, CI on several platforms (4: 60–80 %, 3: 30–60 %, 2: < 30 %) |
No tests, no CI |
| License, ownership and access |
Lic |
Permissive license (MIT, Apache 2.0, BSD), clear contributor rules, no proprietary parts (4: copyleft) |
Closed source, very restrictive or contested ownership |
| Amenity to change (issues, PRs) |
Chg |
Issues triaged within days, PRs reviewed and merged quickly (4: weeks, 3: months) |
Abandoned, maintainers do not answer |
| Documentation |
Doc |
Tutorials, API reference, examples, architecture diagrams, up to date |
Only a basic README |
| Probable support in the next 2–3 years |
Sup |
Backed by a large organisation, active community, roadmap, funding |
Abandoned or on life support |
Scores
Zero-knowledge libraries
| Library |
Language |
Purpose |
Str |
Test |
Lic |
Chg |
Doc |
Sup |
Mean |
Note |
| Arkworks Algebra |
Rust |
Low-level zkSNARK building blocks |
5 |
5 |
5 |
5 |
5 |
5 |
5.0 |
Probably the best engineered and best supported project in this list |
| Crescent |
Rust |
e-ID ZKP library |
5 |
3 |
5 |
5 |
3 |
5 |
4.3 |
Full e-ID solution with a good client and examples |
| Arkworks crypto-primitives |
Rust |
Crypto primitives |
3 |
5 |
5 |
5 |
2 |
5 |
4.2 |
Bad documentation, not clear how to use it |
| Plonky3 |
Rust |
Polynomial-IOP primitives for STARK-based zkVMs |
3 |
3 |
5 |
5 |
2 |
5 |
3.8 |
Great community, but weak documentation and a high entry barrier |
| Spartan |
Rust |
Microsoft's Spartan proof system |
5 |
3 |
5 |
5 |
3 |
2 |
3.8 |
|
| Docknetwork crypto |
Rust |
Signatures, ZKPs and high-level constructs |
5 |
3 |
3 |
3 |
2 |
5 |
3.5 |
One of the most complete e-ID focused crypto libraries we know of |
| Longfellow |
C++ |
e-ID ZKP library |
5 |
3 |
3 |
3 |
2 |
5 |
3.5 |
C++ without foreign-language wrappers, unclear APIs |
| MATTR pairing_crypto |
Rust |
BBS signatures |
2 |
5 |
5 |
3 |
3 |
2 |
3.3 |
Bad documentation, but wrappers for several languages |
| zkcrypto Bulletproofs |
Rust |
Fast Bulletproofs implementation |
5 |
3 |
5 |
2 |
3 |
2 |
3.3 |
Only Bulletproofs; a fork of dalek-cryptography/bulletproofs |
| Plonky2 |
Rust |
Polygon's ZK proving system |
2 |
2 |
5 |
2 |
5 |
2 |
3.0 |
On its way to deprecation (replaced by Plonky3) |
Zero-knowledge circuit frameworks
| Library |
Language |
Purpose |
Str |
Test |
Lic |
Chg |
Doc |
Sup |
Mean |
Note |
| Circom |
Rust / WebAssembly |
Most popular circuit framework |
5 |
5 |
5 |
5 |
5 |
5 |
5.0 |
|
| libiop |
C++ |
Library for IOP-based zkSNARKs |
5 |
5 |
5 |
3 |
5 |
3 |
4.3 |
Could be a basis for IOP-based constructions |
| Halo2 (Zcash) |
Rust |
Halo2 proof system and circuit framework |
3 |
5 |
5 |
3 |
3 |
3 |
3.7 |
|
| Noir |
Rust |
Rust-like DSL for ZK circuits |
2 |
2 |
5 |
3 |
2 |
2 |
2.7 |
Huge project with a big community |
DIDComm libraries
| Library |
Language |
Purpose |
Str |
Test |
Lic |
Chg |
Doc |
Sup |
Mean |
Note |
| ACA-Py |
Python |
SSI agent |
5 |
5 |
5 |
5 |
5 |
5 |
5.0 |
|
| DIDComm Mediator Credo |
TypeScript |
DIDComm mediator for message routing and delivery |
5 |
5 |
5 |
5 |
5 |
5 |
5.0 |
|
| Veramo |
TypeScript |
Framework for verifiable data and DIDComm messaging |
5 |
5 |
5 |
5 |
5 |
5 |
5.0 |
|
| didcomm-rust |
Rust |
DIDComm v2 messaging |
3 |
5 |
5 |
3 |
3 |
3 |
3.7 |
|
| Library |
Language |
Purpose |
Str |
Test |
Lic |
Chg |
Doc |
Sup |
Mean |
Note |
| SpruceID ssi |
Rust |
VC data model, among other things |
5 |
5 |
5 |
5 |
5 |
5 |
5.0 |
Maybe the best in this category, needs more research |
| Procivis One Core |
Rust |
All-in-one application, not specific to VC formats |
3 |
3 |
5 |
2 |
5 |
3 |
3.5 |
|
| did-jwt |
TypeScript |
Simple DID-JWT implementation |
5 |
2 |
3 |
2 |
5 |
2 |
3.2 |
|
Crypto and communication libraries are mature, but there are few dedicated VC-format libraries: the format is
usually a small part of a bigger project (for example, Longfellow parses CBOR itself).
Resources