Próbowałem kilku rzeczy online i przeczytałem o tym przez wiele godzin i przeszedł przez około 20 salorami. Wszystkie z nich robią to inaczej i nie wskazują na to, co robię.

Mam mojego szczeliny jako łańcuch, zwrócony przez API. Wtedy chcę przejść do obiektu SecCertificateRef w Obj-C. Dostaję błąd mostu, próbowałem. (__bridge id)certificate i (__bridge CFStringRef)certificate. Nie ma kości. Wciąż błędy wokół typu odlewanego.

Nadal uczę się OBJ-C, a konkretnie wokół obchodzenia się z certyfikatem. Mam certyfikat jako łańcuch -----BEGIN CERTIFICATE----- MIIF4zCCA8... i chcę zapisać go w breloczku, a następnie użyć go podczas wykonywania połączeń sieciowych. Niespodziewanie, nie mogłem znaleźć żadnych opisów pomocy lub przewodników. Dziękuję Ci.

0
Ezos 19 marzec 2020, 02:30

1 odpowiedź

Najlepsza odpowiedź

Wydaje się, że nikt nie przyszedł na ratunek, więc to zrozumiałem. Prostsze niż myślałem. Skarży się z przestarzałą metodą z initWithBase64Encoding, ale próbując użyć nowej metody z fundamentu spowodowane problemami.

    NSString * s = @"-----BEGIN CERTIFICATE---- ....." // My Certificate raw string.

    NSRange r1 = [s rangeOfString:@"-----BEGIN CERTIFICATE-----"];
    NSRange r2 = [s rangeOfString:@"-----END CERTIFICATE-----"];
    NSRange rSub = NSMakeRange(r1.location + r1.length, r2.location - r1.location - r1.length);
    NSString *subCert = [s substringWithRange:rSub];

    NSData *rawCertificate = [[NSData alloc] initWithBase64Encoding:subCert];
    SecCertificateRef parsedCertificate = SecCertificateCreateWithData(NULL, (__bridge CFDataRef)rawCertificate);

    // This gave me a valid certificate I could store.
0
Ezos 19 marzec 2020, 18:27