gpt4 book ai didi

ios - 添加第二个证书时,SecItemAdd 返回 -25299

转载 作者:行者123 更新时间:2023-11-28 08:57:37 27 4
gpt4 key购买 nike

当尝试添加第二个证书失败并显示 -25299(该项目已存在。)。他们有不同的 kSecAttrLabel。在尝试删除之前它也失败了,代码为 -25300(找不到该项目。)。

也许有人知道这段代码有什么问题?我是否遗漏了某些属性?

if let cer1 = "cert1".dataUsingEncoding(NSUTF8StringEncoding),
let cer2 = "cert2".dataUsingEncoding(NSUTF8StringEncoding) {
addCertificate(cer1, label: "TestCertificate_1")
addCertificate(cer2, label: "TestCertificate_2")
}

func addCertificate(certificate: NSData, label: String) {
let query = [
String(kSecClass) : kSecClassCertificate,
String(kSecAttrLabel) : label,
String(kSecValueData) : certificate
]
var status = SecItemDelete(query)
if status != noErr {
print("Error deleting cer from keychain. Error: \(status)")
}

status = SecItemAdd(query, nil)

if status != noErr {
print("Error adding cer to keychain. Error: \(status)")
}
}

// Output:
// Error deleting cer from keychain. Error: -25300 (The item cannot be found.)
// Error deleting cer from keychain. Error: -25300 (The item cannot be found.)
// Error adding cer to keychain. Error: -25299 (The item already exists.)

最佳答案

对于 kSecClassCertificate 类的钥匙串(keychain)项,主键是 kSecAttrCertificateType、kSecAttrIssuer 和 kSecAttrSerialNumber 的组合。

let query = [
String(kSecClass) : kSecClassCertificate,
String(kSecAttrLabel) : label,
String(kSecValueData) : certificate,
String(kSecAttrSerialNumber) : serialNumber
]

关于ios - 添加第二个证书时,SecItemAdd 返回 -25299,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32690941/

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