Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -22,6 +24,7 @@ class WebEidAuthServiceTest {
val instantExecutorRule = InstantTaskExecutorRule()

private lateinit var service: WebEidAuthService
private lateinit var expectedAppVersion: String
private val authCertBase64 =
"""
MIIECTCCA4+gAwIBAgIUN2tgxiz6MdXE3QfegLIoan8ZNW0wCgYIKoZIzj0EAwMwXDEYMBYGA1UEAwwPVGVzdCBFU1RFSUQyMDI1MRcwFQYDVQRh
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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"))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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?,
Expand All @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down
Loading