如何在macOS钥匙串中存储对称密码密钥?

时间:2018-12-21 15:25:53

标签: swift macos keychain

我正在尝试将512位密钥存储到macOS密钥链中。但是,当我运行SecItemAdd函数时,我得到的返回值为-25303 errSecNoSuchAttr。我怎样才能最好地解决这个问题?

到目前为止,我已经尝试删除kSecAttrKeyTypekSecAttrKeyClasskSecAttrKeySizeInBits属性。这些解决了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中,因此我希望此查询能正常工作。解决此问题的任何帮助将不胜感激!

0 个答案:

没有答案