Skip to content
This repository has been archived by the owner on Nov 20, 2023. It is now read-only.

Commit

Permalink
chore: ebsi-ct did update, sdjwt, ktor version updates
Browse files Browse the repository at this point in the history
  • Loading branch information
mikeplotean committed Nov 9, 2023
1 parent fcbdd91 commit e8a94ca
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 42 deletions.
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ kotlin {
isMingwX64 -> mingwX64("native")
else -> throw GradleException("Host OS is not supported in Kotlin/Native.")
}
val ktor_version = "2.3.4"
val ktor_version = "2.3.5"


sourceSets {
Expand Down
2 changes: 1 addition & 1 deletion src/jvmTest/kotlin/id/walt/oid4vc/EBSITestWallet.kt
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ import java.util.*
const val EBSI_WALLET_PORT = 8011
const val EBSI_WALLET_BASE_URL = "http://localhost:${EBSI_WALLET_PORT}"
const val EBSI_WALLET_TEST_KEY = "{\"kty\":\"EC\",\"d\":\"AENUGJiPF4zRlF1uXV1NTWE5zcQPz-8Ie8SGLdQugec\",\"use\":\"sig\",\"crv\":\"P-256\",\"kid\":\"de8aca52c110485a87fa6fda8d1f2f4e\",\"x\":\"hJ0hFBtp72j1V2xugQI51ernWY_vPXzXjnEg7A709Fc\",\"y\":\"-Mm1j5Zz1mWJU7Nqylk0_6qKjZ5fn6ddzziEFscQPhQ\",\"alg\":\"ES256\"}"
const val EBSI_WALLET_TEST_DID = "did:key:z2dmzD81cgPx8Vki7JbuuMmFYrWPgYoytykUZ3eyqht1j9KbrksdXfcbvmhgF2h7YfpxWuywkXxDZ7ohTPNPTQpD39Rm9WiBWuEpvvgtfuPHtHi2wTEkZ95KC2ijUMUowyKMueaMhtA5bLYkt9k8Y8Gq4sm6PyTCHTxuyedMMrBKdRXNZS"
const val EBSI_WALLET_TEST_DID = "did:key:z2dmzD81cgPx8Vki7JbuuMmFYrWPgYoytykUZ3eyqht1j9KbrvNZGYo92og84YugxANd6yfYsq43i85BTx7KDWzNwVVrNiuNmgSSrC11kbg9qg1sm6TJh7soF5vDAgGRBF3wScih9gUCcH7H8Nxd9GAG8hN4AmJnoEtkeUrFU18eb6wNpc"
class EBSITestWallet(config: CredentialWalletConfig): OpenIDCredentialWallet<SIOPSession>(EBSI_WALLET_BASE_URL, config) {
private val sessionCache = mutableMapOf<String, SIOPSession>()
private val ktorClient = HttpClient(Java) {
Expand Down
72 changes: 32 additions & 40 deletions src/jvmTest/kotlin/id/walt/oid4vc/EBSI_Conformance_Test.kt
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@ import kotlinx.serialization.json.jsonPrimitive

class EBSI_Conformance_Test: StringSpec({

val VcTestsEnabled = true
val VpTestsEnabled = true
val VcTestsEnabled = false
val VpTestsEnabled = false

val credentialOfferUrl = "https://api-conformance.ebsi.eu/conformance/v3/issuer-mock/initiate-credential-offer?credential_type="

lateinit var credentialWallet: EBSITestWallet
lateinit var ebsiClientConfig: OpenIDClientConfig
Expand Down Expand Up @@ -67,18 +69,11 @@ class EBSI_Conformance_Test: StringSpec({
*/
"issue in-time credential".config(enabled = VcTestsEnabled) {
forAll(
row("CTWalletCrossInTime", crossDeviceCredentialOfferRequestCaller),
row("CTWalletSameInTime", sameDeviceCredentialOfferRequestCaller),
) { credentialType, credentialOfferRequestCall ->
val initCredentialOfferUrl =
URLBuilder("https://api-conformance.ebsi.eu/conformance/v3/issuer-mock/initiate-credential-offer?credential_type=$credentialType").run {
parameters.appendAll(StringValues.build {
append("client_id", credentialWallet.TEST_DID)
append("credential_offer_endpoint", "openid-credential-offer://")
})
build()
}
val credentialOfferRequest = credentialOfferRequestCall(initCredentialOfferUrl)
// row("https://api-conformance.ebsi.eu/conformance/v3/issuer-mock/offers/bd98c0df-8cd5-4318-8ca1-cf065b2d5723", null, null),
row("${credentialOfferUrl}CTWalletSameInTime", credentialWallet.TEST_DID, sameDeviceCredentialOfferRequestCaller),
row("${credentialOfferUrl}CTWalletCrossInTime", credentialWallet.TEST_DID, crossDeviceCredentialOfferRequestCaller),
) { url, clientId, credentialOfferRequestCall ->
val credentialOfferRequest = getCredentialOfferRequest(url, clientId, credentialOfferRequestCall)
val credentialOffer = credentialWallet.resolveCredentialOffer(credentialOfferRequest)
val credentialResponses =
credentialWallet.executeFullAuthIssuance(credentialOffer, credentialWallet.TEST_DID, ebsiClientConfig)
Expand All @@ -94,18 +89,10 @@ class EBSI_Conformance_Test: StringSpec({
*/
"issue deferred credential".config(enabled = VcTestsEnabled) {
forAll(
row("CTWalletCrossDeferred", crossDeviceCredentialOfferRequestCaller),
row("CTWalletSameDeferred", sameDeviceCredentialOfferRequestCaller),
) { credentialType, credentialOfferRequestCall ->
val initCredentialOfferUrl =
URLBuilder("https://api-conformance.ebsi.eu/conformance/v3/issuer-mock/initiate-credential-offer?credential_type=$credentialType").run {
parameters.appendAll(StringValues.build {
append("client_id", credentialWallet.TEST_DID)
append("credential_offer_endpoint", "openid-credential-offer://")
})
build()
}
val deferredCredentialOfferRequest = credentialOfferRequestCall(initCredentialOfferUrl)
row("${credentialOfferUrl}CTWalletSameDeferred", credentialWallet.TEST_DID, sameDeviceCredentialOfferRequestCaller),
row("${credentialOfferUrl}CTWalletCrossDeferred", credentialWallet.TEST_DID, crossDeviceCredentialOfferRequestCaller),
) { url, clientId, credentialOfferRequestCall ->
val deferredCredentialOfferRequest = getCredentialOfferRequest(url, clientId, credentialOfferRequestCall)
val deferredCredentialOffer = credentialWallet.resolveCredentialOffer(deferredCredentialOfferRequest)
val deferredCredentialResponses =
credentialWallet.executeFullAuthIssuance(deferredCredentialOffer, credentialWallet.TEST_DID, ebsiClientConfig)
Expand All @@ -128,21 +115,13 @@ class EBSI_Conformance_Test: StringSpec({
*/
"issue pre-authorized code credential".config(enabled = VcTestsEnabled) {
forAll(
row("CTWalletCrossPreAuthorised", crossDeviceCredentialOfferRequestCaller),
row("CTWalletSamePreAuthorised", sameDeviceCredentialOfferRequestCaller),
) { credentialType, credentialOfferRequestCall ->
val initCredentialOfferUrl =
URLBuilder("https://api-conformance.ebsi.eu/conformance/v3/issuer-mock/initiate-credential-offer?credential_type=$credentialType").run {
parameters.appendAll(StringValues.build {
append("client_id", credentialWallet.TEST_DID)
append("credential_offer_endpoint", "openid-credential-offer://")
})
build()
}
val preAuthCredentialOfferRequest = credentialOfferRequestCall(initCredentialOfferUrl)
row("${credentialOfferUrl}CTWalletSamePreAuthorised", credentialWallet.TEST_DID, sameDeviceCredentialOfferRequestCaller),
row("${credentialOfferUrl}CTWalletCrossPreAuthorised", credentialWallet.TEST_DID, crossDeviceCredentialOfferRequestCaller),
) { url, clientId, credentialOfferRequestCall ->
val preAuthCredentialOfferRequest = getCredentialOfferRequest(url, clientId, credentialOfferRequestCall)
val preAuthCredentialOffer = credentialWallet.resolveCredentialOffer(preAuthCredentialOfferRequest)
val preAuthCredentialResponses = credentialWallet.executePreAuthorizedCodeFlow(
preAuthCredentialOffer, credentialWallet.TEST_DID, ebsiClientConfig, "3818"
preAuthCredentialOffer, credentialWallet.TEST_DID, ebsiClientConfig, "9511"
)
preAuthCredentialResponses.size shouldBe 1
preAuthCredentialResponses[0].isSuccess shouldBe true
Expand Down Expand Up @@ -179,4 +158,17 @@ internal typealias credentialOfferRequestCaller = (initCredentialOfferUrl: Url)
internal fun storeCredentials(vararg credentialResponses: CredentialResponse) = credentialResponses.forEach {
val cred = VerifiableCredential.fromString(it.credential!!.jsonPrimitive.content)
Custodian.getService().storeCredential(cred.id ?: randomUUID(), cred)
}
}

internal fun getCredentialOfferRequest(
url: String, clientId: String? = null, credentialOfferRequestCall: credentialOfferRequestCaller? = null
) = clientId?.let {
val initCredentialOfferUrl = URLBuilder(url).run {
parameters.appendAll(StringValues.build {
append("client_id", clientId)
append("credential_offer_endpoint", "openid-credential-offer://")
})
build()
}
credentialOfferRequestCall!!(initCredentialOfferUrl)
} ?: CredentialOfferRequest(credentialOfferUri = url)

0 comments on commit e8a94ca

Please sign in to comment.