[英]Using an RSA public key on iOS
我正在开发一个应用程序,它将从我们的服务器检索用户的公共密钥。 有了它后,我需要使用公钥进行RSA加密。 从服务器获得的公共密钥是Base64编码的。
如何将公钥加载到iOS KeyChain中,以便可以使用它执行RSA加密功能? 证书加载看似微不足道,但原始公钥却并非如此。
不支持此操作,因为它是“错误”方式 。
“ 正确 ”的方法是使用证书 。
这非常容易。 您无需将证书添加到钥匙串即可处理这种情况。 相反,只需将证书数据(即.cer文件的内容)加载到应用程序中(可以从捆绑包中获取或从网络中获取),然后使用SecCertificateCreateWithData创建证书引用。 从那里可以使用SecTrust对象(SecTrustCreateWithCertificates,SecTrustEvaluate-您可以选择忽略生成的SecTrustResultType和SecTrustCopyPublicKey)来提取公钥引用。 从那里,您可以使用SecKey API(SecKeyEncrypt,SecKeyRawVerify)进行加密和验证。
有关如何创建自签名证书的教程,请参见此处 。
基本步骤是:
#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 ,它将提供将其导入到钥匙串中的功能。
资源:
传输公钥的通常方法是在证书中,该证书由某些CA签名以证明它是真实的。
或者,也许您在谈论ssh公钥? 在这种情况下,您将需要具有ssh功能的特殊应用程序才能使用它,这些密钥通常不存储在iOS密钥链中。
我在Apple网站上找到了必要的代码,该代码描述了如何从公钥中剥离ASN.1标头并将其加载到KeyChain中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.