Я решил свою предыдущую проблему с преобразованием закрытого ключа XML RSA в файл PEM, но столкнулся с другой проблемой: я получаю нулевые данные при импорте закрытого ключа P12. Ниже приведены мои шаги:
Преобразование файла PEM в файл P12
openssl> pkcs12 -export -in rsa.pem -inkey rsa.pem -out rsa.p12 -nocerts
Чтение файла P12 в проект iOS
NSString *path = [[NSBundle bundleForClass:[self class]]
pathForResource:@"MyPrivateKey" ofType:@"p12"];
NSData *p12data = [NSData dataWithContentsOfFile:путь];
если (![self getPrivateKeyRef])
RSAPrivateKey = getPrivateKeywithRawKey(p12data);
Импорт закрытого ключа P12
SecKeyRef getPrivateKeywithRawKey(NSData *pfxkeydata)
{
NSMutableDictionary * options = [[[NSMutableDictionary alloc] init] autorelease];
// Установить словарь запросов с открытым ключом
// меняем на свой .pfx пароль здесь
[параметры setObject:@"MyPassword" forKey:(id)kSecImportExportPassphrase];
Элементы CFArrayRef = CFArrayCreate(NULL, 0, 0, NULL);
OSStatus securityError = SecPKCS12Import((CFDataRef) pfxkeydata,
(CFDictionaryRef)параметры, &элементы);
CFDictionaryRef identityDict = CFArrayGetValueAtIndex(items, 0);
SecIdentityRef identityApp =
(SecIdentityRef)CFDictionaryGetValue(identityDict,
kSecImportItemIdentity);
//NSLog(@"%@", securityError);
утверждать(securityError == noErr);
SecKeyRef privateKeyRef;
SecIdentityCopyPrivateKey(identityApp, &privateKeyRef);
вернуть privateKeyRef;
}
Думал, что ошибки не было (значение OSStatus равно 0), но массив элементов не получил никаких идентификационных данных. Мне интересно, не получил ли я правильный формат файла p12 из-за неправильного использования OpenSSl. Кто-нибудь успешно импортировал файл p12? Я застрял в этой проблеме на пару дней, пожалуйста, дайте мне совет, если у вас есть подсказки, спасибо!
Hubert