Sie haben dies in zwei Aufgaben aufgeteilt:
- Converting-Zertifikat von p12 Daten
SecIdentityRef
. Mit diesem kann ich helfen
- Speichern Sie privaten Schlüssel und Zertifikatskette in Schlüsselbund - I'm struggling with this too, aber ich bin Paar Schritte voraus mit Ihnen zu vergleichen.
eine Konvertierung ausführen zu können, hier ist ein Code, ich verwende:
- (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.length!=0 ? 1 : 0),
NULL, NULL);
CFArrayRef items = NULL;
securityError = SecPKCS12Import((__bridge CFDataRef)PKCS12Data,
optionsDictionary,
&items);
if (securityError == 0) {
CFDictionaryRef identityDic = (CFDictionaryRef)CFArrayGetValueAtIndex(items, 0);
SecIdentityRef secIdentity = (SecIdentityRef)CFDictionaryGetValue(identityDic, kSecImportItemIdentity);
CFArrayRef identityCertChain = (CFArrayRef)CFDictionaryGetValue(identityDic, kSecImportItemCertChain);
securityError = [self setClientIdentity: secIdentity withCertificateChain: identityCertChain];
}
if (optionsDictionary) {
CFRelease(optionsDictionary);
}
if (items) {
CFRelease(items);
}
NSError *error = nil;
if (securityError != errSecSuccess)
{
NSDictionary *info = nil;
#if !TARGET_OS_IPHONE
NSString *errorDescription = nil;
errorDescription = (__bridge_transfer NSString *)SecCopyErrorMessageString(securityError, NULL);
if (errorDescription)
{
info = @{ NSLocalizedDescriptionKey:errorDescription };
}
#endif
error = [NSError errorWithDomain: NSOSStatusErrorDomain
code: securityError
userInfo: info];
}
return error;
}
Als ich versuchte, NSData aus dem p12-Zertifikat zu erhalten und es in dem Schlüsselbund steckt es nicht zu akzeptieren ist –
" Als ich versuchte, NSData aus dem p12-Zertifikat zu holen und es in den Schlüsselbund zu legen, akzeptiert es es nicht "gibt nicht viel Hinweis darauf, was du tatsächlich versucht hast, wie werden die Leute dir helfen, dein Problem herauszufinden? Zeigen Sie Ihren Code, beschreiben Sie den Fehler. Hilf den Menschen, dir zu helfen. – CRD