我正在尝试将512位密钥存储到macOS密钥链中。但是,当我运行SecItemAdd函数时,我得到的返回值为-25303 errSecNoSuchAttr
。我怎样才能最好地解决这个问题?
到目前为止,我已经尝试删除kSecAttrKeyType
,kSecAttrKeyClass
和kSecAttrKeySizeInBits
属性。这些解决了SecItemAdd的错误,但是破坏了存储的钥匙串项目(无法查找/删除)。
这是我到目前为止获得的代码(基于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中,因此我希望此查询能正常工作。解决此问题的任何帮助将不胜感激!