gpt4 book ai didi

iphone - 在 Objective-C 中以编程方式创建 .pem 文件?

转载 作者:搜寻专家 更新时间:2023-10-30 20:06:01 25 4
gpt4 key购买 nike

我正在尝试使用 iPhone 应用程序中的 Objective-C 和 OpenSSL 库从证书签名请求以编程方式创建 PEM 文件。我按照 Adria Navarro 对这个问题的回答生成了 CSR(X509_REQ * 类型):

Generating an OpenSSL Certificate Signing Request in iOS with Keychain stored keys

我已通过将 CSR 打印到控制台来确认 CSR 有效。

下面是我创建 PEM 文件 (CertificateSigningRequest.pem) 的代码。它最终创建了一个空白文件(0 字节且无文本)。我是不是做错了什么,以至于它无法通过 PEM_write_X509_REQ 写入文件? (请注意,我正在通过管理器下载应用程序文件夹来检查文件。)

在此先感谢您提供的任何帮助,如果我需要提供更多信息,请告诉我。

- (void)createPemFileWithCertificateSigningRequest:(X509_REQ *)certSigningRequest
{
//delete existing PEM file if there is one
[self deletePemFile];

//create empty PEM file
NSString *pemFilePath = [self pemFilePath];
if (![[NSFileManager defaultManager] createFileAtPath:pemFilePath contents:nil attributes:nil])
{
NSLog(@"Error creating file for PEM");
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error creating file for PEM" message:[NSString stringWithFormat:@"Could not create file at the following location:\n\n%@", pemFilePath] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];
return;
}

//get a FILE struct for the PEM file
NSFileHandle *outputFileHandle = [NSFileHandle fileHandleForWritingAtPath:pemFilePath];
FILE *pemFile = fdopen([outputFileHandle fileDescriptor], "w");

//write the CSR to the PEM file
PEM_write_X509_REQ(pemFile, certSigningRequest);
}

- (NSString *)pemFilePath
{
NSString *documentsFolder = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
return [documentsFolder stringByAppendingPathComponent:@"CertificateSigningRequest.pem"];
}

最佳答案

原来我的问题是我没有在写入文件后关闭它。将最后一行添加到此方法就可以了。

- (void)createPemFileWithCertificateSigningRequest:(X509_REQ *)certSigningRequest
{
//...

//write the CSR to the PEM file
PEM_write_X509_REQ(pemFile, certSigningRequest);

//close the file
fclose(pemFile); //THIS MAKES EVERYTHING WORK =)
}

关于iphone - 在 Objective-C 中以编程方式创建 .pem 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14741512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com