为什么我从试图将密钥保存到钥匙串后得到errSecParam(-50)?

问题描述 投票:0回答:1

我在这个storing_keys_in_the_keychain之后有以下代码。

func generateInitialKey() -> Data {
    let key = AES256.randomKey()
    let addQuery: Dictionary<String, Any> = [
        kSecClass as String: kSecClassKey,
        kSecAttrApplicationTag as String: applicationTag,
        kSecValueRef as String: key
    ]
    let status = SecItemAdd(addQuery as CFDictionary, nil)
    print(errSecParam, status)
    guard status == errSecSuccess else { fatalError("Can't save Key") }
    return key
}

函数AES256.randomKey()生成64字节的DataapplicationTag也是Data

let applicationTag = "example".data(using: .utf8)!

但是,我最终收到errSecParam(-50)错误。有人可以帮我吗?

ios swift keychain
1个回答
1
投票

仔细阅读documentationerrSecParam(-50)表示传递给函数的一个或多个参数是not valid。该链接将您引导至可以查看状态描述的站点。

至少,您可以分别使用kSecAttrKeyTypekSecAttrKeySizeInBits参数指定要创建的键的类型和大小。

这将导致您遇到下一个问题:没有kSecAttrKeyTypeAES。这已在Apple developer forums上讨论和回答。建议使用kSecClassGenericPassword

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.