我找到了类似这个问题的东西,但这对我没有用
答案 0 :(得分:0)
不容易。 Apple希望您使用证书(公钥)或身份(.p12文件,公钥/私钥对),并且难以存储原始密钥。这尤其适用于私钥 - 如果你能避免私钥,你通常宁愿在你的内存空间中没有未加密的私钥。在OSX上,SecItemImport()
有效,但在iOS上却没有,但我现在还没有检查过几个操作系统版本。
你可以强制它,如果你真的想要,但它需要是PKCS#1 DER数据 - 所以你必须从PKCS#8数据中提取PKCS#1键,这意味着你必须手工解析DER
这是公钥PKCS#8数据的旧例子:
http://blog.flirble.org/2011/01/05/rsa-public-key-openssl-ios/
使用该代码,您可以获得公钥的SecKeyRef;私钥有一些不同的DER结构,但有类似的想法。
最好的办法是获取.p12文件并使用SecPKCS12Import()
。这将获得一个SecIdentityRef,从那里你可以使用SecIdentityCopyPrivateKey()
来获取私钥SecKeyRef。
答案 1 :(得分:0)
看看this GitHub repo。它演示了使用SecItemImport
加载密钥进行签名和验证。
您还应该仔细查看SecExternalFormat
enum,其中包含kSecFormatWrappedPKCS8
。这可能就是你要找的东西。