Статус: Участник
Группы: Участники
Зарегистрирован: 25.10.2013(UTC) Сообщений: 12  Сказал(а) «Спасибо»: 4 раз
|
Цитата:Проверка завершена успешно ошибок не обнаружено Контейнер закрытого ключа пользователя имя TTT уникальное имя REGISTRY\\TTT FQCN \\.\REGISTRY\TTT проверка целостности контейнера успешно Ключ обмена доступен длина ключа 512 бит экспорт открытого ключа успешно вычисление открытого ключа успешно импорт открытого ключа успешно подпись успешно проверка успешно создание ключа обмена успешно экспорт ключа запрещен алгоритм ГОСТ Р 34.10-2001 DH ГОСТ Р 34.10-2001, параметры обмена по умолчанию ГОСТ Р 34.11-94, параметры по умолчанию ГОСТ 28147-89, параметры по умолчанию сертификат в контейнере отсутствует Срок действия закрытого ключа 12 декабря 2018 г. 21:33:06 Использование ключа обмена разрешено до окончания срока действия закрытого ключа. Ключ подписи отсутствует загрузка ключей успешно Версия контейнера 2 Расширения контейнера некритическое Расширение контейнера КриптоПро CSP. Срок действия ключа обмена действителен по 12 декабря 2018 г. 21:33:06
Вот эти значения можно достать через CryptoAPI ? подглядел в свежий WinCryptEx.h, там есть KP_START_DATE и KP_END_DATE, но при попытке Код:CryptGetKeyParam(hKey, KP_START_DATE, x, &dwBufSize,0)
оно возвращает NTE_BAD_TYPE 0x8009000A [Указан неправильный тип.]
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Можно. Нужно перечислить расширения контейнера через GetProvParam(PP_ENUM_CONTAINER_EXTENSION). OID сроков действия ключей можно взять из WinCryptEx.h. Код:#define szOID_CryptoPro_private_keys_extension_container_signature_key_usage_period "1.2.643.2.2.37.3.9"
#define szOID_CryptoPro_private_keys_extension_container_exchange_key_usage_period "1.2.643.2.2.37.3.10"
|
|
 1 пользователь поблагодарил Кирилл Соболев за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.10.2013(UTC) Сообщений: 12  Сказал(а) «Спасибо»: 4 раз
