添加第二个证书时

添加第二个证书时

当尝试添加第二个证书时,失败为-- 25299(项目已经存在)。他们有不同的头巾。
在尝试删除之前,它也失败了,代码为-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的密钥链项,主键是kSecAttrCertificateType、ksecAttrIsuer和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/

10-10 22:24