diff --git a/src/main/kotlin/com/vauthenticator/server/keys/KeyConfig.kt b/src/main/kotlin/com/vauthenticator/server/keys/KeyConfig.kt index 530154c9..78155565 100644 --- a/src/main/kotlin/com/vauthenticator/server/keys/KeyConfig.kt +++ b/src/main/kotlin/com/vauthenticator/server/keys/KeyConfig.kt @@ -4,7 +4,7 @@ import com.vauthenticator.server.keys.adapter.dynamo.DynamoDbKeyStorage import com.vauthenticator.server.keys.adapter.jdbc.JdbcKeyStorage import com.vauthenticator.server.keys.adapter.kms.KmsKeyDecrypter import com.vauthenticator.server.keys.adapter.kms.KmsKeyGenerator -import com.vauthenticator.server.keys.adapter.local.* +import com.vauthenticator.server.keys.adapter.java.* import com.vauthenticator.server.keys.domain.* import org.springframework.beans.factory.annotation.Value import org.springframework.context.annotation.Bean @@ -25,12 +25,12 @@ class KeyConfig { @Profile("!kms") @Bean("keyGenerator") - fun bouncyCastleKeyGenerator( + fun JavaSecurityKeyGenerator( kmsClient: KmsClient, - storage: BouncyCastleKeyGeneratorMasterKeyStorage - ): KeyGenerator = BouncyCastleKeyGenerator( + storage: KeyGeneratorMasterKeyStorage + ): KeyGenerator = JavaSecurityKeyGenerator( KeyCryptographicOperations( - BouncyCastleKeyGeneratorMasterKeyRepository(storage) + KeyGeneratorMasterKeyRepository(storage) ) ) @@ -40,13 +40,13 @@ class KeyConfig { @Profile("!kms") @Bean("keyDecrypter") - fun bouncyCastleKeyDecrypter( + fun JavaSecurityKeyDecrypter( @Value("\${key.master-key}") maserKid: String, - storage: BouncyCastleKeyGeneratorMasterKeyStorage - ): KeyDecrypter = BouncyCastleKeyDecrypter( + storage: KeyGeneratorMasterKeyStorage + ): KeyDecrypter = JavaSecurityKeyDecrypter( maserKid, KeyCryptographicOperations( - BouncyCastleKeyGeneratorMasterKeyRepository(storage) + KeyGeneratorMasterKeyRepository(storage) ) ) diff --git a/src/main/kotlin/com/vauthenticator/server/keys/adapter/local/BouncyCastleKeyDecrypter.kt b/src/main/kotlin/com/vauthenticator/server/keys/adapter/java/JavaSecurityKeyDecrypter.kt similarity index 77% rename from src/main/kotlin/com/vauthenticator/server/keys/adapter/local/BouncyCastleKeyDecrypter.kt rename to src/main/kotlin/com/vauthenticator/server/keys/adapter/java/JavaSecurityKeyDecrypter.kt index 536a35dc..a3ed3ccb 100644 --- a/src/main/kotlin/com/vauthenticator/server/keys/adapter/local/BouncyCastleKeyDecrypter.kt +++ b/src/main/kotlin/com/vauthenticator/server/keys/adapter/java/JavaSecurityKeyDecrypter.kt @@ -1,11 +1,10 @@ -package com.vauthenticator.server.keys.adapter.local +package com.vauthenticator.server.keys.adapter.java import com.vauthenticator.server.extentions.encoder import com.vauthenticator.server.keys.domain.KeyDecrypter import com.vauthenticator.server.keys.domain.MasterKid -import org.springframework.beans.factory.annotation.Value -class BouncyCastleKeyDecrypter( +class JavaSecurityKeyDecrypter( private val maserKid: String, private val keyCryptographicOperations: KeyCryptographicOperations ) : KeyDecrypter { diff --git a/src/main/kotlin/com/vauthenticator/server/keys/adapter/local/BouncyCastleKeyGenerator.kt b/src/main/kotlin/com/vauthenticator/server/keys/adapter/java/JavaSecurityKeyGenerator.kt similarity index 91% rename from src/main/kotlin/com/vauthenticator/server/keys/adapter/local/BouncyCastleKeyGenerator.kt rename to src/main/kotlin/com/vauthenticator/server/keys/adapter/java/JavaSecurityKeyGenerator.kt index 60854ae4..746b05a2 100644 --- a/src/main/kotlin/com/vauthenticator/server/keys/adapter/local/BouncyCastleKeyGenerator.kt +++ b/src/main/kotlin/com/vauthenticator/server/keys/adapter/java/JavaSecurityKeyGenerator.kt @@ -1,4 +1,4 @@ -package com.vauthenticator.server.keys.adapter.local +package com.vauthenticator.server.keys.adapter.java import com.vauthenticator.server.keys.domain.DataKey import com.vauthenticator.server.keys.domain.KeyGenerator @@ -6,7 +6,7 @@ import com.vauthenticator.server.keys.domain.MasterKid import java.util.* -class BouncyCastleKeyGenerator( +class JavaSecurityKeyGenerator( private val keyCryptographicOperations: KeyCryptographicOperations ) : KeyGenerator { diff --git a/src/main/kotlin/com/vauthenticator/server/keys/adapter/local/KeyCryptographicOperations.kt b/src/main/kotlin/com/vauthenticator/server/keys/adapter/java/KeyCryptographicOperations.kt similarity index 89% rename from src/main/kotlin/com/vauthenticator/server/keys/adapter/local/KeyCryptographicOperations.kt rename to src/main/kotlin/com/vauthenticator/server/keys/adapter/java/KeyCryptographicOperations.kt index fc8ebff2..9b65acfe 100644 --- a/src/main/kotlin/com/vauthenticator/server/keys/adapter/local/KeyCryptographicOperations.kt +++ b/src/main/kotlin/com/vauthenticator/server/keys/adapter/java/KeyCryptographicOperations.kt @@ -1,4 +1,4 @@ -package com.vauthenticator.server.keys.adapter.local +package com.vauthenticator.server.keys.adapter.java import com.vauthenticator.server.extentions.decoder import com.vauthenticator.server.keys.domain.MasterKid @@ -12,11 +12,11 @@ import javax.crypto.spec.SecretKeySpec class KeyCryptographicOperations( - private val repository: BouncyCastleKeyGeneratorMasterKeyRepository, + private val repository: KeyGeneratorMasterKeyRepository ) { companion object { init { - Security.addProvider(BouncyCastleProvider()); + Security.addProvider(BouncyCastleProvider()) } } diff --git a/src/main/kotlin/com/vauthenticator/server/keys/adapter/local/BouncyCastleKeyGeneratorMasterKeyRepository.kt b/src/main/kotlin/com/vauthenticator/server/keys/adapter/java/KeyGeneratorMasterKeyRepository.kt similarity index 59% rename from src/main/kotlin/com/vauthenticator/server/keys/adapter/local/BouncyCastleKeyGeneratorMasterKeyRepository.kt rename to src/main/kotlin/com/vauthenticator/server/keys/adapter/java/KeyGeneratorMasterKeyRepository.kt index 7ef66262..e5596f15 100644 --- a/src/main/kotlin/com/vauthenticator/server/keys/adapter/local/BouncyCastleKeyGeneratorMasterKeyRepository.kt +++ b/src/main/kotlin/com/vauthenticator/server/keys/adapter/java/KeyGeneratorMasterKeyRepository.kt @@ -1,4 +1,4 @@ -package com.vauthenticator.server.keys.adapter.local +package com.vauthenticator.server.keys.adapter.java import com.vauthenticator.server.keys.domain.MasterKid import org.springframework.boot.context.properties.ConfigurationProperties @@ -7,8 +7,8 @@ import org.springframework.context.annotation.Configuration import org.springframework.context.annotation.Profile -class BouncyCastleKeyGeneratorMasterKeyRepository( - val storage: BouncyCastleKeyGeneratorMasterKeyStorage +class KeyGeneratorMasterKeyRepository( + val storage: KeyGeneratorMasterKeyStorage ) { fun maskerKeyFor(masterKeyId: MasterKid): String { @@ -19,12 +19,12 @@ class BouncyCastleKeyGeneratorMasterKeyRepository( @Profile("!kms") @Configuration(proxyBeanMethods = false) -@EnableConfigurationProperties(BouncyCastleKeyGeneratorMasterKeyStorage::class) -class BouncyCastleKeyGeneratorMasterKeyRepositoryConfig { +@EnableConfigurationProperties(KeyGeneratorMasterKeyStorage::class) +class KeyGeneratorMasterKeyRepositoryConfig { } @ConfigurationProperties(prefix = "key.master-key.storage") -data class BouncyCastleKeyGeneratorMasterKeyStorage(val content: Map) { +data class KeyGeneratorMasterKeyStorage(val content: Map) { } \ No newline at end of file diff --git a/src/main/kotlin/com/vauthenticator/server/keys/adapter/local/KeyInitJob.kt b/src/main/kotlin/com/vauthenticator/server/keys/adapter/java/KeyInitJob.kt similarity index 94% rename from src/main/kotlin/com/vauthenticator/server/keys/adapter/local/KeyInitJob.kt rename to src/main/kotlin/com/vauthenticator/server/keys/adapter/java/KeyInitJob.kt index 32be45b8..58077ddc 100644 --- a/src/main/kotlin/com/vauthenticator/server/keys/adapter/local/KeyInitJob.kt +++ b/src/main/kotlin/com/vauthenticator/server/keys/adapter/java/KeyInitJob.kt @@ -1,4 +1,4 @@ -package com.vauthenticator.server.keys.adapter.local +package com.vauthenticator.server.keys.adapter.java import com.vauthenticator.server.keys.domain.* import org.springframework.beans.factory.annotation.Value diff --git a/src/test/kotlin/com/vauthenticator/server/keys/adapter/java/JavaSecurityKeyDecrypterTest.kt b/src/test/kotlin/com/vauthenticator/server/keys/adapter/java/JavaSecurityKeyDecrypterTest.kt new file mode 100644 index 00000000..320e38aa --- /dev/null +++ b/src/test/kotlin/com/vauthenticator/server/keys/adapter/java/JavaSecurityKeyDecrypterTest.kt @@ -0,0 +1,33 @@ +package com.vauthenticator.server.keys.adapter.java + +import com.vauthenticator.server.extentions.encoder +import com.vauthenticator.server.keys.domain.MasterKid +import io.mockk.every +import io.mockk.impl.annotations.MockK +import io.mockk.junit5.MockKExtension +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.extension.ExtendWith + +@ExtendWith(MockKExtension::class) +class JavaSecurityKeyDecrypterTest { + + @MockK + lateinit var keyCryptographicOperations: KeyCryptographicOperations + + @Test + fun `happy path`() { + val encrypted = "AN_ENCRYPTED_VALUE" + val decrypted = "AN_UNENCRYPTED_VALUE".toByteArray() + val maserKid = "A_MASTER_KEY" + + val uut = JavaSecurityKeyDecrypter(maserKid, keyCryptographicOperations) + + every { keyCryptographicOperations.decryptKeyWith(MasterKid(maserKid), encrypted.toByteArray()) } returns decrypted + + val actual = uut.decryptKey(encrypted) + val expected = encoder.encode(decrypted).decodeToString() + + Assertions.assertEquals(expected, actual) + } +} \ No newline at end of file diff --git a/src/test/kotlin/com/vauthenticator/server/keys/adapter/java/JavaSecurityKeyGeneratorTest.kt b/src/test/kotlin/com/vauthenticator/server/keys/adapter/java/JavaSecurityKeyGeneratorTest.kt new file mode 100644 index 00000000..7515e171 --- /dev/null +++ b/src/test/kotlin/com/vauthenticator/server/keys/adapter/java/JavaSecurityKeyGeneratorTest.kt @@ -0,0 +1,4 @@ +package com.vauthenticator.server.keys.adapter.java + +//todo +class JavaSecurityKeyGeneratorTest \ No newline at end of file diff --git a/src/test/kotlin/com/vauthenticator/server/keys/adapter/java/KeyCryptographicOperationsTest.kt b/src/test/kotlin/com/vauthenticator/server/keys/adapter/java/KeyCryptographicOperationsTest.kt new file mode 100644 index 00000000..2f7be0e3 --- /dev/null +++ b/src/test/kotlin/com/vauthenticator/server/keys/adapter/java/KeyCryptographicOperationsTest.kt @@ -0,0 +1,4 @@ +package com.vauthenticator.server.keys.adapter.java + +//todo +class KeyCryptographicOperationsTest \ No newline at end of file diff --git a/src/test/kotlin/com/vauthenticator/server/keys/adapter/java/KeyGeneratorMasterKeyRepositoryTest.kt b/src/test/kotlin/com/vauthenticator/server/keys/adapter/java/KeyGeneratorMasterKeyRepositoryTest.kt new file mode 100644 index 00000000..55bd414f --- /dev/null +++ b/src/test/kotlin/com/vauthenticator/server/keys/adapter/java/KeyGeneratorMasterKeyRepositoryTest.kt @@ -0,0 +1,4 @@ +package com.vauthenticator.server.keys.adapter.java + +//todo +class KeyGeneratorMasterKeyRepositoryTest \ No newline at end of file diff --git a/src/test/kotlin/com/vauthenticator/server/keys/adapter/local/BouncyCastleKeyDecrypterTest.kt b/src/test/kotlin/com/vauthenticator/server/keys/adapter/local/BouncyCastleKeyDecrypterTest.kt deleted file mode 100644 index 1ee6533f..00000000 --- a/src/test/kotlin/com/vauthenticator/server/keys/adapter/local/BouncyCastleKeyDecrypterTest.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.vauthenticator.server.keys.adapter.local - -import org.junit.jupiter.api.Assertions.* - -// TODO -class BouncyCastleKeyDecrypterTest { - -} \ No newline at end of file diff --git a/src/test/kotlin/com/vauthenticator/server/keys/adapter/local/BouncyCastleKeyGeneratorMasterKeyRepositoryTest.kt b/src/test/kotlin/com/vauthenticator/server/keys/adapter/local/BouncyCastleKeyGeneratorMasterKeyRepositoryTest.kt deleted file mode 100644 index fcca4002..00000000 --- a/src/test/kotlin/com/vauthenticator/server/keys/adapter/local/BouncyCastleKeyGeneratorMasterKeyRepositoryTest.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.vauthenticator.server.keys.adapter.local - -import org.junit.jupiter.api.Assertions.* - -//todo -class BouncyCastleKeyGeneratorMasterKeyRepositoryTest \ No newline at end of file diff --git a/src/test/kotlin/com/vauthenticator/server/keys/adapter/local/BouncyCastleKeyGeneratorTest.kt b/src/test/kotlin/com/vauthenticator/server/keys/adapter/local/BouncyCastleKeyGeneratorTest.kt deleted file mode 100644 index 9a531bfe..00000000 --- a/src/test/kotlin/com/vauthenticator/server/keys/adapter/local/BouncyCastleKeyGeneratorTest.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.vauthenticator.server.keys.adapter.local - -import org.junit.jupiter.api.Assertions.* - -//todo -class BouncyCastleKeyGeneratorTest \ No newline at end of file diff --git a/src/test/kotlin/com/vauthenticator/server/keys/adapter/local/KeyCryptographicOperationsTest.kt b/src/test/kotlin/com/vauthenticator/server/keys/adapter/local/KeyCryptographicOperationsTest.kt deleted file mode 100644 index 5bbb1b5c..00000000 --- a/src/test/kotlin/com/vauthenticator/server/keys/adapter/local/KeyCryptographicOperationsTest.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.vauthenticator.server.keys.adapter.local - -import org.junit.jupiter.api.Assertions.* - -//todo -class KeyCryptographicOperationsTest \ No newline at end of file