Статус: Новичок
Группы: Участники
Зарегистрирован: 05.03.2013(UTC) Сообщений: 4  Откуда: Муром Сказал(а) «Спасибо»: 1 раз
|
Здравствуйте. Возникла такая проблема. Необходимо доподписать сообщение, при этом добавить в подпись неподписываемый строковый атрибут. Выяснил, что в структуру PCMSG_SIGNER_ENCODE_INFO есть возможность передать массив аттрибутов. Т.е. примерный java-код добавления атрибута будет представлять собой: Код:
PCMSG_SIGNER_ENCODE_INFO cosignerInfo = new PCMSG_SIGNER_ENCODE_INFO();
...
PCRYPT_ATTR_BLOB blb = new PCRYPT_ATTR_BLOB();
PCRYPT_ATTRIBUTE crAtr = new PCRYPT_ATTRIBUTE();
crAtr.pszObjId = "1.2.643.5.1.5.2.10000.1.2"; //OID добавляемого атрибута
crAtr.cValue = 1;
crAtr.rgValue = blb;
String attrValue = "test"; //Значение атрибута
//Собственно здесь необходимо заполнить blb
...
cosignerInfo.rgUnauthAttr = crAtr;
cosignerInfo.cUnauthAttr = 1;
...
Вопрос. Как правильно заполнить структуру PCRYPT_ATTR_BLOB? Просмотрел форум - нашел одну похожую тему, но ответа в ней так и не было :( ( http://www.cryptopro.ru/forum2/...aspx?g=posts&m=30992). Буду очень благодарен за примеры (подойдет любой язык) или любую другую помощь. Отредактировано пользователем 5 марта 2013 г. 19:10:39(UTC)
| Причина: Не указана
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.01.2008(UTC) Сообщений: 671   Откуда: Йошкар-Ола Сказал «Спасибо»: 3 раз Поблагодарили: 93 раз в 67 постах
|
Достаточно объемная для объяснения тема. Примерный план получения искомого: 1) CryptMsgOpenToDecode();
2) CryptMsgGetParam(...CMSG_SIGNER_INFO_PARAM...);
3) CRYPT_ATTRIBUTE caCoSigner; caCoSigner.cValue = 1; caCoSigner.pszObjId = szOID_RSA_counterSign; // Ну или что там у Вас ещё добавляется caCoSigner.rgValue = attrblobCoSigner; CryptEncodeObject(...PKCS_ATTRIBUTE...);
4) CryptMsgControl(...CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR...);
Вот как-то так. Дальше найдёте сами. Наверное :)
|
С уважением, Юрий Строжевский |
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.01.2008(UTC) Сообщений: 671   Откуда: Йошкар-Ола Сказал «Спасибо»: 3 раз Поблагодарили: 93 раз в 67 постах
|
На всякий случай поясню: "attrblobCoSigner" получается так 1) CMSG_SIGNER_INFO* pSignerInfo; 2) CryptEncodeObject(...PKCS7_SIGNER_INFO...); |
С уважением, Юрий Строжевский |
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924  Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
Здравствуйте!
Что именно вы подразумеваете под словами "доподписать сообщение"?
Создать "параллельную" подпись? То есть одни и те же данные подписывают 2 разных лица.
Или создать "заверяющую" подпись? То есть второй человек подписывает не исходные данные, а значение первой подписи.
Или вам нужно просто добавить неподписанный атрибут к существующей подписи?
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 05.03.2013(UTC) Сообщений: 4  Откуда: Муром Сказал(а) «Спасибо»: 1 раз
|
Автор: Новожилова Елена  Что именно вы подразумеваете под словами "доподписать сообщение"?
Елена, имеется ввиду создание именно параллельной подписи, т.е. одно и то же сообщение подписывается 2-мя людьми. Механизм добавления не так важен, т.е. большой разницы не имеет, добавить неподписываемый атрибут после наложения 2-ой подписи или же во время подписывания (если конечно такая возможность есть)
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924  Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 05.03.2013(UTC) Сообщений: 4  Откуда: Муром Сказал(а) «Спасибо»: 1 раз
|
Автор: Новожилова Елена  Собственно вопрос и был как раз по поводу того, какую структуру(ы) использовать для кодирования атрибута (значение атрибута представляет собой обычную ascii строку). Просмотрел описание констант для CryptEncodeObject, из наиболее подходящего нашел пару CRYPT_DATA_BLOB - X509_OCTET_STRING. Но не уверен, что это корректно. Можете подсказать что то по этому поводу? P.S. Для добавления атрибута использую функцию CryptMsgControl(CMSG_CTRL_ADD_SIGNER).
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924  Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
Почему вы считаете, что выбор OCTET_STRING для кодирования атрибута будет некорректным?
Насколько я понимаю, это ваш собственный внутренний атрибут - вам и решать, как его кодировать. Главное, чтобы принимающая сторона знала как с таким атрибутом работать.
|
 1 пользователь поблагодарил Новожилова Елена за этот пост.
|
MaCeL оставлено 15.03.2013(UTC)
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 05.03.2013(UTC) Сообщений: 4  Откуда: Муром Сказал(а) «Спасибо»: 1 раз
|
Автор: Новожилова Елена  Почему вы считаете, что выбор OCTET_STRING для кодирования атрибута будет некорректным?
Насколько я понимаю, это ваш собственный внутренний атрибут - вам и решать, как его кодировать. Главное, чтобы принимающая сторона знала как с таким атрибутом работать. Просто подумал, что существует общепринятая практика по добавлению такого рода атрибутов. Если в использовании OCTET_STRING нет ничего страшного, то пожалуй так и поступлю. Огромное спасибо.
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 18.04.2015(UTC) Сообщений: 5   Откуда: Ульяновск
|
Уважаемые профессионалы, подскажите пожалуйста, какими функциями мне далее следует пользоваться: Реализация в delphi7. Есть подпись (массив байт), полученная при подписании XML через функцию CryptSignMessage. Есть штамп времени (массив байт), полученный при отправке на TSA-сервер самой подписи через функцию CryptRetrieveTimeStamp. Требуется реализовать добавление это штампа в подпись в соответствии со спецификацией CAdES-T (ETSI TS 101 733 "CMS Advanced Electronic Signatures (CadES))
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close