An implementation of the W3C Ed25519Signature2020 Suite in Java.
- Ed25519Signature2020
- Verifier, Issuer
- 📦 VC HTTP API & Service
Java 17+
<dependency>
<groupId>com.apicatalog</groupId>
<artifactId>iron-ed25519-cryptosuite-2020</artifactId>
<version>0.14.0</version>
</dependency>
<dependency>
<groupId>com.apicatalog</groupId>
<artifactId>iron-verifiable-credentials</artifactId>
<version>0.14.0</version>
</dependency>
Android 12+ (API Level >=31)
implementation("com.apicatalog:iron-ed25519-cryptosuite-2020-jre8:0.14.0")
implementation("com.apicatalog:iron-verifiable-credentials-jre8:0.14.0")
// create a new verifier instance
static Verifier VERIFIER = Verifier.with(new Ed25519Signature2020())
.loader(new Ed25519ContextLoader())
// options
.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 signature suite static instance
static SignatureSuite SUITE = new Ed25519Signature2020();
// create a new issuer instance
Issuer ISSUER = SUITE.createIssuer(keyPairProvider)
.loader(Ed25519ContextLoader());
try {
// create a new proof draft
var proofDraft = SUITE.createDraft(verificationMethod, purpose);
// set custom options
proofDraft.created(...);
proofDraft.domain(...);
...
// 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) {
...
}
All PR's welcome!
Fork and clone the project repository.
> cd iron-ed25519-signature-2020
> mvn clean package
Commercial support is available at [email protected]