ym88659208ym87991671
Формирование электронной подписи (ГОСТ 2012) | Документация SmartMarket
Skip to main content

Формирование электронной подписи (ГОСТ 2012)

Для обращения к ресурсу необходимо отправлять запрос на http://localhost:28016/vpnkeylocal/<SID2>/, где SID2 – идентификатор сессии, получаемый после перехода в бизнес-систему.

Подробнее о форматах запроса для:

Чтобы получить ЭП VPNKeyTLS в формате CMS необходимо:

  1. Cформировать строковую последовательность (ключевой буфер или дайджест), включающий все значимые данные документа.
  2. Определить список сертификатов, находящихся на VPNKeyTLS, методом GET_OBJ_LIST_ID (см. 7. Получить список объектов (сертификаты ЭП, TLS, корневые и УЦ)).

Параметры запроса

Параметры запросаОграничениеНазначение
id (ID_FORMAT)GET_OBJ_LIST_IDid функции
obj_type (ENUM)1 байт0 - сертификаты ЭП,
1 - сертификаты TLS,
2 - корневые сертификаты,
3 - запрос ЭП,
4 - запрос TLS,
5 - сертификаты УЦ,
6 - первичные ТЛС,
7 - транспортные ЭП

Пример запроса

POST http://localhost:28016/vpnkeylocal/
KEE2hUurVfiUBVrLaDyinXQF687Vz7OiVz/
POST data:
id=GET_OBJ_LIST_ID&obj_type=0

Параметры ответа

Параметры запросаОграничениеНазначение
data (STRING_A)4096 байтсписок id, сепаратор
retcode (ENUM)2 байткод возврата функции

Пример ответа

data="GFZ0tcwv"&retcode="1"
  1. Определить хендл сертификата методом INIT_SIGN_H_ID (см. 16.1. Инициализация ЭП).

Для работы по ГОСТ 2011 и выше необходимо указать хендл сертификата на этапе вызова команды INIT_SIGN_H_ID, т. к. параметры криптооперации берутся из сертификата. Если сертификат не будет указан при вызове INIT_SIGN_H_ID, то его необходимо указать в конце, однако, в этом случае подписание будет произведено по ГОСТ-3411\_1994\_256, и если указанный в конце сертификат содержит другие параметры подписания, то операция завершится с ошибкой.

Параметры запроса

Параметры запросаОграничениеНазначение
id (ID_FORMAT)INIT_SIGN_H_IDid функции
datasize (NUMBER)2^32 – 1Размер данных для ЭП
hascert (NUMBER)1 байтМаксимальное количество сертификатов из цепочки доверия, которое вложить в CMS («-1» - вложить все сертификаты, в т. ч. корневой)
hasdata (ENUM)1 байт«0» - не вкладывать в CMS подписанные данные, «1» - вложить в CMS подписанные данные
mode (ENUM)1, 2Стандарт криптооперации: 1 - КС1 - хеш данных считается «стартом.ехе», токен только генерирует подпись хеша, 2 - КС2 - хеш данных считается токеном, подпись генерируется им же (по умолчанию) (500+, опционально)
obj_id (HANDLE)8 байтid сертификата для подписи (500+, опционально)
name (BASE64)128 символов UTF8 (размер BASE64 для их кодировки не регламентирован)Для экранных токенов. Имя подписываемого документа для отображения на экран (500+, опционально)

Пример запроса

POST http://localhost:28016/vpnkeylocal/
KEE2hUurVfiUBVrLaDyinXQF687Vz7OiVz/
POST data:
id=INIT_SIGN_H_ID&obj_id=GFZ0tcwv&
datasize=654&hascert=-1&hasdata=0&mode=1

Параметры ответа

Параметры ответаОграничениеНазначение
retcode (ENUM)2 байтКод возврата функции
(HANDLE)8 байтХендл контекста операции

Пример ответа

ctx_handle="HzWQ6aUL"&retcode="1"
  1. Передать методу SET_SIGN_DATA_H_ID дайджест в формате base64 и handle сертификата (см. 16.2. Загрузить порцию данных для ЭП).

Параметры запроса

Параметры запросаОграничениеНазначение
id (ID_FORMAT)SET_SIGN_DATA_H_IDid функции
data (BASE64)Для прошивок 399+: 6144 URL-encoded байтов base64.
Для прошивок 500+: 15360 байтов бинарных данных (размер base64, требуемый для их кодировки, не регламентирован).
Для режима КС1: 16777216 байтов бинарных данных (размер base64, требуемый для их кодировки, не регламентирован)
Данные для подписи в base64. Размер декодированных данных должен быть кратен 8
blocknum (NUMBER)2^32 – 1Номер посылки (опционально, если присутствует, то проверяется. Нумерация начинается с 1)
ctx_handle (HANDLE)8 байтХендл контекста операции

Пример запроса

