gpt4 book ai didi

如果设备上仅设置了 devicecode,IOS 无法创建私钥?

转载 作者:行者123 更新时间:2023-12-03 03:54:40 25 4
gpt4 key购买 nike

我正在尝试生成一个私钥,该私钥仅在使用设备代码或当前的生物识别数据集(已在设备上注册)时才能访问。

当我在设备上注册了手指时,它就可以工作,然后就一切顺利了。但是如果我删除我注册的“touchid-finger”,并尝试生成一个新 key ,那么它会返回 nil

错误代码是-25293

代码示例:

func generateKey() -> SecKey?{
var error: Unmanaged<CFError>?
let accessControl = SecAccessControlCreateWithFlags(
kCFAllocatorDefault,
kSecAttrAccessibleWhenUnlockedThisDeviceOnly,
[.devicePasscode,.or,.biometryCurrentSet],
nil)

let attributes:[String : Any] = [kSecAttrType as String: kSecAttrKeyTypeRSA,
kSecAttrKeySizeInBits as String:4096,
kSecPrivateKeyAttrs as String: [
kSecAttrIsPermanent:true,
kSecAttrCanSign: true,
kSecAttrApplicationTag: "yes.its.my.tag",
kSecAttrAccessControl:accessControl!]]
let privateKey = SecKeyCreateRandomKey(attributes as CFDictionary, &error)
if(error != nil || privateKey == nil) {
fatalError("explode Kittens")
}
return privateKey
}

仅供引用。它实际上可以在模拟器上运行,但不能在真实设备上运行。

我做错了什么吗?这是否按预期工作?这是一个错误吗? (太多问题了:D)

最佳答案

“问题与项目的创建/创建方式有关,而这不是这些标志控制的。

事实上,要使 .biometryCurrentSet 在使用时具有任何意义,在创建时实际上必须存在一组当前的生物识别信息,我认为这就是 errSecAuthFailed 的来源。

如果没有可用的生物识别技术,我的建议是手动回退到仅使用 .devicePasscode。有两种方法:A. 捕获错误并重试 B. 使用 LocalAuthentication 框架预检请求。”

苹果说不行:D

关于如果设备上仅设置了 devicecode,IOS 无法创建私钥?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58445519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com