您好,我正在使用下面的代码将私钥(端到端加密所需的)保存到钥匙串中。如果我取出带有“kSecAttrSynchronized as String: kCFBooleanTrue!”的行,则密钥将被正确保存。看来这条线导致了错误。我正在尝试让私钥在所有 iCloud 设备之间同步。如果您能帮助解决此问题,我将不胜感激。谢谢。
func save(userUID: String, privatekey: String) {
let passwordData = privatekey.data(using: .utf8)!
let query: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrSynchronizable as String: kCFBooleanTrue!,
kSecAttrService as String: "hustles/\(userUID)",
kSecAttrAccount as String: userUID,
kSecValueData as String: passwordData
]
SecItemAdd(query as CFDictionary, nil)
}
解决方案是还通过添加“kSecAttrSynchronized as String: kCFBooleanTrue!,”来更新读取函数中的查询。保存查询必须与读取查询匹配。