- CLI | Command Line Interface - Try out the functions of the SSI Kit locally.
- REST Api - Use the functions of the SSI Kit via an REST api.
- Maven/Gradle Dependency - Use the functions of the SSI Kit directly in a Kotlin/Java project.
- Example Projects - Demonstrate how to use the SSI Kit in any Kotlin/Java app
Check out the Official Documentation, to dive deeper into the architecture and configuration options available.
A library written in Kotlin/Java to manage Keys, DIDs and VCs. Functions can be used via Maven/Gradle or a REST api.
- Key Management generation, import/export
- Decentralized Identifier (DID) operations (create, register, update, deactivate)
- Verifiable Credential (VC) operations (issue, present, verify)
- EBSI/ESSIF related Use Cases (onboarding, VC exchange, etc.)
- Onboarding EBSI/ESSIF onboarding a natural person/legal entity including the DID creation and registration
- Enable Trusted Issuer process for entitling a legal entity to become a Trusted Issuer in the ESSIF ecosystem.
- Credential Issuance protocols and data formats for issuing W3C credentials from a Trusted Issuer to a natural person.
- Credential Verification verification facilities in order to determine the validity of a W3C Verifiable Credential aligned with EBSI/ESSIF standards.
- Creating W3C Decentralized Identifiers
- Issuing/verifying W3C Verifiable Credentials in JSON_LD and JWT format
fun main() {
// Load services
ServiceMatrix("service-matrix.properties")
// Create DIDs
val issuerDid = DidService.create(DidMethod.ebsi)
val holderDid = DidService.create(DidMethod.key)
// Issue VC in JSON-LD and JWT format (for show-casing both formats)
val vcJson = Signatory.getService().issue(
templateId = "VerifiableId",
config = ProofConfig(issuerDid = issuerDid, subjectDid = holderDid, proofType = ProofType.LD_PROOF)
)
val vcJwt = Signatory.getService().issue(
templateId = "Europass",
config = ProofConfig(issuerDid = issuerDid, subjectDid = holderDid, proofType = ProofType.JWT)
)
// Present VC in JSON-LD and JWT format (for show-casing both formats)
val vpJson = Custodian.getService().createPresentation(listOf(vcJson), holderDid)
val vpJwt = Custodian.getService().createPresentation(listOf(vcJwt), holderDid)
// Verify VPs, using Signature, JsonSchema and a custom policy
val resJson = Auditor.getService().verify(vpJson, listOf(SignaturePolicy(), JsonSchemaPolicy()))
val resJwt = Auditor.getService().verify(vpJwt, listOf(SignaturePolicy(), JsonSchemaPolicy()))
println("JSON verification result: ${resJson.policyResults}")
println("JWT verification result: ${resJwt.policyResults}")
}
- Connect and get the latest updates: Discord | Newsletter | YouTube | Twitter
- Get help, request features and report bugs: GitHub Discussions
- EBSI Wallet Conformance
- Verifiable Credentials Data Model 1.0
- Decentralized Identifiers (DIDs) v1.0
- DID Method Rubric
- did:web Decentralized Identifier Method Specification
- The did:key Method v0.7
- Self-Issued OpenID Provider v2
- OpenID Connect for Verifiable Presentations
- OpenID Connect for Verifiable Credential Issuance
Licensed under the Apache License, Version 2.0.