2013-04-09 52 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。