Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход. Новые регистрации запрещены.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline mogol  
#1 Оставлено : 18 декабря 2012 г. 17:04:43(UTC)
mogol

Статус: Новичок

Группы: Участники
Зарегистрирован: 28.11.2012(UTC)
Сообщений: 3
Откуда: Москва

Натолкнулся на такую проблему. Есть метод
Цитата:
- (void) loadRootCertificates{

NSString *basePath = [[NSBundle mainBundle] resourcePath];
NSError * error;
NSArray * directoryContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:basePath error:&error];
for (NSString *file in directoryContents) {
if ([file hasSuffix:@".cer"]){
NSLog(@"Certificate %@", file);

NSData *cert = [NSData dataWithContentsOfFile:[basePath stringByAppendingPathComponent:file]];
if (FCSP_SUCCESS == add_encoded_cert_to_store((BYTE*)[cert bytes], [cert length], "ROOT"))
NSLog(@"...added.");
else
NSLog(@"...adding failed.");
}
}
}


После вызова add_encoded_cert_to_store ломается NSLog - перестает что-либо выводить

Цитата:
DWORD add_encoded_cert_to_store(BYTE *pbEncodedCert, DWORD cbCertEncodedSize, char *psStoreName)
{
PCCERT_CONTEXT certContext = CertCreateCertificateContext(ENCODING_TYPES, pbEncodedCert, cbCertEncodedSize);
if (!certContext){
return FCSP_FAILED;
}
HCRYPTPROV hCryptProv = 0;
// Получение дескриптора криптографического провайдера.
if(!CryptAcquireContext(
&hCryptProv, // Адрес возврашаемого дескриптора.
0, // Используется имя текущего зарегестрированного пользователя.
NULL, // Используется провайдер по умолчанию.
PROV_GOST_2001_DH, // Необходимо для зашифрования и подписи.
CRYPT_VERIFYCONTEXT)) // Никакие флаги не нужны.
{
printf("Cryptographic context could not be acquired.");
}

HCERTSTORE hStore = CertOpenSystemStore(hCryptProv, psStoreName);

if (!hStore){
return FCSP_FAILED;
}
if (!CertAddCertificateContextToStore(hStore, certContext, CERT_STORE_ADD_USE_EXISTING, NULL)){
return FCSP_FAILED;
}

if (!CertCloseStore(hStore, CERT_CLOSE_STORE_FORCE_FLAG)){
return FCSP_FAILED;
}
return FCSP_SUCCESS;
}

Конкретнее, после CertOpenSystemStore
Offline Татьяна  
#2 Оставлено : 18 декабря 2012 г. 18:52:10(UTC)
Татьяна

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.02.2008(UTC)
Сообщений: 1,491
Откуда: Крипто-Про

Поблагодарили: 40 раз в 37 постах
Здравствуйте.
Я попробовала воспроизвести на нескольких машинах в различных конфигурациях (mac os 10.6, mac os 10.8, xcode 3.x, xcode 4.2, ios sdk 4.2, ios sdk 5.1, ios sdk 6.0, разные версии нашего фреймворка), у меня после вызова CertOpenSystemStore продолжает работать nslog.

Уточните пожалуйста какую версию xcode, mac os, ios sdk и нашего фреймворка вы используете. Проблема воспроизводится только на устройстве, только на эмуляторе или и там и там? Есть ли что-то подозрительное в логах устройства (xcode - window - органайзер - ваше устройство - консоль)?
Татьяна
ООО Крипто-Про
Offline mogol  
#3 Оставлено : 19 декабря 2012 г. 17:01:58(UTC)
mogol

Статус: Новичок

Группы: Участники
Зарегистрирован: 28.11.2012(UTC)
Сообщений: 3
Откуда: Москва

Добрый день,
mac os 10.8.2
iPad 6.0 Simulator
xcode 4.5.2
ваш sdk 121118
Offline Татьяна  
#4 Оставлено : 20 декабря 2012 г. 16:39:59(UTC)
Татьяна

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.02.2008(UTC)
Сообщений: 1,491
Откуда: Крипто-Про

Поблагодарили: 40 раз в 37 постах
А на устройстве проблема воспроизводится?
Пришлите пожалуйста проект на kondakova at cryptopro.ru .
Татьяна
ООО Крипто-Про
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.