diff --git a/web-eid-lib/src/androidTest/kotlin/ee/ria/DigiDoc/webEid/WebEidAuthServiceTest.kt b/web-eid-lib/src/androidTest/kotlin/ee/ria/DigiDoc/webEid/WebEidAuthServiceTest.kt index 3c37e0485..265dc125c 100644 --- a/web-eid-lib/src/androidTest/kotlin/ee/ria/DigiDoc/webEid/WebEidAuthServiceTest.kt +++ b/web-eid-lib/src/androidTest/kotlin/ee/ria/DigiDoc/webEid/WebEidAuthServiceTest.kt @@ -5,8 +5,10 @@ package ee.ria.DigiDoc.webEid +import android.content.pm.PackageManager import androidx.arch.core.executor.testing.InstantTaskExecutorRule import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.platform.app.InstrumentationRegistry import org.junit.Assert.assertEquals import org.junit.Assert.assertFalse import org.junit.Assert.assertNotEquals @@ -22,6 +24,7 @@ class WebEidAuthServiceTest { val instantExecutorRule = InstantTaskExecutorRule() private lateinit var service: WebEidAuthService + private lateinit var expectedAppVersion: String private val authCertBase64 = """ MIIECTCCA4+gAwIBAgIUN2tgxiz6MdXE3QfegLIoan8ZNW0wCgYIKoZIzj0EAwMwXDEYMBYGA1UEAwwPVGVzdCBFU1RFSUQyMDI1MRcwFQYDVQRh @@ -58,7 +61,13 @@ class WebEidAuthServiceTest { @Before fun setup() { - service = WebEidAuthServiceImpl() + val context = InstrumentationRegistry.getInstrumentation().targetContext + service = WebEidAuthServiceImpl(context) + val versionName = + context.packageManager + .getPackageInfo(context.packageName, PackageManager.PackageInfoFlags.of(0)) + .versionName + expectedAppVersion = "https://id.eesti.ee/releases/v$versionName" } @Test @@ -106,4 +115,15 @@ class WebEidAuthServiceTest { assertFalse(token.has("unverifiedSigningCertificate")) assertFalse(token.has("supportedSignatureAlgorithms")) } + + @Test + fun buildAuthToken_withValidInputs_returnsAppVersionAndIssuerApp() { + val authCertBytes = Base64.getMimeDecoder().decode(authCertBase64) + val signature = byteArrayOf(1, 2, 3, 4, 5) + + val token = service.buildAuthToken(authCertBytes, null, signature) + + assertEquals(expectedAppVersion, token.getString("appVersion")) + assertEquals(expectedAppVersion, token.getString("issuerApp")) + } } diff --git a/web-eid-lib/src/androidTest/kotlin/ee/ria/DigiDoc/webEid/di/AppModulesTest.kt b/web-eid-lib/src/androidTest/kotlin/ee/ria/DigiDoc/webEid/di/AppModulesTest.kt index 3731cab62..f328d5176 100644 --- a/web-eid-lib/src/androidTest/kotlin/ee/ria/DigiDoc/webEid/di/AppModulesTest.kt +++ b/web-eid-lib/src/androidTest/kotlin/ee/ria/DigiDoc/webEid/di/AppModulesTest.kt @@ -6,6 +6,7 @@ package ee.ria.DigiDoc.webEid.di import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.platform.app.InstrumentationRegistry import ee.ria.DigiDoc.webEid.WebEidAuthServiceImpl import ee.ria.DigiDoc.webEid.WebEidSignServiceImpl import org.junit.Assert.assertNotNull @@ -25,7 +26,7 @@ class AppModulesTest { @Test fun provideWebEidAuthService_returnsCorrectImpl() { - val service = modules.provideWebEidAuthService() + val service = modules.provideWebEidAuthService(InstrumentationRegistry.getInstrumentation().targetContext) assertNotNull(service) assertTrue(service is WebEidAuthServiceImpl) } diff --git a/web-eid-lib/src/main/kotlin/ee/ria/DigiDoc/webEid/WebEidAuthServiceImpl.kt b/web-eid-lib/src/main/kotlin/ee/ria/DigiDoc/webEid/WebEidAuthServiceImpl.kt index f4e266d5e..70e19caa1 100644 --- a/web-eid-lib/src/main/kotlin/ee/ria/DigiDoc/webEid/WebEidAuthServiceImpl.kt +++ b/web-eid-lib/src/main/kotlin/ee/ria/DigiDoc/webEid/WebEidAuthServiceImpl.kt @@ -5,6 +5,9 @@ package ee.ria.DigiDoc.webEid +import android.content.Context +import android.content.pm.PackageManager +import dagger.hilt.android.qualifiers.ApplicationContext import ee.ria.DigiDoc.webEid.utils.WebEidAlgorithmUtil.buildSupportedSignatureAlgorithms import ee.ria.DigiDoc.webEid.utils.WebEidAlgorithmUtil.getAlgorithm import org.json.JSONArray @@ -18,7 +21,9 @@ import javax.inject.Singleton @Singleton class WebEidAuthServiceImpl @Inject - constructor() : WebEidAuthService { + constructor( + @param:ApplicationContext private val context: Context, + ) : WebEidAuthService { override fun buildAuthToken( authCert: ByteArray, signingCert: ByteArray?, @@ -31,11 +36,17 @@ class WebEidAuthServiceImpl val publicKey = cert.publicKey val algorithm = getAlgorithm(publicKey) + val versionName = + context.packageManager + .getPackageInfo(context.packageName, PackageManager.PackageInfoFlags.of(0)) + .versionName + val appVersion = "https://id.eesti.ee/releases/v$versionName" return JSONObject().apply { put("algorithm", algorithm) put("unverifiedCertificate", Base64.getEncoder().encodeToString(authCert)) - put("issuerApp", "https://web-eid.eu/web-eid-mobile-app/releases/v1.0.0") + put("issuerApp", appVersion) + put("appVersion", appVersion) put("signature", Base64.getEncoder().encodeToString(signature)) if (signingCert != null) { diff --git a/web-eid-lib/src/main/kotlin/ee/ria/DigiDoc/webEid/di/AppModules.kt b/web-eid-lib/src/main/kotlin/ee/ria/DigiDoc/webEid/di/AppModules.kt index 1eb756d88..1521da038 100644 --- a/web-eid-lib/src/main/kotlin/ee/ria/DigiDoc/webEid/di/AppModules.kt +++ b/web-eid-lib/src/main/kotlin/ee/ria/DigiDoc/webEid/di/AppModules.kt @@ -5,9 +5,11 @@ package ee.ria.DigiDoc.webEid.di +import android.content.Context import dagger.Module import dagger.Provides import dagger.hilt.InstallIn +import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.components.SingletonComponent import ee.ria.DigiDoc.webEid.WebEidAuthService import ee.ria.DigiDoc.webEid.WebEidAuthServiceImpl @@ -20,7 +22,9 @@ import javax.inject.Singleton class AppModules { @Provides @Singleton - fun provideWebEidAuthService(): WebEidAuthService = WebEidAuthServiceImpl() + fun provideWebEidAuthService( + @ApplicationContext context: Context, + ): WebEidAuthService = WebEidAuthServiceImpl(context) @Provides @Singleton