У меня есть закрытый ключ в p12, который имеет пустую кодовую фразу.
Теперь, когда я пытаюсь импортировать этот закрытый ключ, используя SecPKCS12Import
в OS X или iOS, у меня есть ошибка (эквивалент работы Windows).
- (NSError *)setClientIdentityCertificateFromPKCS12Data: (NSData *)PKCS12Data withPassword: (NSString *)password
{
OSStatus securityError = errSecSuccess;
const void *keys[] = { kSecImportExportPassphrase };
const void *values[] = { (__bridge CFStringRef)password };
CFDictionaryRef optionsDictionary = NULL;
optionsDictionary = CFDictionaryCreate(
NULL, keys,
values, (password?1:0),
NULL, NULL);
CFArrayRef items = NULL;
securityError = SecPKCS12Import((__bridge CFDataRef)PKCS12Data,
optionsDictionary,
&items);
Я пробовал разные комбинации, когда пароль пуст:
-
optionsDictionary = NULL
-
optionsDictionary
без значений -
optionsDictionary
с@""
значением для клавишиkSecImportExportPassphrase
Он всегда заканчивается securityError
, не равным errSecSuccess
. Соответственно:
-
securityError=-25260
"Парольная фраза требуется для импорта/экспорта". -
securityError=-25260
"Парольная фраза требуется для импорта/экспорта". -
securityError=-25264
"Ошибка MAC-аутентификации при импорте PKCS12 (неверный пароль?)"
Теперь я уверен, что это не сработает. Я не понимаю, что p12
без пароля является угрозой безопасности, но если это причина, почему она не работает, мне нужна документация, в которой говорится об этом.
Я пытался Google, что пока не повезло.
Я также попытался импортировать этот файл в приложение OS X Keychain с таким же результатом (неверный пароль), поэтому это должно быть проблемой с SecPKCS12Import
.
Или, может быть, есть способ преодолеть эту проблему?