gpt4 book ai didi

swift - 在真实设备 iOS Swift 上进行单元测试时尝试生成随 secret 钥对时出错

转载 作者:行者123 更新时间:2023-12-02 02:42:08 25 4
gpt4 key购买 nike

当我尝试在真实设备上运行单元测试时,它失败了。

返回的错误是

-25293 ("The user name or passphrase you entered is not correct.").

这是我的失败代码:

let accessControl = SecAccessControlCreateWithFlags(
kCFAllocatorDefault,
kSecAttrAccessibleAfterFirstUnlock,
[.privateKeyUsage],
nil)

let privateKeyAttrs = [
kSecAttrIsPermanent as String : true,
kSecAttrApplicationTag as String : tag,
kSecAttrAccessControl as String : accessControl
] as [String : Any]

let generationQuery: [String: Any] = [
kSecAttrKeyType as String : kSecAttrKeyTypeRSA,
kSecAttrKeySizeInBits as String : 2048,
kSecPrivateKeyAttrs as String : privateKeyAttrs]

var error: Unmanaged<CFError>?
guard let privateKey = SecKeyCreateRandomKey(generationQuery as CFDictionary, &error) else {
throw <MyError>
}

即使我将可访问保护更改为 kSecAttrAccessibleAlways 或 kSecAttrAccessibleWhenUnlocked,SecKeyCreateRandomKey 也会失败,并且如果我只是从 privateKeyAttrs 中删除 kSecAttrAccessControl,测试也会通过。

More details: If I run my tests on a simulator it pass; I'm usingXcode 11.6 and swift 5.

最佳答案

.privateKeyUsage专门用于创建存储在 Secure Enclave 中的 key 对:

An attempt to use this constraint while generating a key pair outside the Secure Enclave fails.

删除该选项。如果您只是尝试在钥匙串(keychain)中创建 key 对,则不需要它(也无法使用它)。

关于swift - 在真实设备 iOS Swift 上进行单元测试时尝试生成随 secret 钥对时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63396595/

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