在iOS上使用RSA公钥

时间:2012-03-15 21:57:00

标签: ios encryption rsa

我正在开发一个应用程序,我将从服务器中检索用户的公钥。有了它,我需要使用公钥进行RSA加密。从服务器获取的公钥是Base64编码的。

如何将公钥加载到iOS KeyChain中,以便我可以使用它执行RSA加密功能?证书加载似乎微不足道,但原始公钥不会。

3 个答案:

答案 0 :(得分:4)

这不受支持,因为"wrong"方式

正确”方式是使用a certificate

quote "Quinn The Eskimo!"

  

这非常简单。您无需将证书添加到钥匙串即可处理此案例。相反,只需在应用程序中加载证书数据(即.cer文件的内容)(您可以从捆绑包或网络中获取),然后使用SecCertificateCreateWithData创建证书引用。从那里,您可以使用SecTrust对象提取公钥ref(SecTrustCreateWithCertificates,SecTrustEvaluate - 您可以选择忽略生成的SecTrustResultType - 和SecTrustCopyPublicKey)。从那里,您可以使用SecKey API(SecKeyEncrypt,SecKeyRawVerify)进行加密和验证。

关于how to create a self-signed certificate is here的教程。

基本步骤是:

#Make the -----RSA PRIVATE KEY----- file in PEM format
openssl genrsa -out privKey.pem 2048

#Make the -----CERTIFICATE REQUEST-----
openssl req -new -key privKey.pem -out certReq.pem

#Make the actual -----CERTIFICATE-----
openssl x509 -req -days 30 -in certReq.pem -signkey privKey.pem -out certificate.pem

#Make the DER certificate.crt file from the certificate.pem
openssl x509 -outform der -in certificate.pem -out certificate.cer

如果您在Mac计算机上双击 .cer ,它会将其导入到钥匙串中。

资源:

答案 1 :(得分:1)

传输公钥的常用方法 - 在证书内部,由某些CA签名证明它是真实的。

或许你在谈论一个ssh公钥? 在这种情况下,您需要一个特殊的支持ssh的应用程序才能使用它,这些键通常不会存储在iOS钥匙串中。

答案 2 :(得分:0)

我在Apple网站上找到了必要的代码,描述了如何从公钥中删除ASN.1标头并将其加载到KeyChain中。