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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline redencill  
#1 Оставлено : 20 января 2021 г. 3:56:23(UTC)
redencill

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

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

Есть задача подписать хэш-сумму, полученную по ГОСТ Р 34.11-2012, с помощью ГОСТ Р 34.10-2012. Сервис, который такую подпись требует, приводит следующий пример её получения с помощью csptest и PHP:

$q = "/opt/cprocsp/bin/amd64/csptest -keyset -sign GOST12_256 -silent -cont name -keytype exchange -in file.in -out file.out";

Эта команда выполняется в php через $process = proc_open($q, $descriptorspec, $pipes);

После чего подпись достается из файла

Код:
$handle =fopen($sgnfile, "r");
$sgn=fread($handle, filesize($sgnfile));
fclose($handle);
$sgn = base64_encode(strrev($sgn));


И вот это значение в формате base64 передается сервису.

Я же хочу использовать расширение PHP для формирования аналогичной подписи. У меня для этого есть такой участок кода:

Код:
$signer = new \CPSigner();
$signer->set_Certificate($cert);
$pin = $request->getQueryParams()['pin'];
$signer->set_KeyPin($pin);

$sd = new \CPSignedData;
$sd->set_ContentEncoding(ENCODE_BINARY);
$sd->set_Content(base64_encode($this->content));

// Второй параметр - тип подписи(1 = CADES_BES):  http://cpdn.cryptopro.ru/default.asp?url=content/cades/namespace_c_ad_e_s_c_o_m_fe49883d8ff77f7edbeeaf0be3d44c0b_1fe49883d8ff77f7edbeeaf0be3d44c0b.html
// Третий параметр detached - отделенная(true) или совмещенная (false)
$this->signedContent = $sd->SignCades($signer, CADES_BES, false, 0);


В $this->signedContent, получается, подпись. Есть следующие вопросы:

Являются ли эти методы эквивалентными? Подпись типа CADES_BES - это то, что мне нужно?
Нужно ли мне по аналогии с первым методом разворачивать этот результат ($this->signedContent) с помощью strrev, и если да, то как правильно это сделать? И где например во втором методе можно задать тип алгоритма, как GOST12_256 в первом?
Offline redencill  
#2 Оставлено : 20 января 2021 г. 5:35:47(UTC)
redencill

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

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

Ещё вопрос: я тут https://www.cryptopro.ru...&m=104670#post104670 прочитал, что SignCades и хеширует контент, и подписывает. У меня есть задача подписывать хеш, сфорированный по алгоритму ГОСТ Р 34.11-2012 (СТРИБОГ). Сам хеш мне тоже надо получить и передавать отдельным параметром.

Правильно ли я понимаю, что в этом случае мне надо на вход SignCades передавать просто контент, а сам метод и захеширует его по ГОСТУ, и подпишет потом этот хеш, и уже эту саму подпись вернёт? Или всё же на вход метода надо передавать уже хеш по ГОСТу стриборг? Или мне вместо SignCades стоит использовать обычный CpSignedData->Sign?
Offline Андрей *  
#3 Оставлено : 20 января 2021 г. 9:48:42(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2034 раз в 1578 постах
Здравствуйте.
Сервис требует RAW signature, 64 байта, которые потом кодируется в base64.

Sign, SignCades возвращают cms (закодированную asn1 структуру, с сертификатом, подписью) и размер несколько Кб.

Отредактировано пользователем 20 января 2021 г. 9:50:05(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.