Skip to content

Commit

Permalink
feat: add base code for crypto
Browse files Browse the repository at this point in the history
  • Loading branch information
ParkJong-Hun committed Jan 11, 2025
1 parent e56dd72 commit 8e1355c
Show file tree
Hide file tree
Showing 9 changed files with 46 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package co.kr.parkjonghun.composemultiplatformtestairfield.infrastructure.key

actual typealias KeyPair = java.security.KeyPair
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package co.kr.parkjonghun.composemultiplatformtestairfield.infrastructure.key

actual typealias PlatformBinaryData = kotlin.ByteArray
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package co.kr.parkjonghun.composemultiplatformtestairfield.infrastructure.key

interface Cryptor {
fun encrypt()
fun decrypt()
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package co.kr.parkjonghun.composemultiplatformtestairfield.infrastructure.key

interface DigitalSignature {
fun sign(alias: String, data: ByteArray): PlatformBinaryData

// When receiving data, it is always received as something like Ktor, so this is sufficient as [ByteArray].
fun verify(alias: String, data: ByteArray): Boolean
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package co.kr.parkjonghun.composemultiplatformtestairfield.infrastructure.key

// TODO: Always catch up and migrate if it can be implemented only with Kotlin libraries.
expect class KeyPair
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package co.kr.parkjonghun.composemultiplatformtestairfield.infrastructure.key

interface KeyPairHandler {
fun generateKeyPair(alias: String): KeyPair
fun obtainKeyPair(alias: String): KeyPair?
fun deleteKeyPair(alias: String): Boolean
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package co.kr.parkjonghun.composemultiplatformtestairfield.infrastructure.key

// TODO: Always catch up and migrate if it can be implemented only with Kotlin libraries.
expect class PlatformBinaryData
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package co.kr.parkjonghun.composemultiplatformtestairfield.infrastructure.key

import kotlinx.cinterop.ExperimentalForeignApi

actual typealias KeyPair = IosKeyPair

@OptIn(ExperimentalForeignApi::class)
class IosKeyPair(val secKeyRef: platform.Security.SecKeyRef)
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package co.kr.parkjonghun.composemultiplatformtestairfield.infrastructure.key

actual typealias PlatformBinaryData = platform.Foundation.NSData

0 comments on commit 8e1355c

Please sign in to comment.