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



我发现了类似这个问题的东西,但这对我不起作用

如何在 iOS 中使用 PKCS8 RSA DER 私钥?

不容易。 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。

看看这个 GitHub 存储库。它演示了如何使用SecItemImport加载用于签名和验证的密钥。

您还应该仔细查看SecExternalFormat枚举,该枚举具有(除其他外(kSecFormatWrappedPKCS8 。这可能就是您要找的。

最新更新