POST http://localhost:28016/vpnkeylocal/KEE2hUurVfiUBVrLaDyinXQF687Vz7OiVz/
POST data:
id=SET_SIGN_DATA_H_ID&blocknum=1&data=YWNjZXB0YW5jZVRlcm09NQphbW91b
nQ9MzM3LjUyCmRhdGU9MjAxOS0wOS0xMQpleHRlcm5hbElkPTg2NzI2MjYwLTg3M
mYtNDczYS1hY2I3LTM0MmU1ODcxYmZiMgpvcGVyYXRpb25Db2RlPTAyCnBheWVlQ
WNjb3VudD00MDcwMjgxMDcwMjE1MDAwMDAyOQpwYXllZUJhbmtCaWM9MDQwM
TczNjA0CnBheWVlQmFua0NvcnJBY2NvdW50PTMwMTAxODEwMjAwMDAwMDAwNj
A0CnBheWVlSW5uPTIyMDUwMDE3NTMKcGF5ZWVOYW1lPdCe0YLQutGA0YvRgtC+
0LUg0LDQutGG0LjQvtC90LXRgNC90L7QtSDQvtCx0YnQtdGB0YLQstC+ICLQkNC70Y
LQsNC5LdCa0L7QutGBIgpwYXllckFjY291bnQ9NDA3MDI4MTA2MzgwMDAwMDQwOD
AKcGF5ZXJCYW5rQmljPTA0NDUyNTIyNQpwYXllckJhbmtDb3JyQWNjb3VudD0zMDE
wMTgxMDQwMDAwMDAwMDIyNQpwYXllcklubj0xNDgyNzQ2NTcwCnBheWVyTmFtZT
3QntCx0YnQtdGB0YLQstC+INGBINC+0LPRgNCw0L3QuNGH0LXQvdC90L7QuSDQvt
GC0LLQtdGC0YHRgtCy0LXQvdC90L7RgdGC0YzRjiAi0JzQsNGI0LAg0Lgg0JzQtdC00
LLQtdC00YwiCnBheW1lbnRDb25kaXRpb249Mgpwcmlvcml0eT01CnB1cnBvc2U9MTI2
NiDQn9C+INC00L7Qs9C+0LLQvtGA0YMgMTI2NiDQvtGCIDEwLjAxLjIwMTgKdm9Db2R
lPTYxMTUw&ctx_handle=HzWQ6aUL

Параметры ответа

Параметры ответаОграничениеНазначение
data_length (NUMBER)2^32 – 1Суммарное количество данных, переданных для подписи (включая переданное данным вызовом)
retcode (ENUM)2 байтКод возврата функции

Пример ответа

data_length="654"&retcode="1"
  1. Вычислить подпись методом CALC_SIGN_H_ID (см. 16.3. Вычисление ЭП).

Поле obj_id не рекомендуется использовать с командой CALC_SIGN_H_ID, т.к. рекомендуется использовать его на этапе вызова команды INIT_SIGN_H_ID. Подробнее смотрите примечание к INIT_SIGN_H_ID.


Параметры запроса

Параметры запросаОграничениеНазначение
id (ID_FORMAT)CALC_SIGN_H_IDid функции
obj_type (HANDLE)8 байтid сертификата для подписи (Наследное! Не рекомендуется к использованию! Опционально с 500+)
ctx_handle (HANDLE)8 байтХендл контекста операции

Пример запроса

POST http://localhost:28016/vpnkeylocal/KEE2hUurVfiUBVrLaDyinXQF687Vz7OiVz/
POST data:
id=CALC_SIGN_H_ID&obj_id=GFZ0tcwv&ctx_handle=HzWQ6aUL

Параметры ответа

Параметры запросаОграничениеНазначение
retcode (ENUM)2 байтКод возврата функции

Пример ответа

retcode="1"
  1. Получить ЭП в формате CMS методом GET_SIGN_CMS_H_ID (см. 16.4. Получить ЭП в формате CMS).

Параметры запроса

Параметры запросаОграничениеНазначение
id (ID_FORMAT)GET_SIGN_CMS_H_IDid функции
ctx_handle (HANDLE)8 байтХендл контекста операции

Пример запроса

POST
http://localhost:28016/vpnkeylocal/KEE2hUurVfiUBVrLaDyinXQF687Vz7OiVz/
POST data:
id=GET_SIGN_CMS_H_ID&ctx_handle=HzWQ6aUL

Параметры ответа

Параметры запросаОграничениеНазначение
head (BASE64)16384 байт декодированных данныхДанные начала CMS в base64
suffix (BASE64)16384 байт декодированных данныхДанные начала CMS в base64
retcode (ENUM)2 байтКод возврата функциии

Пример ответа

head="MIIMuAYJKoZIhvcNAQcCoIIMqTCCDKUCAQ
ExDjAMBggqhQMHAQECAgUAMAsGCSqGSIb3DQEHAQ=="
&suffix="oIIJkTCCBHAwggQdoAMCAQICCndONrct2UNmYqE...............
++4XWBJmrjrohy7NA=="&retcode="1"
Обновлено 20 апреля 2022

Заметили ошибку?

Выделите текст и нажмите Ctrl + Enter, чтобы сообщить нам о ней