Код: Выделить всё
// iosMain
import platform.Security.*
import kotlinx.cinterop.*
class SecureStorageIOS : SecureStorage {
override fun save(key: String, value: String) {
val data = value.encodeToByteArray().toNSData()
val query = mapOf(
kSecClass to kSecClassGenericPassword,
kSecAttrAccount to key,
kSecValueData to data
)
SecItemAdd(query, null)
}
override fun get(key: String): String? {
val query = mapOf(
kSecClass to kSecClassGenericPassword,
kSecAttrAccount to key,
kSecReturnData to kCFBooleanTrue!!,
kSecMatchLimit to kSecMatchLimitOne
)
memScoped {
val result = nativeHeap.alloc()
val status = SecItemCopyMatching(query, result.ptr)
if (status == errSecSuccess) {
val nsData = result.value as NSData
return nsData.toByteArray().decodeToString()
}
}
return null
}
}
Мои вопросы:
- Как правильно преобразовать ByteArray в NSData в
Kotlin/Native? - Есть ли более простой или рекомендуемый способ использования Keychain в KMP для
безопасности хранилище?
Подробнее здесь: https://stackoverflow.com/questions/798 ... rm-kmp-app
Мобильная версия