在我的应用中,我使用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
错误的地方。
那么,为什么密钥对生成或我可以做些什么才能解决它?
谢谢,
欧麦