Skip to content

Commit 56913a4

Browse files
committed
fix: Name of key on iOS should contain userId and keyId
1 parent c3c31e1 commit 56913a4

File tree

3 files changed

+5
-8
lines changed

3 files changed

+5
-8
lines changed

multiplatform-lib/src/appleMain/kotlin/internal/KeyPairManagerImpl.apple.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import com.infomaniak.auth.lib.extensions.toNSData
2727
import com.infomaniak.auth.lib.extensions.toNsData
2828
import com.infomaniak.auth.lib.extensions.tryIt
2929
import com.infomaniak.auth.lib.extensions.use
30-
import com.infomaniak.auth.lib.internal.KeyPairManager.Companion.ALIAS
3130
import kotlinx.cinterop.ExperimentalForeignApi
3231
import kotlinx.cinterop.MemScope
3332
import kotlinx.cinterop.alloc
@@ -80,7 +79,7 @@ internal actual class KeyPairManagerImpl : KeyPairManager {
8079
): Xor<ByteArray, Failure.KeyManagement.KeyExtractionFailed> = Dispatchers.IO {
8180
memScoped {
8281
// Get private key to retrieve public key
83-
getPrivateKeyRef().use { privateKeyRef ->
82+
getPrivateKeyRef("$userId-$keyId").use { privateKeyRef ->
8483
SecKeyCopyPublicKey(privateKeyRef) ?: throw Exception("Failed to extract public key from private key")
8584
}.use { publicKeyRef ->
8685

@@ -101,7 +100,7 @@ internal actual class KeyPairManagerImpl : KeyPairManager {
101100
keyId: String
102101
): Xor<ByteArray, Failure.KeyManagement.KeyExtractionFailed> {
103102
memScoped {
104-
getPrivateKeyRef().use { privateKeyRef ->
103+
getPrivateKeyRef("$userId-$keyId").use { privateKeyRef ->
105104
val result = tryIt { errorPointer ->
106105
SecKeyCopyExternalRepresentation(privateKeyRef, errorPointer)
107106
}
@@ -115,12 +114,12 @@ internal actual class KeyPairManagerImpl : KeyPairManager {
115114
}
116115

117116
@OptIn(ExperimentalForeignApi::class)
118-
private fun MemScope.getPrivateKeyRef(): SecKeyRef {
117+
private fun MemScope.getPrivateKeyRef(keyAlias: String): SecKeyRef {
119118
val query = buildCFDictionary {
120119
this[kSecAttrKeyType] = kSecAttrKeyTypeECSECPrimeRandom
121120
this[kSecAttrKeyClass] = kSecAttrKeyClassPrivate
122121
this[kSecClass] = kSecClassKey
123-
this[kSecAttrApplicationTag] = ALIAS.toNsData()
122+
this[kSecAttrApplicationTag] = keyAlias.toNsData()
124123
this[kSecReturnRef] = true
125124
}
126125

multiplatform-lib/src/commonMain/kotlin/CryptoObjectsBuilder.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ import kotlin.uuid.Uuid
3939

4040
// This class should be internal
4141
@OptIn(ExperimentalUuidApi::class, ExperimentalSerializationApi::class)
42-
class CryptoObjectsBuilder() {
42+
internal class CryptoObjectsBuilder {
4343

4444
internal val base64NoPadding = Base64.UrlSafe.withPadding(Base64.PaddingOption.ABSENT)
4545

multiplatform-lib/src/commonMain/kotlin/internal/KeyManager.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,6 @@ internal interface KeyPairManager {
3232
suspend fun retrievePrivateKey(userId: Int, keyId: String): Xor<ByteArray, Failure.KeyManagement.KeyExtractionFailed>
3333

3434
companion object {
35-
protected const val ALIAS = "default"
36-
3735
val privateKeyPurposes = KeyPurposes.privateKeyDefaults
3836
val publicKeyPurposes = KeyPurposes.publicKeyDefaults
3937
}

0 commit comments

Comments
 (0)