Giter Club home page Giter Club logo

waltid-ssikit's Introduction

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 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}")
}

Join the community

Standards & Specifications

License

Licensed under the Apache License, Version 2.0.

Funded & supported by

waltid-ssikit's People

Contributors

waltkb avatar philpotisk avatar severinstampler avatar atuffreau-bcd avatar mikeplotean avatar github-actions[bot] avatar xmartinez15 avatar taminobaumann avatar kburgmann avatar ermolaev1337 avatar matofeder avatar victorholo avatar vid201 avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.