Как правильно импортировать допустимый файл p12 с помощью SecPKCS12Import

Я решил свою предыдущую проблему с преобразованием закрытого ключа XML RSA в файл PEM, но столкнулся с другой проблемой: я получаю нулевые данные при импорте закрытого ключа P12. Ниже приведены мои шаги:

  1. Преобразование файла PEM в файл P12

    openssl> pkcs12 -export -in rsa.pem -inkey rsa.pem -out rsa.p12 -nocerts
    
  2. Чтение файла P12 в проект iOS

    NSString *path = [[NSBundle bundleForClass:[self class]]
    pathForResource:@"MyPrivateKey" ofType:@"p12"];
    NSData *p12data = [NSData dataWithContentsOfFile:путь];
    если (![self getPrivateKeyRef])
    RSAPrivateKey = getPrivateKeywithRawKey(p12data);
    
  3. Импорт закрытого ключа 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

11
задан MrTJ 5 April 2012 в 12:55
поделиться