Important
Your feedback is essential to the improvement of this library. Please share any concerns, primary use cases, areas for enhancement, or challenges you have encountered. Your insights help refine and optimize the library to better meet user needs. Thank you for your time and contributions.
An implementation of the W3C Verifiable Credentials model and processing in Java.
- Issuer, Verifier, Holder
- Signature Suites
- W3C Data Integrity Cryptosuites
- ECDSA-SD-2023 [selective disclosure]
- EdDSA-RDFC-2022
- ECDSA-RDFC-2019 [P-256, P-384]
- BBS-2023 (planned)
- Ed25519Signature2020
- Have you implemented a signature suite? List it here, open PR.
- W3C Data Integrity Cryptosuites
- Credentail Status Verification
- Bitstring Status List (planned)
- Data Models
Community compatibility dashboard for Verifiable Credentials
This repository provides common logic and primitives to easily implement a signature suite. It is intended to be used together with a suite, or suites, of your choice, e.g. ECDSA SD 2023. Read the suite(s) documentation for specifics.
// create a new verifier instance
static Verifier VERIFIER = Verifier.with(SUITE1, SUITE2, ...)
// options
.base(...)
.loader(...)
.useBundledContexts(true|false)
.statusValidator(...)
.subjectValidator(...)
// ...
;
try {
// verify the given input proof(s)
var verifiable = VERIFIER.verify(credential|presentation);
// or with runtime parameters e.g. domain, challenge, etc.
var verifiable = VERIFIER.verify(credential|presentation, parameters);
// get verified details
verifiable.subject()
verifiable.id()
verifiable.type()
// ...
} catch (VerificationError | DocumentError e) {
...
}
// create a new issuer instance
Issuer ISSUER = SUITE.createIssuer(keyPairProvider)
// options
.base(...)
.loader(...)
.useBundledContexts(true|false)
// ...
;
try {
// issue a new verifiable, i.e. sign the input and add a new proof
var verifiable = ISSUER.sign(credential|presentation, proofDraft).compacted();
} catch (SigningError | DocumentError e) {
...
}
// create a new holder instance
static Holder HOLDER = Holder.with(SUITE1, SUITE2, ...)
// options
.base(...)
.loader(...)
.useBundledContexts(true|false)
// ...
;
try {
// derive a new signed credentials disclosing selected claims only
var verifiable = HOLDER.derive(credential, selectors).compacted();
} catch (SigningError | DocumentError e) {
...
}
Java 17+
<dependency>
<groupId>com.apicatalog</groupId>
<artifactId>iron-verifiable-credentials</artifactId>
<version>0.14.0</version>
</dependency>
Iron VC SDK for Android is distributed under a commercial license. Contact
All PR's welcome!
Fork and clone the project repository.
> cd iron-verfiable-credentials
> mvn clean package
- Iridium - A CBOR-based Processor for Linked Data
- VC HTTP API & Service
- LEXREX - Semantic vocabularies visual builder and manager
- VC Playground
- Community compatibility dashboard for Verifiable Credentials
- W3C Verifiable Credentials Data Model v2.0
- W3C Verifiable Credentials Data Model v1.1
- W3C Verifiable Credentials Use Cases
- W3C Verifiable Credentials Implementation Guidelines 1.0
- W3C Decentralized Identifiers (DIDs) v1.0
- The did:key Method v0.7
Commercial support is available at [email protected]