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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline kkrupovich  
#1 Оставлено : 25 июня 2012 г. 15:08:44(UTC)
kkrupovich

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

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

Добрый день.

В процессе разработки приложения для iOS столкнулись с проблемой приведения даты выпуска полученного пользователем сертификата из формата FILETIME (два сегмента по 32 бита) в какой-либо подходящий для дальнейших преобразований формат (например, timestamp в миллисекундах с 1970 года).
Подскажите, включает ли фреймворк для iOS метод для данного преобразования, либо какой-либо другой метод, который можно использовать для извлечения даты выпуска сертификата?

С уважением,
Константин

PS:
FileTimeToSystemTime(<#const FILETIME *lpFileTime#>, <#LPSYSTEMTIME lpSystemTime#>) входящий в CSP_WinBase.h отсутствует в архитектуре arm7
Offline D-luzin  
#2 Оставлено : 25 июня 2012 г. 17:18:55(UTC)
D-luzin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 21.02.2012(UTC)
Сообщений: 32
Откуда: Пермь

Сказал(а) «Спасибо»: 1 раз
Зато есть CSP_FileTimeToSystemTime(<#const FILETIME *lpFileTime#>, <#LPSYSTEMTIME lpSystemTime#>)
Offline Татьяна  
#3 Оставлено : 25 июня 2012 г. 17:54:12(UTC)
Татьяна

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

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

Поблагодарили: 40 раз в 37 постах
Совершенно верно, из-за некоторых особенностей архитектуры (если кому-то важно каких -- расскажу подробнее), мы не можем экспортировать фукнции с именами FileTimeToSystemTime, SystemTimeToFileTime и некоторыми другими. Они доступны с префикском CSP_ .
Татьяна
ООО Крипто-Про
Offline kkrupovich  
#4 Оставлено : 25 июня 2012 г. 18:30:33(UTC)
kkrupovich

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

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

А с какой версии фреймворка доступны эти функции? В установленной с сайта последней версии я не нашел сигнатуры CSP_FileTimeToSystemTime ни в одном файле. Мы точно говорим о версии фреймворка для iOS?
Offline Татьяна  
#5 Оставлено : 25 июня 2012 г. 18:45:30(UTC)
Татьяна

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

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

Поблагодарили: 40 раз в 37 постах
#define GetLastError CSP_GetLastError
#define SetLastError CSP_SetLastError
#define FileTimeToSystemTime CSP_FileTimeToSystemTime
#define SystemTimeToFileTime CSP_SystemTimeToFileTime

пожалуй, включу это в свежие версии CPROCSP.h

Причина примерно такая:
На ios всё линкуется статически. В некоторых популярных библиотеках есть функции с такими именами, а символы дублироваться не должны. Поэтому у нас после сборки фреймворка заменяются имена символов, чтобы избежать таких конфликтов.
Внутри нашей сборки и соответственно внутри хедеров фукнции имеют обычные имена, подмена имени происходит уже в готовой библиотеке (в противном случае, будет кошмар из ifdef IOS).
Татьяна
ООО Крипто-Про
Offline kkrupovich  
#6 Оставлено : 25 июня 2012 г. 19:32:58(UTC)
kkrupovich

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

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

Окей. Спасибо, с подключением разобрались.
Был бы очень благодарен (и, думаю, не я один :) за пример кода, использующий FileTimeToSystemTime. Желательно с объявлением переменных.
Код:

    FILETIME *certTime = &(pSignerCertContext->pCertInfo->NotBefore);    
    LPSYSTEMTIME *systemTime;
    
    if (FileTimeToSystemTime(certTime, *systemTime)){
        NSLog(@"Время конвертировано");
    }

Валится с EX_BAD_ACCESS на вызове FileTimeToSystemTime
Offline Татьяна  
#7 Оставлено : 26 июня 2012 г. 13:05:00(UTC)
Татьяна

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

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

Поблагодарили: 40 раз в 37 постах
у меня работает:
Код:

SYSTEMTIME SysTime1,SysTime2;
if(FileTimeToSystemTime(&pCert->pCertInfo->NotBefore,&SysTime1)&&FileTimeToSystemTime(&pCert->pCertInfo->NotAfter,&SysTime2))
{
    бла-бла-бла
}


пришлите проект на kondakova at cryptopro.ru
Татьяна
ООО Крипто-Про
Offline kkrupovich  
#8 Оставлено : 26 июня 2012 г. 13:14:48(UTC)
kkrupovich

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

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

Сегодня все вызовы удалось сформировать, так что вопрос решен, спасибо!
Но за пример спасибо отдельное :)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.