Skip to content

Gradiant/grad-ssikit-vclib-android

Repository files navigation

Android SSI Kit VCLib

This is the Android Ported Version of the Walt.ID SSI Kit VCLib, developed by Gradiant.

Changelog

  1. build.gradle.kts -> JvmTarget for kotlin must be "11".

  2. build.gradle.kts -> commented logging library "org.lighthousegames:logging-jvm:1.0.0" since it uses a java library not presented in java 11. This leads to comment all appearances of this library in the code:

  • src/main/kotlin/id/walt/vclib/Defaults.kt
  • src/main/kotlin/id/walt/vclib/registry/VcTypeRegistry.kt

waltid-ssikit-vclib

Typesafe implementation of W3C Verifiable Credentials in order to facilitate interoperability among various applications.

Setup

Add the dependency using Gradle:

implementation("id.walt:waltid-ssikit-vclib:1.22.0")

or Maven:

<dependency>
    <groupId>id.walt</groupId>
    <artifactId>waltid-ssikit-vclib</artifactId>
    <version>1.22.0</version>
</dependency>

Create a credential

val verifiableAuthorization: VerifiableCredential = VerifiableAuthorization(
    id = "did:ebsi-eth:00000001/credentials/1872",
    issuer = "did:ebsi:000001234",
    issuanceDate = "2020-08-24T14:13:44Z",
    credentialSubject = VerifiableAuthorization.CredentialSubject1(
        "did:ebsi:00000004321",
        VerifiableAuthorization.CredentialSubject1.NaturalPerson("did:example:00001111")
    ),
    proof = Proof(
        "EcdsaSecp256k1Signature2019",
        "2020-08-24T14:13:44Z",
        "assertionMethod",
        "did:ebsi-eth:000001234#key-1",
        "eyJhbGciOiJSUzI1NiIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19."
    )
)

Encode a credential to JSON

val json: String = verifiableAuthorization.encode()
// {"@context" : ["https://www.w3.org/2018/credentials/v1", "https://ess ...

Decode a JSON credential

val unknownJson: String = fromInput()

val credential: VerifiableCredential = unknownJson.toCredential()

val issuer = when (credential) {
    is PermanentResidentCard -> credential.issuer
    is VerifiablePresentation -> {
        val vcsInVP = credential.verifiableCredential
        val permanentResidentCardInVP = vcsInVP.any { it is PermanentResidentCard }

        if (permanentResidentCardInVP) {
            (vcsInVP.first { it is PermanentResidentCard } as PermanentResidentCard).issuer
        } else throw IllegalArgumentException("This VP does not contain a PermanentResidentCard")
    }
    else -> throw IllegalArgumentException("No vc of type PermanentResidentCard was found!")
}

// extendable to e.g. take the users address from the PermanentResidentCard, or an Europass (if supplied), or a VerifiableUtilityBill etc...

Adding VC Templates

  1. Visit https://vc-creator.walt.id to generate a VC template.
  2. Add it to package: id.walt.vclib.credentials.
  3. Add the new class to id.walt.vclib.registry.VcTypeRegistry.
  4. Run all test-cases, which will generate the JsonSchema and the serialized version of the credential template.
  5. Open a Pull-Request on GitHub

License

The VcLib by walt.id is Open Source software released under the Apache 2.0 license.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages