извлечь идентичность, когда я читаю nsdata из файла p12 - PullRequest
3 голосов
/ 27 июня 2011

Я могу извлечь личность, когда я читаю nsdata из файла p12 из моего пакета.

NSData *PKCS12Data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle]     pathForResource:@"sample" ofType:@"p12"]];

Но когда я сохраняю это как blob и пытаюсь создать nsdata

PKCS12 *newp12;

using NSData *PKCS12Data = [[NSData alloc] initWithBytes:&p12ptr length:length];

не удалось .... код ошибки -26275 osstatus.оба случая nsdata показывает те же самые байты .. любая проблема кодирования?пожалуйста, помогите

Я извлекаю личность, используя следующий код

securityError = SecPKCS12Import((CFDataRef)inPKCS12Data,(CFDictionaryRef)optionsDictionary,&items);

    if (securityError == 0) { 
        CFDictionaryRef myIdentityAndTrust = CFArrayGetValueAtIndex (items, 0);
        const void *tempIdentity = NULL;
        tempIdentity = CFDictionaryGetValue (myIdentityAndTrust, kSecImportItemIdentity);
        *outIdentity = (SecIdentityRef)tempIdentity;
        const void *tempTrust = NULL;
        tempTrust = CFDictionaryGetValue (myIdentityAndTrust, kSecImportItemTrust);
        *outTrust = (SecTrustRef)tempTrust;
    } else 
    {
        NSLog(@"Failed with error code %d",(int)securityError);
        return NO;
    }

1 Ответ

1 голос
/ 27 июня 2011

Это документация для метода initWithBytes:

initWithBytes: length:

Возвращает объект данных, инициализированный путем добавления к нему заданного числабайт данных, скопированных из данного буфера.

  • (id) initWithBytes: (const void *) длина байта: (NSUInteger) длина

И ваш кодделает это:

NSData *PKCS12Data = [[NSData alloc] initWithBytes:&p12ptr length:length];

Вы можете видеть, что для первого аргумента, который вы передаете в адрес p12ptr.Я делаю предположение, что эта переменная не является байтом?Что, если это не так, вы передаете неверный указатель на функцию, и NSData пытается инициализировать себя с length числом байтов из некоторого случайного расположения в пространстве памяти.

Не могли бы выпожалуйста, отправьте код, где вы объявляете p12ptr, а также где вы его инициализируете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...