如何从目标C中的文件创build私钥?

我已经创build了这样的公钥:

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); 

但是如何从文件创build私钥?

这里有一些相关的代码来创build一个私钥,但我没有得到如何使用我的私钥文件创build私钥。

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

AFAIK没有简单的方法来从NSData创build一个SecPrivateKeyRef。 如果可能的话 – 将您的私人和公共文件合并到一个p12:

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

然后呢

NSDictionary * options = [NSDictionary dictionaryWithObjectsAndKeys:@“12345678”,kSecImportExportPassphrase,nil];

 OSStatus status = SecPKCS12Import((__bridge CFDataRef)pkcs12derAsData, (__bridge CFDictionaryRef)options, &items); 

在我不得不面对DER / PEM的情况下,我发现最简单的方式就是与openssl联系。 并从那里拿走。

DW。

我有同样的问题,事实certificate你需要使用一个p12文件导入私钥。

看到我的答案在这里https://stackoverflow.com/a/17295321/480467