Mam prywatny klucz w parametrze p12, który ma pusty zestaw passehrase. Teraz, gdy próbuję zaimportować ten klucz prywatny za pomocą SecPKCS12Import
na OS X lub iOS, mam błąd (odpowiednik w systemie Windows działa).SecPKCS12Import, gdy p12 odpowiada pustemu hasłu
- (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);
Próbowałem różnych kombinacji, gdy hasło jest puste:
optionsDictionary = NULL
optionsDictionary
bez wartościoptionsDictionary
z@""
wartości dla kluczakSecImportExportPassphrase
zawsze kończy się na securityError
nie jest równy errSecSuccess
. Odpowiednio:
securityError=-25260
"Do importu/eksportu wymagane jest hasło".securityError=-25260
"Do importu/eksportu wymagane jest hasło".securityError=-25264
"weryfikacja MAC nie powiodło się podczas PKCS12 importu (błędne hasło?)"
Teraz jestem Ok, że to nie działa. Deweloper, że p12
bez hasła jest zagrożeniem bezpieczeństwa, ale jeśli to jest powód, dla którego to nie działa, potrzebuję dokumentacji, która to stwierdza. Próbowałem do Google, że bez szczęścia do tej pory.
Próbowałem również zaimportować ten plik do aplikacji Brelok OS X z tym samym wynikiem (nieprawidłowe hasło), więc musi to być problem z SecPKCS12Import
.
A może jest jakiś sposób na przezwyciężenie tego problemu?