logo
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline forik  
#1 Оставлено : 11 марта 2012 г. 16:23:52(UTC)
forik

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

Группы: Участники
Зарегистрирован: 26.10.2011(UTC)
Сообщений: 61

Сказал(а) «Спасибо»: 2 раз
Хотелось бы уточнить и расставить все точки над i так сказать =)
Насколько я понял, чтобы полностью проверить подпись, нужно:
1) Проверить верна ли ЭЦП математически. (Например CryptVerifyDetachedMessageSignature, CryptVerifySignature)
2) Проверить содержится ли сертификат пользователя в CRL, если нет - то все хорошо (CertFindCertificateInCRL)
3) Проверить цепочку сертификатов (вот здесь пока непонятно...)

Верно ли? Пожалуйста поправьте или добавьте, если что-то не так.
Offline Kirill Sobolev  
#2 Оставлено : 11 марта 2012 г. 16:34:03(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,729
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 175 раз в 167 постах
2) и 3) можно объединить с помощью функции CertGetCertificateChain.
Техническую поддержку оказываем тут
Наша база знаний
Offline forik  
#3 Оставлено : 11 марта 2012 г. 17:33:18(UTC)
forik

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

Группы: Участники
Зарегистрирован: 26.10.2011(UTC)
Сообщений: 61

Сказал(а) «Спасибо»: 2 раз
Спасибо, а в общем? Может быть каких-то шагов не хватает?
Offline Андрей Писарев  
#4 Оставлено : 11 марта 2012 г. 17:38:53(UTC)
Андрей Писарев

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 7,759
Мужчина
Российская Федерация

Сказал «Спасибо»: 264 раз
Поблагодарили: 1025 раз в 825 постах
forik написал:
Спасибо, а в общем? Может быть каких-то шагов не хватает?


сроки действия сертификатов :)
Offline forik  
#5 Оставлено : 12 марта 2012 г. 9:55:40(UTC)
forik

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

Группы: Участники
Зарегистрирован: 26.10.2011(UTC)
Сообщений: 61

Сказал(а) «Спасибо»: 2 раз
Андрей * написал:
сроки действия сертификатов :)

А ну разумеется )
Offline Kirill Sobolev  
#6 Оставлено : 12 марта 2012 г. 10:00:40(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,729
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 175 раз в 167 постах
forik написал:
Андрей * написал:
сроки действия сертификатов :)

А ну разумеется )

Это также входит в функционал CertGetCertificateChain
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Писарев  
#7 Оставлено : 12 марта 2012 г. 10:40:52(UTC)
Андрей Писарев

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 7,759
Мужчина
Российская Федерация

Сказал «Спасибо»: 264 раз
Поблагодарили: 1025 раз в 825 постах
Kirill Sobolev написал:
forik написал:
Андрей * написал:
сроки действия сертификатов :)

А ну разумеется )

Это также входит в функционал CertGetCertificateChain



Anxious

Цитата:
pTime [in, optional]
A pointer to a FILETIME variable that indicates the time for which the chain is to be validated. Note that the time does not affect trust list, revocation, or root store checking. The current system time is used if NULL is passed to this parameter.

Отредактировано пользователем 12 марта 2012 г. 10:42:30(UTC)  | Причина: Не указана

Offline forik  
#8 Оставлено : 30 марта 2012 г. 9:16:10(UTC)
forik

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

Группы: Участники
Зарегистрирован: 26.10.2011(UTC)
Сообщений: 61

Сказал(а) «Спасибо»: 2 раз
Что-то непонятное. Сертификат тестовый от КриптоПро, CDP в нем есть, запрос на CRL уходит (по скрину wireshark видно) и скачивается. Но в PCCERT_CHAIN_CONTEXT пусто (скрин VS). Так и должно быть?
Пользователь forik прикрепил следующие файлы:
crlresponse.png (120kb) загружен 218 раз(а).
crlenroll.png (68kb) загружен 220 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Offline Kirill Sobolev  
#9 Оставлено : 30 марта 2012 г. 12:08:48(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,729
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 175 раз в 167 постах
В dwErrorStatus - CERT_TRUST_REVOCATION_STATUS_UNKNOWN | CERT_TRUST_IS_OFFLINE_REVOCATION.
Поэтому CRL и нет.
Техническую поддержку оказываем тут
Наша база знаний
Offline forik  
#10 Оставлено : 30 марта 2012 г. 14:39:37(UTC)
forik

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

Группы: Участники
Зарегистрирован: 26.10.2011(UTC)
Сообщений: 61

Сказал(а) «Спасибо»: 2 раз
Так скачался же...
Offline Kirill Sobolev  
#11 Оставлено : 30 марта 2012 г. 15:50:43(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,729
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 175 раз в 167 постах
Попробуйте локально в хранилище установить.
Техническую поддержку оказываем тут
Наша база знаний
Offline forik  
#12 Оставлено : 31 марта 2012 г. 11:02:36(UTC)
forik

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

Группы: Участники
Зарегистрирован: 26.10.2011(UTC)
Сообщений: 61

