Waltid Ssikit Save

All-In-One SSI infrastructure toolkit

Project README

SSI Kit

by walt.id

Use digital identity

Security Rating Vulnerabilities Reliability Rating Maintainability Rating Lines of Code Quality Gate Status

CI/CD Workflow for walt.id SSI Kit Join community! Follow @walt_id

Discontinuation Notice

Important: Please be informed that, beginning from December 2023, the SSI Kit will no longer receive new features. Furthermore, the SSI Kit is planned for discontinuation by the end of Q3 2024.

However, all functionalities offered by the SSI Kit will be integrated into our new libraries, APIs, and apps in the walt.id identity repo. Giving you more modularity, flexibility and ease-of-use to build end-to-end digital identity and wallet solutions.

For any clarification or queries, feel free to contact us as we aim to make this transition as smooth as possible.


Getting Started

Check out the Official Documentation, to dive deeper into the architecture and configuration options available.

What is the SSI Kit?

A library written in Kotlin/Java to manage Keys, DIDs and VCs. Functions can be used via Maven/Gradle or a REST api.

Features

  • 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.)

For EBSI

  • 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.

Example

  • 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 with LD_PROOF and JWT format (for show-casing both formats)
    val vcJson = Signatory.getService().issue(
        templateIdOrFilename = "VerifiableId",
        config = ProofConfig(issuerDid = issuerDid, subjectDid = holderDid, proofType = ProofType.LD_PROOF)
    )
    val vcJwt = Signatory.getService().issue(
        templateIdOrFilename = "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}")
}

Join the community

Standards & Specifications

License

Licensed under the Apache License, Version 2.0.

Funded & supported by

Open Source Agenda is not affiliated with "Waltid Ssikit" Project. README Source: walt-id/waltid-ssikit

Open Source Agenda Badge

Open Source Agenda Rating