簡體   English   中英

iPhone:如何從公共密鑰文件(PEM)創建SecKeyRef

[英]iPhone: How to create a SecKeyRef from a public key file (PEM)

為了從/向iPhone發送加密消息,我需要讀取一個公共密鑰(服務器的公共密鑰)PEM文件並創建一個SecKeyRef(后來我甚至可以將其存儲在鑰匙串上,以免再次創建它)。

這是我當前的工作流程:

  1. 在服務器上:使用用戶的證書和私鑰創建P12文件。 將用戶的公鑰存儲在服務器的鑰匙串上。
  2. 在iPhone上:從服務器檢索P12文件,使用密碼打開它並將私鑰存儲在鑰匙串上。
  3. 在iPhone上:使用服務器的公用密鑰從服務器中檢索PEM文件。 創建一個SecKeyRef並將其存儲在鑰匙串上
  4. 在iPhone上:使用兩個鍵向/從服務器發送/接收加密消息。
  5. 從此過上幸福的生活。

我遇到3的問題,因為無法從PEM文件數據創建SecKeyRef。 我找不到有關如何執行操作的任何文檔,有人遇到過同樣的問題嗎? 有什么提示嗎? 由於我找不到任何代碼示例或文檔,因此覺得我做錯了...

謝謝!

您應該能夠解釋DER編碼的pem並使用SecCertificateCreateWithData()獲得證書,然后可以從中提取密鑰。

NSData *myCertData = ....;

SecCertificateRef cert = SecCertificateCreateWithData (kCFAllocatorDefault, myCertData); 
CFArrayRef certs = CFArrayCreate(kCFAllocatorDefault, (const void **) &cert, 1, NULL); 

SecTrustRef trust;
SecTrustCreateWithCertificates(certs, policy, &trust);
SecTrustResultType trustResult;
SecTrustEvaluate(trust, &trustResult);
SecKeyRef pub_key_leaf = SecTrustCopyPublicKey(trust);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM