我正在尝试将512位密钥存储到MacOS密钥链中。但是,当我运行secitemadd函数时,得到的返回值是
-25303 errSecNoSuchAttr
. 我怎样才能最好地解决这个问题?
到目前为止,我已经试过移除
kSecAttrKeyType
,
kSecAttrKeyClass
和
kSecAttrKeySizeInBits
属性。这些解决了secitemadd的错误,但是破坏了存储的keychain项(无法查找/删除它)。
这是我目前掌握的代码(基于
this example
):
var newKeyData = Data(count: 64)
_ = newKeyData.withUnsafeMutableBytes { SecRandomCopyBytes(nil, 64, $0) }
let keyTag = "com.example.accessKey".data(using: .utf8)!
let keyQuery: [CFString: Any] = [
kSecClass: kSecClassKey,
kSecAttrKeyType: kSecAttrKeyTypeAES, // Removal leads to broken item
kSecAttrKeyClass: kSecAttrKeyClassSymmetric, // Removal leads to broken
kSecAttrApplicationTag: keyTag,
kSecAttrKeySizeInBits: 512, // Removal leads to broken item
kSecValueData: newKeyData
]
let status = SecItemAdd(addQuery as CFDictionary, nil) // Returns -25303
我希望这个查询工作正常,因为我使用的所有键都列在
the documentation
. 如果您能帮忙解决这个问题,我们将不胜感激!