В моем приложении я использую SecKeyGeneratePair
для создания пары ключей RSA. После выпуска приложения я начал замечать случайные errSecInteractionNotAllowed
ошибки (в настоящее время очень редкие) при использовании этой функции, пока только на устройствах iOS 10. Мне непонятно, почему произошла ошибка генерации пары ключей или что я должен сделать, чтобы это исправить. Кроме того, я не смог найти никакой документации о том, почему генерация пары ключей должна завершаться сбоем с этой ошибкой.
Это код, который я использовал для создания пары ключей:
guard let access = SecAccessControlCreateWithFlags(nil,
kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly,
[],
nil) else {throw Error(description: "Failed to create access control")}
let privateAttributes = [String(kSecAttrIsPermanent): true,
String(kSecAttrApplicationTag): keyTag + self.privateKeyExtension,
String(kSecAttrAccessControl): access] as [String : Any]
let publicAttributes = [String(kSecAttrIsPermanent): true,
String(kSecAttrApplicationTag): keyTag + self.publicKeyExtension] as [String : Any]
let pairAttributes = [String(kSecAttrKeyType): kSecAttrKeyTypeRSA,
String(kSecAttrKeySizeInBits): self.rsaKeySize,
String(kSecPublicKeyAttrs): publicAttributes,
String(kSecPrivateKeyAttrs): privateAttributes] as [String : Any]
var pubKey, privKey: SecKey?
let status = SecKeyGeneratePair(pairAttributes as CFDictionary, &pubKey, &privKey)
После этого кода я проверяю статус, и если он не errSecSuccess
, я регистрирую ошибку со статусом, возвращенным функцией. Здесь я заметил ошибку errSecInteractionNotAllowed
. Итак, почему происходит генерация пары ключей или что я могу сделать, чтобы это исправить?
Спасибо,
Омер