【发布时间】:2012-03-14 10:57:15
【问题描述】:
我想在 iOS 应用程序中以编程方式创建证书。我能找到的最接近的 API 是 SecCertificateCreateWithData,它需要 DER 编码的二进制输入。
鉴于我拥有作为运行时对象所需的所有数据,我该如何构造 DER 编码的二进制数据输入?
【问题讨论】:
我想在 iOS 应用程序中以编程方式创建证书。我能找到的最接近的 API 是 SecCertificateCreateWithData,它需要 DER 编码的二进制输入。
鉴于我拥有作为运行时对象所需的所有数据,我该如何构造 DER 编码的二进制数据输入?
【问题讨论】:
这是怎么做的:
NSString* certPath = [[NSBundle mainBundle] pathForResource:@"myCertificate" ofType:@"cer"];
NSData* certData = [NSData dataWithContentsOfFile:certPath];
SecCertificateRef cert;
if( [certData length] ) {
cert = SecCertificateCreateWithData(NULL, (__bridge CFDataRef)certData);
if( cert != NULL ) {
CFStringRef certSummary = SecCertificateCopySubjectSummary(cert);
NSString* summaryString = [[NSString alloc] initWithString:(__bridge NSString*)certSummary];
NSLog(@"CERT SUMMARY: %@", summaryString);
CFRelease(certSummary);
} else {
NSLog(@" *** ERROR *** trying to create the SSL certificate from data located at %@, but failed", certPath);
}
}
// play with cert here
myCertificate.cer 必须在您的应用程序包中。我用 openssl 创建了 cer 文件。如果您打算在 iOS 应用程序中使用它,请确保您的证书包含所需的扩展,检查 here。尽管答案是 -1,但它帮助我完成了这项工作。
【讨论】:
看看 SecKeyGeneratePair 我想这就是你要找的。p>
【讨论】: