2013-04-09 23 views
4

我創建了這樣一個公共密鑰:如何從目標C中的文件創建私鑰?

NSString *pkFilePath = [[NSBundle mainBundle] pathForResource:@"public_key" ofType:@"der"]; 
NSData *myCertData = [NSData dataWithContentsOfFile:pkFilePath]; 


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

SecTrustRef trust; 
SecPolicyRef myPolicy = SecPolicyCreateBasicX509(); 
SecTrustCreateWithCertificates(certs, myPolicy, &trust); 
SecTrustResultType trustResult; 
SecTrustEvaluate(trust, &trustResult); 
SecKeyRef pub_key_leaf = SecTrustCopyPublicKey(trust); 
NSLog(@"%@",pub_key_leaf); 

但如何從文件創建私有密鑰?

這裏是一些相關的代碼來創建一個私鑰,但我沒有得到如何使用我的私鑰文件從此創建私鑰。

https://developer.apple.com/library/mac/#documentation/security/conceptual/CertKeyTrustProgGuide/iPhone_Tasks/iPhone_Tasks.html#//apple_ref/doc/uid/TP40001358-CH208-SW10

+0

什麼格式是你的私鑰? – 2013-04-09 16:00:50

+0

@MarcusAdams它在privatekey.pem文件中。 – 2013-04-10 07:09:48

回答

0

AFAIK有是創建一個NSData的SecPrivateKeyRef沒有簡單的方法。如果可能的話 - 你的私人&公共文件合併成一個P12:

openssl pkcs12 -export -out combined.p12 -in public.der -inform DER -inkey private... 
Password: 12345678 

,然後做

的NSDictionary *選項= [NSDictionary的dictionaryWithObjectsAndKeys: @ 「12345678」,kSecImportExportPassphrase, 零]在我不得不面對DER/PEM的情況下 - 我發現它最容易與openssl鏈接。並從那裏採取。

Dw。