Skip to content

Latest commit

 

History

History
121 lines (82 loc) · 6.4 KB

README.md

File metadata and controls

121 lines (82 loc) · 6.4 KB

SSI Kit

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

CI/CD Workflow for walt.id SSI Kit

The SSI Kit by walt.id is a holistic Self-Sovereign-Identity solution, with primarily focus on the European EBSI/ESSIF ecosystem.

The core services are in the scope of:

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

The EBSI/ESSIF functions are in the scope of:

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

The library is written in Kotlin/Java and can be directly integrated as Maven/Gradle dependency. Alternatively the library or the additional Docker container can be run as RESTful webservice.

Getting Started

Via Docker

The easiest way to getting your hands dirty and to "play" with the functions the SSI Kit provides is by running the CLI tool with Docker.

docker run -itv $(pwd)/data:/app/data waltid/ssikit -h

As dependency

Gradle

    implementation("id.walt:waltid-ssi-kit:1.11.0")

Maven

    <dependency>
        <groupId>id.walt</groupId>
        <artifactId>waltid-ssi-kit</artifactId>
        <version>1.11.0</version>
    </dependency>

Please go ahead and find further CLI commands and well as other ways how to use the SSI Kit in the documentation section below.

Documentation

The documentation is hosted at: https://docs.walt.id/ssikit/

Direct links for using the SSI Kit are:

Examples

This project demonstrates how to integrate & use the SSI Kit in any Kotlin/Java app: https://github.com/walt-id/waltid-ssikit-examples. Also the Gradle and Maven build instructions are provided there.

Following code snipped gives a first impression how to use the SSI Kit for creating W3C Decentralized Identifiers and for issuing/verifying W3C Verifiable Credentials in JSON_LD as well as JWT format.

fun main() {

    ServiceMatrix("service-matrix.properties")

    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("VerifiableId", ProofConfig(issuerDid = issuerDid, subjectDid = holderDid, proofType = ProofType.LD_PROOF))
    val vcJwt = Signatory.getService().issue("VerifiableId", 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.overallStatus}")
    println("JWT verification result: ${resJwt.overallStatus}")
}

Relevant Standards

Funded & supported by

License

Copyright ((C)) 2022 walt.id GmbH

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.