如何在Swift或Objective C中使用PKCS8 RSA DER私钥

时间:2016-02-15 08:39:32

标签: ios objective-c swift

我找到了类似这个问题的东西,但这对我没有用

How can I use a PKCS8 RSA DER Private Key in iOS?

2 个答案:

答案 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。这可能就是你要找的东西。