Skip to content

Commit

Permalink
chore: jsonld document loader service
Browse files Browse the repository at this point in the history
  • Loading branch information
mikeplotean committed Nov 10, 2023
1 parent ec17cba commit 0cb44c1
Show file tree
Hide file tree
Showing 6 changed files with 46 additions and 10 deletions.
1 change: 1 addition & 0 deletions service-matrix.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
id.walt.services.ecosystems.essif.didebsi.DidEbsiService=id.walt.services.ecosystems.essif.didebsi.WaltIdDidEbsiService
id.walt.services.ecosystems.essif.jsonrpc.JsonRpcService=id.walt.services.ecosystems.essif.jsonrpc.WaltIdJsonRpcService
id.walt.services.vc.JsonLdCredentialService=id.walt.services.vc.WaltIdJsonLdCredentialService
id.walt.credentials.jsonld.JsonLdDocumentLoaderService=id.walt.credentials.jsonld.LocalJsonLdDocumentLoaderService
id.walt.services.vc.JwtCredentialService=id.walt.services.vc.WaltIdJwtCredentialService
id.walt.services.crypto.CryptoService=id.walt.services.crypto.SunCryptoService
id.walt.services.keystore.KeyStoreService=id.walt.services.keystore.SqlKeyStoreService
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package id.walt.credentials.jsonld

import com.apicatalog.jsonld.loader.DocumentLoader
import id.walt.servicematrix.ServiceProvider
import id.walt.servicematrix.ServiceRegistry
import id.walt.services.WaltIdService

abstract class JsonLdDocumentLoaderService: WaltIdService() {

override val implementation: JsonLdDocumentLoaderService get() = serviceImplementation()

abstract val documentLoader: DocumentLoader

companion object : ServiceProvider {
override fun getService() = ServiceRegistry.getService(JsonLdDocumentLoaderService::class)
override fun defaultImplementation() = LocalJsonLdDocumentLoaderService()

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package id.walt.credentials.jsonld

import com.apicatalog.jsonld.loader.DocumentLoader

class LocalJsonLdDocumentLoaderService : JsonLdDocumentLoaderService() {
override val documentLoader: DocumentLoader
get() = VerifiableCredentialContexts.DOCUMENT_LOADER
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package id.walt.credentials.jsonld

import com.apicatalog.jsonld.loader.DocumentLoader
import info.weboftrust.ldsignatures.jsonld.LDSecurityContexts

class RemoteJsonLdDocumentLoaderService : JsonLdDocumentLoaderService() {
override val documentLoader: DocumentLoader
get() = LDSecurityContexts.DOCUMENT_LOADER
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ enum class VerificationType {
@Serializable
data class VerificationResult(val verified: Boolean, val verificationType: VerificationType)

abstract class JsonLdCredentialService : WaltIdService() {
abstract class JsonLdCredentialService() : WaltIdService() {
override val implementation get() = serviceImplementation<JsonLdCredentialService>()

open fun sign(jsonCred: String, config: ProofConfig): String = implementation.sign(jsonCred, config)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import foundation.identity.jsonld.ConfigurableDocumentLoader
import foundation.identity.jsonld.JsonLDException
import foundation.identity.jsonld.JsonLDObject
import id.walt.auditor.VerificationPolicyResult
import id.walt.credentials.jsonld.VerifiableCredentialContexts
import id.walt.credentials.jsonld.JsonLdDocumentLoaderService
import id.walt.credentials.w3c.*
import id.walt.credentials.w3c.schema.SchemaValidatorFactory
import id.walt.crypto.Key
Expand All @@ -20,7 +20,6 @@ import id.walt.services.keystore.KeyStoreService
import id.walt.signatory.ProofConfig
import id.walt.signatory.ProofType
import info.weboftrust.ldsignatures.LdProof
import info.weboftrust.ldsignatures.jsonld.LDSecurityContexts
import info.weboftrust.ldsignatures.verifier.LdVerifier
import mu.KotlinLogging
import org.json.JSONObject
Expand All @@ -32,10 +31,10 @@ import java.util.*

private val log = KotlinLogging.logger {}

open class WaltIdJsonLdCredentialService : JsonLdCredentialService() {
open class WaltIdJsonLdCredentialService() : JsonLdCredentialService() {

private val keyStore: KeyStoreService
get() = ContextManager.keyStore
private val keyStore: KeyStoreService get() = ContextManager.keyStore
private val documentLoaderService: JsonLdDocumentLoaderService get() = JsonLdDocumentLoaderService.getService()

init {
Ed25519Provider.set(TinkEd25519Provider())
Expand Down Expand Up @@ -110,13 +109,13 @@ open class WaltIdJsonLdCredentialService : JsonLdCredentialService() {
log.debug { "Signing jsonLd object with: issuerDid (${config.issuerDid}), domain (${config.domain}), nonce (${config.nonce}" }

val jsonLdObject: JsonLDObject = JsonLDObject.fromJson(jsonCred)
val confLoader = VerifiableCredentialContexts.DOCUMENT_LOADER as ConfigurableDocumentLoader
val confLoader = documentLoaderService.documentLoader as ConfigurableDocumentLoader

confLoader.isEnableHttp = true
confLoader.isEnableHttps = true
confLoader.isEnableFile = true
confLoader.isEnableLocalCache = true
jsonLdObject.documentLoader = VerifiableCredentialContexts.DOCUMENT_LOADER as ConfigurableDocumentLoader
jsonLdObject.documentLoader = documentLoaderService.documentLoader

val vm = config.issuerVerificationMethod ?: config.issuerDid
val key = keyStore.load(vm)
Expand Down Expand Up @@ -183,7 +182,7 @@ open class WaltIdJsonLdCredentialService : JsonLdCredentialService() {

log.debug { "Verification key for: $vm is: $publicKey" }

val confLoader = LDSecurityContexts.DOCUMENT_LOADER as ConfigurableDocumentLoader
val confLoader = documentLoaderService.documentLoader as ConfigurableDocumentLoader

confLoader.isEnableHttp = true
confLoader.isEnableHttps = true
Expand All @@ -193,7 +192,7 @@ open class WaltIdJsonLdCredentialService : JsonLdCredentialService() {
log.debug { "Document loader config: isEnableHttp (${confLoader.isEnableHttp}), isEnableHttps (${confLoader.isEnableHttps}), isEnableFile (${confLoader.isEnableFile}), isEnableLocalCache (${confLoader.isEnableLocalCache})" }

val jsonLdObject = JsonLDObject.fromJson(vcOrVp)
jsonLdObject.documentLoader = LDSecurityContexts.DOCUMENT_LOADER
jsonLdObject.documentLoader = documentLoaderService.documentLoader
log.debug { "Decoded Json LD object: $jsonLdObject" }

val ldProof = LdProof.getFromJsonLDObject(jsonLdObject)
Expand Down

0 comments on commit 0cb44c1

Please sign in to comment.