Skip to content

walt-id/waltid-ssikit

main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
November 8, 2022 12:53
dev
January 23, 2022 02:01
March 14, 2023 12:16
February 27, 2023 14:00
February 28, 2022 21:49
November 8, 2022 12:47
August 5, 2021 16:00
December 11, 2021 03:43
August 5, 2021 16:00
February 25, 2023 13:02

SSI Kit

by walt.id

Use web3 identity / self-sovereign identity (SSI)

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

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