добавление ключа к элементу цепочки для ключей - PullRequest
0 голосов
/ 22 мая 2019

Итак, это мой первый вопрос о переполнении стека, и он касается цепочки для ключей, поэтому я читаю документацию Apple о цепочке для ключей, и они упоминают, что ключ может быть сгенерирован или получен другими способами «как в моем случае», затем я создал »словарь запросов "как они сказали, но когда я пытался добавить его, я получаю сообщение об ошибке, и мой статус равен -50 . Я не знаю, что значит, и причина, по которой я пытаюсь сохранить свой ключ, заключается в том, что поэтому я могу использовать его с "SecKeyDecrypt" для расшифровки сообщений, для которых в качестве параметра

требуется SecKey

ОБНОВЛЕНИЕ: Я обнаружил, что код возврата означает -50 errSecParam, что означает "Один или несколько параметров, переданных в функцию, недопустимы." , затем я пытаюсь удалить мой kSecValueRef как String: privateKey и это работает, но все же, я хочу, чтобы этот ключ был сохранен ??

 let privateKey = "myKey"

    let tag = "mybunlde.com".data(using: .utf8)!

        let addPrivateKey: [String: Any] = [kSecClass as String: kSecClassKey,
                                            kSecAttrApplicationTag as String: tag,
                                            kSecValueRef as String: privateKey]
        let status = SecItemAdd(addPrivateKey as CFDictionary, nil)
        guard status == errSecSuccess else { print("error while creating the key")
            return
        }

        let getPrivateKey: [String: Any] = [kSecClass as String: kSecClassKey,
                                            kSecAttrApplicationTag as String: tag,
                                            kSecAttrKeyType as String: kSecAttrKeyTypeRSA,
                                            kSecReturnRef as String: true]

        print("getPrivateKey \(getPrivateKey)")
    } else {
        print("no key found ")
    }

Ответы [ 2 ]

0 голосов
/ 22 мая 2019

вы можете использовать эту библиотеку для хранения и извлечения данных из цепочки для ключей https://github.com/jrendel/SwiftKeychainWrapper

* 1004 например *

let save: Bool = KeychainWrapper.standard.set("hello keychain", forKey: "key_name")
let get: String? = KeychainWrapper.standard.string(forKey: "key_name")
...