diff --git a/VCL/build.gradle b/VCL/build.gradle index 17d163e7..62c584aa 100644 --- a/VCL/build.gradle +++ b/VCL/build.gradle @@ -13,8 +13,8 @@ android { defaultConfig { minSdk 24 targetSdk 33 - versionName "1.23.0" - versionCode 119 + versionName "1.23.1" + versionCode 120 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles "consumer-rules.pro" } @@ -217,9 +217,9 @@ repositories { dependencies { implementation 'androidx.core:core-ktx:1.9.0' - implementation "com.nimbusds:nimbus-jose-jwt:9.35" + implementation "com.nimbusds:nimbus-jose-jwt:9.37" //noinspection GradleDependency - implementation "androidx.security:security-crypto:1.0.0-rc03" + implementation "androidx.security:security-crypto:1.0.0" // Reflection // implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" diff --git a/VCL/src/main/java/io/velocitycareerlabs/api/entities/VCLCredentialManifestDescriptor.kt b/VCL/src/main/java/io/velocitycareerlabs/api/entities/VCLCredentialManifestDescriptor.kt index b2fd6715..beda2984 100644 --- a/VCL/src/main/java/io/velocitycareerlabs/api/entities/VCLCredentialManifestDescriptor.kt +++ b/VCL/src/main/java/io/velocitycareerlabs/api/entities/VCLCredentialManifestDescriptor.kt @@ -7,9 +7,11 @@ package io.velocitycareerlabs.api.entities +import io.velocitycareerlabs.impl.extensions.appendQueryParams +import io.velocitycareerlabs.impl.extensions.encode import io.velocitycareerlabs.impl.extensions.getUrlSubPath -open class VCLCredentialManifestDescriptor( +abstract class VCLCredentialManifestDescriptor( val uri: String? = null, val issuingType: VCLIssuingType = VCLIssuingType.Career, val credentialTypes: List? = null, @@ -17,8 +19,22 @@ open class VCLCredentialManifestDescriptor( val vendorOriginContext: String? = null, val deepLink: VCLDeepLink? = null ) { + open val endpoint = generateQueryParams()?.let { queryParams -> + uri?.appendQueryParams(queryParams) + } ?: uri + val did = uri?.getUrlSubPath(KeyDidPrefix) + private fun generateQueryParams(): String? { + val pCredentialTypes = credentialTypes?.let { credTypes -> + credTypes.map { it.encode() }.joinToString(separator = "&") { "$KeyCredentialTypes=$it" } } + val pPushDelegate = pushDelegate?.let { + "$KeyPushDelegatePushUrl=${it.pushUrl.encode()}&" + "$KeyPushDelegatePushToken=${it.pushToken}" + } + val qParams = listOfNotNull(pCredentialTypes, pPushDelegate).filter { it.isNotBlank() } + return if(qParams.isNotEmpty()) qParams.joinToString("&") else null + } + open fun toPropsString() = StringBuilder() .append("\nuri: , $uri") @@ -29,8 +45,6 @@ open class VCLCredentialManifestDescriptor( .append("\nvendorOriginContext: , $vendorOriginContext") .toString() - open val endpoint: String? get() = uri - companion object CodingKeys { const val KeyId = "id" const val KeyDidPrefix = "did:" diff --git a/VCL/src/main/java/io/velocitycareerlabs/api/entities/VCLCredentialManifestDescriptorByService.kt b/VCL/src/main/java/io/velocitycareerlabs/api/entities/VCLCredentialManifestDescriptorByService.kt index 56a5613f..1623d688 100644 --- a/VCL/src/main/java/io/velocitycareerlabs/api/entities/VCLCredentialManifestDescriptorByService.kt +++ b/VCL/src/main/java/io/velocitycareerlabs/api/entities/VCLCredentialManifestDescriptorByService.kt @@ -26,18 +26,4 @@ class VCLCredentialManifestDescriptorByService( StringBuilder(super.toPropsString()) .append("\nservice: ${service.toPropsString()}") .toString() - - override val endpoint = generateQueryParams()?.let { queryParams -> - uri?.appendQueryParams(queryParams) - } ?: uri - - private fun generateQueryParams(): String? { - val pCredentialTypes = credentialTypes?.let { credTypes -> - credTypes.map { it.encode() }.joinToString(separator = "&") { "$KeyCredentialTypes=$it" } } - val pPushDelegate = pushDelegate?.let { - "$KeyPushDelegatePushUrl=${it.pushUrl.encode()}&" + "$KeyPushDelegatePushToken=${it.pushToken}" - } - val qParams = listOfNotNull(pCredentialTypes, pPushDelegate).filter { it.isNotBlank() } - return if(qParams.isNotEmpty()) qParams.joinToString("&") else null - } } \ No newline at end of file diff --git a/VCL/src/test/java/io/velocitycareerlabs/entities/VCLCredentialManifestDescriptorByDeepLinkTest.kt b/VCL/src/test/java/io/velocitycareerlabs/entities/VCLCredentialManifestDescriptorByDeepLinkTest.kt index 2253a2c4..45aea6c3 100644 --- a/VCL/src/test/java/io/velocitycareerlabs/entities/VCLCredentialManifestDescriptorByDeepLinkTest.kt +++ b/VCL/src/test/java/io/velocitycareerlabs/entities/VCLCredentialManifestDescriptorByDeepLinkTest.kt @@ -31,16 +31,17 @@ internal class VCLCredentialManifestDescriptorByDeepLinkTest { subject = VCLCredentialManifestDescriptorByDeepLink( deepLink = CredentialManifestDescriptorMocks.DeepLink, issuingType = VCLIssuingType.Career, - pushDelegate = VCLPushDelegate(pushUrl = "some url", pushToken = "some token") + pushDelegate = VCLPushDelegate(pushUrl = "some_url", pushToken = "some_token") ) assert( - subject.endpoint?.decode() - ?.isUrlEquivalentTo(CredentialManifestDescriptorMocks.DeepLinkRequestUri.decode()) == true + subject.endpoint?.decode()?.isUrlEquivalentTo( + CredentialManifestDescriptorMocks.DeepLinkRequestUri.decode() + "&push_delegate.push_url=some_url&push_delegate.push_token=some_token" + ) == true ) assert(subject.did == CredentialManifestDescriptorMocks.IssuerDid) - assert(subject.pushDelegate?.pushUrl == "some url") - assert(subject.pushDelegate?.pushToken == "some token") + assert(subject.pushDelegate?.pushUrl == "some_url") + assert(subject.pushDelegate?.pushToken == "some_token") } @After diff --git a/app/build.gradle b/app/build.gradle index 9d3499e7..4a62cb5b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -51,7 +51,7 @@ dependencies { androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' // Must: be added: - implementation "com.nimbusds:nimbus-jose-jwt:9.35" + implementation "com.nimbusds:nimbus-jose-jwt:9.37" implementation project(':VCL') // implementation "io.velocitycareerlabs:vcl:x.y.z"