代码之家  ›  专栏  ›  技术社区  ›  Gori

如何在macos密钥链中存储对称加密密钥?

  •  1
  • Gori  · 技术社区  · 6 年前

    我正在尝试将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 . 如果您能帮忙解决这个问题,我们将不胜感激!

    0 回复  |  直到 6 年前