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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Devillio  
#1 Оставлено : 27 мая 2018 г. 21:11:00(UTC)
Devillio

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

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

Сказал(а) «Спасибо»: 3 раз
Добрый день!
ПО позволяет подписать документ одной подписью. В БД хранятся эти sig-файлы, созданные разными пользователями к одному документу.
Можно ли объединить эти подписи в один sig-файл?
Если я правильно понял (помогли на другом оч уважаемом форуме), то соподпись делается через
CryptMsgControl(hMsg, 0, CMSG_CTRL_ADD_SIGNER, @SignerEncodeInfo)
где SignerEncodeInfo: CMSG_SIGNER_ENCODE_INFO;
Проблемой (для меня) стало получение этой структуры из готовой сохраненной подписи - возможно ли это?
Я сделал так:
Получаю CERT_INFO сохраненной подписи через CryptVerifyDetachedMessageSignature, потом делаю так:
SignerEncodeInfo.cbSize := SizeOf(SignerEncodeInfo);
SignerEncodeInfo.pCertInfo := ACert.pCertInfo;
SignerEncodeInfo.hCryptProv := 0;
SignerEncodeInfo.dwKeySpec := 0;
SignerEncodeInfo.HashAlgorithm.pszObjId := MyHashAlgorithm;
SignerEncodeInfo.pvHashAuxInfo := nil;
SignerEncodeInfo.cAuthAttr := 0;
SignerEncodeInfo.rgAuthAttr := nil;
SignerEncodeInfo.cUnauthAttr := 0;
SignerEncodeInfo.rgUnauthAttr := nil;

CryptMsgControl(hMsg, 0, CMSG_CTRL_ADD_SIGNER, @SignerEncodeInfo) вываливается "неизвестный криптографический алгоритм".
MyHashAlgorithm это szOID_OIWSEC_sha1, но пробовал и некоторые другие.
Подскажите, как эту задачу решить?
Спасибо!
Offline Devillio  
#2 Оставлено : 30 мая 2018 г. 11:18:01(UTC)
Devillio

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

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

Сказал(а) «Спасибо»: 3 раз
Уважаемые господа, подскажите, что я делаю не так?
Вот такая в итоге получилась процедура:

CryptMsgControl(hMsg, 0, CMSG_CTRL_ADD_SIGNER, @SignerEncodeInfo) возвращает "неизвестный криптографический алгоритм" все время ((
Направьте на ошибку, будьте добры!
Offline Андрей Писарев  
#3 Оставлено : 30 мая 2018 г. 12:34:01(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2044 раз в 1585 постах
Здравствуйте.

Код:
 SignerEncodeInfo.HashAlgorithm.pszObjId := ACertContext.pCertInfo.SignatureAlgorithm.pszObjId; // szOID_CP_GOST_R3411 = '1.2.643.2.2.9';


OID хеша не может быть равен OID алгоритма подписи.

Если ГОСТ-2001 то:
HashAlgorithm.pszObjId := szOID_CP_GOST_R3411
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Devillio оставлено 04.06.2018(UTC)
Offline Devillio  
#4 Оставлено : 30 мая 2018 г. 14:11:24(UTC)
Devillio

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

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

Сказал(а) «Спасибо»: 3 раз
Благодарю за отзыв!

Поменял так
Код:
    SignerEncodeInfo.HashAlgorithm.pszObjId := szOID_CP_GOST_R3411; //ACertContext.pCertInfo.SignatureAlgorithm.pszObjId; // szOID_CP_GOST_R3411 = '1.2.643.2.2.9';

(и правда, в ACertContext.pCertInfo.SignatureAlgorithm.pszObjId было 1.2.643.2.2.3)

Ошибка сохранилась Brick wall
Offline Андрей Писарев  
#5 Оставлено : 30 мая 2018 г. 18:50:54(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2044 раз в 1585 постах
Часть переменных - не используется\удалено из примера - почистить.


Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Devillio оставлено 03.06.2018(UTC)
Offline Devillio  
#6 Оставлено : 3 июня 2018 г. 21:35:58(UTC)
Devillio

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

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

Сказал(а) «Спасибо»: 3 раз
Андрей, благодарю, ваша процедура работает!
Просто убрал "не нужное для моей задачи" из вашей и все пошло.
Подскажите два момента?
1. Обязательно ли надо сохранять цепочку сертификатов до root внутри sig-файла?
2. Почему вы два раза проходите CryptMsgUpdate? Для sig файла и потом для самого подписываемого файла. Вроде бы работает если только sig в криптограф. сообщение подгружать. Так не правильно?
Sig-файл вроде бы проверяется и без этого (на крипто-про/verify, например)

Еще раз большое спасибо!
Offline Devillio  
#7 Оставлено : 3 июня 2018 г. 22:42:02(UTC)
Devillio

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

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

Сказал(а) «Спасибо»: 3 раз
Омг.. Не работало, т.к. приложение было х64. А шо, так нельзя?! ))
Исправил на х86, и моя тоже пошла без бубнов..
Не беда, в принципе, но а если будет нужна х64?
Offline Андрей Писарев  
#8 Оставлено : 4 июня 2018 г. 0:58:06(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2044 раз в 1585 постах
Автор: Devillio Перейти к цитате
Андрей, благодарю, ваша процедура работает!
Просто убрал "не нужное для моей задачи" из вашей и все пошло.
Подскажите два момента?
1. Обязательно ли надо сохранять цепочку сертификатов до root внутри sig-файла?
2. Почему вы два раза проходите CryptMsgUpdate? Для sig файла и потом для самого подписываемого файла. Вроде бы работает если только sig в криптограф. сообщение подгружать. Так не правильно?
Sig-файл вроде бы проверяется и без этого (на крипто-про/verify, например)

Еще раз большое спасибо!


1. Зависит от требований, достаточно сертификатов подписантов
2. Там есть условие - if DetachedSig
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Devillio оставлено 04.06.2018(UTC)
Offline Devillio  
#9 Оставлено : 4 июня 2018 г. 8:19:04(UTC)
Devillio

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

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

Сказал(а) «Спасибо»: 3 раз
Видел, конечно, if Detached, тогда там не хватает else или еще одного if )) В случае DetchedSig = true подкрепляет в сообщение оба файла.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.