我使用 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 转换为数据。