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
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
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) {
...
}
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 filip26@gmail.com