|
Там вернулся такой блоб: Код:
00 00 00 00 13 00 00 00 30 11 81 0F 32 30 31 38 | ........0...2018
31 32 31 32 31 38 33 33 30 36 5A 31 2E 32 2E 36 | 1212183306Z1.2.6
34 33 2E 32 2E 32 2E 33 37 2E 33 2E 31 30 00 | 43.2.2.37.3.10.
Я хитрым взглядом могу его распарсить, например так: Код:
DWORD dwZero; // 0x0
DWORD dwSize; // 0x13 = 19 байт
CHAR Value[dwSize]; // "20181212183306Z" // YYYYMMDDHHmmSSZ UTC Time ?
CHAR szOID[]; // 1.2.643.2.2.37.3.10
нашёл. Код:
typedef struct _CONTAINER_EXTENSION {
BOOL bCritical; /*!< Флаг критического расширения. */
DWORD cbExtension; /*!< Длина данных в pbExtension. */
BYTE pbExtension[1]; /*!< Данные. */
char sOid[1]; /*!< Строка с OID-ом расширения (невыровненный указатель). */
} CONTAINER_EXTENSION;
Отредактировано пользователем 12 сентября 2017 г. 16:17:53(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
|
|
 1 пользователь поблагодарил Кирилл Соболев за этот пост.
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 09.11.2012(UTC) Сообщений: 65 Откуда: Ростовская область
Сказал(а) «Спасибо»: 9 раз Поблагодарили: 1 раз в 1 постах
|
Как декодировать такое расширение? попробовал CryptDecodeObject(szOID_CryptoPro_private_keys_extension_container_exchange_key_usage_period) отрабатывает без ошибок, но что возвращает непонятно.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 09.11.2012(UTC) Сообщений: 65 Откуда: Ростовская область
Сказал(а) «Спасибо»: 9 раз Поблагодарили: 1 раз в 1 постах
|
Методом тыка ). получилось так: CryptDecodeObject(szCPGUID_PRIVATEKEY_USAGE_PERIOD_Encode) в полученных данных дата в PCPCERT_PRIVATEKEY_USAGE_PERIOD.pNotAfter жаль что в расширение не записывается pNotBefore. дата формирования ключа не лишняя информация. Отредактировано пользователем 8 октября 2018 г. 15:42:33(UTC)
| Причина: Не указана
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602  Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 396 раз в 366 постах
|
Цитата:жаль что в расширение не записывается pNotBefore. дата формирования ключа не лишняя информация. Соглашусь, у зарубежных УЦ есть ограничение действия ключа именно с момента формирования ключевой пары. До момента этого ограничения разрешается перевыпускать новый сертификат на тот же ключ. В отечественной криптографии как правило УЦ не предусматривает возможности перевыпуска сертификата на тот же ключ, так что знание даты не так необходимо. Так, УЦ ФК насколько помню отзывает ранее выпущенный сертификат и отклоняет запрос на сертификат если открытый ключ в запросе совпал со открытым ключом ранее выпущенного сертификата этим же УЦ. Насколько понимаю, на текущий момент расширение контейнера не переносится при создании нового контейнера и это помогает решить проблемы с сертификатами, выданными более чем на 1 год и 3 месяца, контейнеры которых на съемных носителях или в реестре. По такой логике в NotBefore была бы не дата формирования ключа, а дата формирования контейнера. Кроме того, даты в контейнере проставляются по локальному времени компьютера, то есть ими легко манипулировать изменив дату на компьютере при пересоздании контейнера. Обычно достаточно отсчитать назад 1 год 3 месяца от NotAfter, чтобы получить дату формирования контейнера. Ну и конечно дата формирования ключа раньше чем выпуск сертификата, поэтому косвенно можно предположить дату формирования ключа из 2 полученных дат (выпуска сертификата и формирования контейнера). Например, в качестве "первого приближения" взять самую раннюю из них.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 09.11.2012(UTC) Сообщений: 65 Откуда: Ростовская область
Сказал(а) «Спасибо»: 9 раз Поблагодарили: 1 раз в 1 постах
|
чтобы получить NotBefore от NotAfter(срока действия ключа)надо знать, чего там прибавили к текущей дате, при формировании ключа. думаю (по календарю): дата форм. ключа 09.10.2018 09:57:47(NotBefore) + 1г. 3м. = 09.01.2020 09:57:47(NotAfter) на самом деле получилось: дата форм. ключа 09.10.2018 09:57:47(NotBefore) + 1г. 3м. = 08.01.2020 15:57:47(NotAfter) получается прибавили 456 дней(проверял на нескольких контейнерах), а время почему +6 часов? так надо? или перевели неправильно текущую дату в Filetime, при сохранении контейнера?
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602  Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 396 раз в 366 постах
|
Полагаю что да, прибавляется фиксированное количество дней, а не календарными функциями DateAdd("1 year").DateAdd("3 month"). Скорее всего переведено неверно. Ну, дату стартовую 09.10.2018 09:57:47 Вы же заметили сами, а не получили из функций? Отображение Filetime очень зависит от текущего часового пояса и флага "летнего времени" (не у всех стоят последние обновления часовых поясов), одна из функций (например, при создании контейнера) может брать время UTC, вторая при декодировании (или при отображении полученного декодированного результата в Вашей программе) использовать текущий часовой пояс, например UTC+6. Или наоборот - при генерации бралось текущее, а при декодировании было воспринято как UTC и были прибавлен сдвиг часового пояса еще раз. Чтобы узнать наверняка надо просто вытащить необработанное значение времени и пересчитать в видимую дату вручную. Filetime это 64-битное значение, отсчитывается от 1 января 1601 года 0:00 UTC 100-наносекундными интервалами (за секунду значение увеличивается на 10 миллионов). Попробую на досуге проверить сколько у меня разница.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 19.09.2019(UTC) Сообщений: 15  Откуда: Москва Сказал(а) «Спасибо»: 4 раз
|
Коллеги, подскажите, а как быть если расширения контейнера с приведенными выше oid не проставлены? Тестирование контейнера каким-то образом достает данные по срокам действия ключа и при таком случае (  ). Отредактировано пользователем 10 февраля 2021 г. 15:17:18(UTC)
| Причина: Не указана
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close