From ba581e30daba1b3cdffdfbd9e85c1444fde08041 Mon Sep 17 00:00:00 2001 From: Robert Mathew Date: Fri, 23 Aug 2024 18:37:10 +0530 Subject: [PATCH] feat: added KmsService and local KMS module --- modules/local-kms/build.gradle.kts | 23 +++++++++++++ modules/local-kms/src/main/kotlin/Main.kt | 5 +++ .../sphereon/oid/fed/services/KmsService.kt | 32 +++++++++++++++++++ settings.gradle.kts | 1 + 4 files changed, 61 insertions(+) create mode 100644 modules/local-kms/build.gradle.kts create mode 100644 modules/local-kms/src/main/kotlin/Main.kt create mode 100644 modules/services/src/commonMain/kotlin/com/sphereon/oid/fed/services/KmsService.kt diff --git a/modules/local-kms/build.gradle.kts b/modules/local-kms/build.gradle.kts new file mode 100644 index 00000000..b1919cfd --- /dev/null +++ b/modules/local-kms/build.gradle.kts @@ -0,0 +1,23 @@ +plugins { + kotlin("jvm") version "2.0.0" +} + +group = "com.sphereon.oid.fed.kms.local" +version = "0.1.0" + +repositories { + mavenCentral() + mavenLocal() + google() +} + +dependencies { + testImplementation(kotlin("test")) +} + +tasks.test { + useJUnitPlatform() +} +kotlin { + jvmToolchain(21) +} \ No newline at end of file diff --git a/modules/local-kms/src/main/kotlin/Main.kt b/modules/local-kms/src/main/kotlin/Main.kt new file mode 100644 index 00000000..d75aa9fd --- /dev/null +++ b/modules/local-kms/src/main/kotlin/Main.kt @@ -0,0 +1,5 @@ +package com.sphereon.oid.fed.kms.local + +fun main() { + println("Hello World!") +} \ No newline at end of file diff --git a/modules/services/src/commonMain/kotlin/com/sphereon/oid/fed/services/KmsService.kt b/modules/services/src/commonMain/kotlin/com/sphereon/oid/fed/services/KmsService.kt new file mode 100644 index 00000000..8dc53cda --- /dev/null +++ b/modules/services/src/commonMain/kotlin/com/sphereon/oid/fed/services/KmsService.kt @@ -0,0 +1,32 @@ +package com.sphereon.oid.fed.services + +import com.sphereon.oid.fed.persistence.models.Jwk + +class KmsService(private val provider: String) { + + private val kmsClient: KmsClient by lazy { + when (provider) { + //"local" -> LocalKmsClient() + //"aws" -> AwsKmsClient() + else -> throw IllegalArgumentException("Unsupported KMS provider: $provider") + } + } + + fun generateKeyPair(keyId: String): Jwk { + return kmsClient.generateKeyPair(keyId) + } + + fun sign(data: String, keyId: String): String { + return kmsClient.sign(data, keyId) + } + + fun verify(token: String, keyId: String): Boolean { + return kmsClient.verify(token, keyId) + } +} + +interface KmsClient { + fun generateKeyPair(keyId: String): Jwk + fun sign(data: String, keyId: String): String + fun verify(token: String, keyId: String): Boolean +} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index bff086b8..90d48f4c 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -48,3 +48,4 @@ include(":modules:federation-server") include(":modules:openapi") include(":modules:persistence") include(":modules:services") +include("modules:local-kms")