如何将大小为 4096 的 kSecAttrKeyTypeRSA 类型的公钥和私钥存储在核心数据中,而不是在密钥链中存储



我使用 RSA4096 生成公钥和私钥,并且通过将 kSecAttrIsPermanent 设置为 false 来存储到钥匙串中。

现在我正在尝试将 SecKey 存储到核心数据中,但我无法将 SecKey 转换为 NSData。请建议

let privateKeyParams: [String: AnyObject] = [
    kSecAttrIsPermanent as String: false as AnyObject,
    kSecAttrApplicationTag as String:"com.RSAKey.MyApp" as AnyObject
]
// public key parameters
let publicKeyParams: [String: AnyObject] = [
    kSecAttrIsPermanent as String: false as AnyObject,
    kSecAttrApplicationTag as String:"com.RSAKey.MyApp" as AnyObject
]
// global parameters for our key generation
let parameters: [String: AnyObject] = [
    kSecAttrKeyType as String:          kSecAttrKeyTypeRSA,
    kSecAttrKeySizeInBits as String:    4096 as AnyObject,
    kSecPublicKeyAttrs as String:       publicKeyParams as AnyObject,
    kSecPrivateKeyAttrs as String:      privateKeyParams as AnyObject,
]
var pubKey, privKey: SecKey?
let status = SecKeyGeneratePair(parameters as CFDictionary, &pubKey, &privKey)
您可以使用

SecKeyCopyExternalRepresentation()将 SecKey 转换为数据。

最新更新