将钥匙添加到钥匙链项目

Posted

技术标签:

【中文标题】将钥匙添加到钥匙链项目【英文标题】:adding key to Key Chain Item 【发布时间】:2019-05-22 09:45:53 【问题描述】:

所以这是我关于 Stack Overflow 的第一个问题,它是关于钥匙串的,所以,我阅读了关于钥匙串的苹果文档,他们提到可以通过其他方式生成或获取密钥“这是我的情况”,然后我创建了“查询字典“就像他们说的那样,但是当我尝试添加它时出现错误并且我的 status 等于 -50 我不知道这意味着我试图存储密钥的原因所以我可以将它与 "SecKeyDecrypt" 一起使用来解密需要 SecKey 作为参数的消息

更新:我发现返回码是什么意思 -50 errSecParam 这意味着 “传递给函数的一个或多个参数无效。” 然后我尝试删除我的 kSecValueRef as String: privateKey 它可以工作,但我仍然希望存储该密钥??

 let privateKey = "myKey"

    let tag = "mybunlde.com".data(using: .utf8)!

        let addPrivateKey: [String: Any] = [kSecClass as String: kSecClassKey,
                                            kSecAttrApplicationTag as String: tag,
                                            kSecValueRef as String: privateKey]
        let status = SecItemAdd(addPrivateKey as CFDictionary, nil)
        guard status == errSecSuccess else  print("error while creating the key")
            return
        

        let getPrivateKey: [String: Any] = [kSecClass as String: kSecClassKey,
                                            kSecAttrApplicationTag as String: tag,
                                            kSecAttrKeyType as String: kSecAttrKeyTypeRSA,
                                            kSecReturnRef as String: true]

        print("getPrivateKey \(getPrivateKey)")
     else 
        print("no key found ")
    

【问题讨论】:

【参考方案1】:

https://developer.apple.com/documentation/security/certificate_key_and_trust_services/keys/storing_keys_in_the_keychain?language=objc

https://apple.stackexchange.com/questions/8993/how-can-i-add-a-private-key-to-my-keychain Adding private key into ios Keychain

使用上面的链接.....

【讨论】:

这是针对对象 C 的,我正在使用 swift?我读过一篇更小的文章developer.apple.com/documentation/security/…【参考方案2】:

您可以使用这个库来存储和检索钥匙串中的数据 https://github.com/jrendel/SwiftKeychainWrapper

例如

let save: Bool = KeychainWrapper.standard.set("hello keychain", forKey: "key_name")
let get: String? = KeychainWrapper.standard.string(forKey: "key_name")

【讨论】:

SecKeyDecrypt 需要 try secKey 的参数,lib 将其作为字符串返回?

以上是关于将钥匙添加到钥匙链项目的主要内容,如果未能解决你的问题,请参考以下文章

钥匙串:项目报告为 errSecItemNotFound,但在添加时收到 errSecDuplicateItem

是否可以更新钥匙串项目的 kSecAttrAccessible 值?

使用 Swift 向 iOS 钥匙串添加项目和查询

在钥匙串中找不到指定的项目

苹果密码钥匙串在哪里

Xamarin.iOS VSTS 无法将临时钥匙串添加到钥匙串搜索路径