1

尝试从 swift 的 SecKeyCreateWithData 函数生成 SecKey,如下所示。SecKeyCreateWithData 总是返回 nil 并带有以下错误日志。任何人都可以请帮忙。

注意:作为 CFData 的 cekKeyData 和作为 CFDictionary 的属性都不是 nil 并且其中有值。

日志 :

Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value

代码

    let keydatalen = 256
    let algorithmID = ""
    let partyUInfo = ""

    let cekKeyData = DHSecretGenerator.createDeriveKey(
        Z: sharedKey,
        KeyLenght: keydatalen,
        AlgorithmID: KDFConcateWithLenght(text: algorithmID, encoding: .ascii),
        PartyUInfo: KDFConcateWithLenght(text: partyUInfo, encoding: .utf8),
        PartyVInfo: KDFConcateWithLenght(text: reference, encoding: .ascii),
        SuppPubInfo: numberToData(number: UInt32(keydatalen)),
        SuppPrivInfo: Data())

    let attributes: [String: Any] = [
                kSecAttrKeyType as String: kSecAttrKeyTypeECSECPrimeRandom,
                kSecAttrKeyClass as String: kSecAttrKeyClassSymmetric
            ]

    var error: Unmanaged<CFError>?
            var test: SecKey =
            let privKey : SecKey = SecKeyCreateWithData(cekKeyData as CFData,
                                                        attributes as CFDictionary, &error)!
            print(privKey)
4

1 回答 1

0

指定密钥长度的长度和类型,例如 256 并且所有类型都是公共或私有的,我猜对称是公共和私有是相同的,但不太确定。

让属性:[字符串:任意] = [ kSecAttrKeyType 作为字符串:kSecAttrKeyTypeECSECPrimeRandom,kSecAttrKeyClass 作为字符串:kSecAttrKeyClassPublic,kSecAttrKeySizeInBits 作为字符串:256]

于 2020-01-25T19:59:27.370 回答