Сказал(а) «Спасибо»: 2 раз
Kirill Sobolev написал:
Попробуйте локально в хранилище установить.

Подскажите, если не сложно, как ограничить проверку по CRL локальным хранилищем? Пробовал hRestrictedOther - все равно в сеть лезет.
Offline Kirill Sobolev  
#13 Оставлено : 2 апреля 2012 г. 10:51:38(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,729
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 175 раз в 167 постах
Флаг CERT_CHAIN_REVOCATION_CHECK_CACHE_ONLY должен помочь.
Техническую поддержку оказываем тут
Наша база знаний
Offline PavelK  
#14 Оставлено : 6 апреля 2012 г. 14:13:49(UTC)
PavelK

Статус: Участник

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

Kirill Sobolev написал:
2) и 3) можно объединить с помощью функции CertGetCertificateChain.


А какая функция в CAPICOM выполняет проверки 2) и 3) ?
Подскажите, плиз... Там есть verify, chain.Build, cert.IsValid.CheckFlag и что каким проверкам соответствует в MSDN очень туманно описано.
Offline Kirill Sobolev  
#15 Оставлено : 6 апреля 2012 г. 15:48:04(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,729
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 175 раз в 167 постах
SignedData.Verify проверяет сообщение PKCS#7 а Chain.Build строит цепочку для сертификата, используя CertificateStatus.CheckFlag.
Так что для 2) и 3) нужно использовать Chain.Build.
Техническую поддержку оказываем тут
Наша база знаний
Offline PavelK  
#16 Оставлено : 6 апреля 2012 г. 16:28:19(UTC)
PavelK

Статус: Участник

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

Спасибо за ответ!
Offline Boris@Serezhkin.com  
#17 Оставлено : 22 марта 2013 г. 15:46:09(UTC)
Boris@Serezhkin.com

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 10 раз в 9 постах
Очень тема - "в тему".
Подскажите как вытащить атрибуты подписей
Аналогично CAPICOM-у ?

Среда - Дельфи. Проверка - Ок, Получаю хранилище подписантов,
А кто когда подписал и зачем? Очень хочется узнать.
Навернно CertEnumCertificateContextProperties?
только какое PropId ?
Offline Kirill Sobolev  
#18 Оставлено : 25 марта 2013 г. 6:00:26(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,729
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 175 раз в 167 постах
Нет.
CryptMsgGetParam
с CMSG_SIGNER_AUTH_ATTR_PARAM или CMSG_SIGNER_UNAUTH_ATTR_PARAM.
Техническую поддержку оказываем тут
Наша база знаний
Offline Boris@Serezhkin.com  
#19 Оставлено : 25 марта 2013 г. 15:12:14(UTC)
Boris@Serezhkin.com

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 10 раз в 9 постах
Ну вот, только собрался обойтись малой кровью,
Так опять надо вглыбЬ лезть.

Получаем число подписантов
....
CryptMsgGetParam(hMsg, CMSG_SIGNER_COUNT_PARAM, 0, xTmp.pbData, xTmp.cbData);
cnts := pLongInt(xTmp.pbdata)^;
cnts = 3 и это правильно.
Читаем
for j := 0 to cnts-1 do
begin
CryptMsgGetParam(hMsg, CMSG_SIGNER_INFO_PARAM, 0, nil, xTmp.cbData);
CryptMsgGetParam(hMsg, CMSG_SIGNER_INFO_PARAM, 0, @arMsgSi[j], xTmp.cbData);
end;

0,1,2 - arMsgSi[j].UnauthAttrs = (0,nil)
0,1,2 - arMsgSi[j].AuthAttrs = (0,nil)

Заходим с другого бока
for j := 0 to cnts-1 do
begin
alog.W(inttostr(j));
CryptMsgGetParam(hMsg, CMSG_SIGNER_unAUTH_ATTR_PARAM, 0, nil, cbData);
if cbData>0 then
чтой-то там интересное
end;
cbData по нулям и для unAUTH и для AUTH
ну и напоследок:
CryptMsgGetParam(hMsg, CMSG_UNPROTECTED_ATTR_PARAM, 0, nil, cbData);
также =0

Однако КриптоАрм активно показывает время каждой подписи.
Извечно русский вопрос: ЧТО ДЕЛАТЬ?

Звиняйте добавлю - специальных действий по добавлению время подписи не предпринимаю,
само получается Drool .
На бэйсике через CAPICOM было также...

Отредактировано пользователем 25 марта 2013 г. 15:17:41(UTC)  | Причина: Уточнение

Offline Андрей Писарев  
#20 Оставлено : 25 марта 2013 г. 15:18:44(UTC)
Андрей Писарев

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 7,759
Мужчина
Российская Федерация

Сказал «Спасибо»: 264 раз
Поблагодарили: 1025 раз в 825 постах
Время каждой подписи в CMSG_SIGNER_AUTH_ATTR_PARAM
thanks 1 пользователь поблагодарил Андрей Писарев за этот пост.
clipper оставлено 30.09.2018(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.