Статус: Новичок
Группы: Участники
Зарегистрирован: 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 в первом?
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 19.01.2021(UTC) Сообщений: 3
|
Ещё вопрос: я тут https://www.cryptopro.ru...&m=104670#post104670 прочитал, что SignCades и хеширует контент, и подписывает. У меня есть задача подписывать хеш, сфорированный по алгоритму ГОСТ Р 34.11-2012 (СТРИБОГ). Сам хеш мне тоже надо получить и передавать отдельным параметром. Правильно ли я понимаю, что в этом случае мне надо на вход SignCades передавать просто контент, а сам метод и захеширует его по ГОСТУ, и подпишет потом этот хеш, и уже эту саму подпись вернёт? Или всё же на вход метода надо передавать уже хеш по ГОСТу стриборг? Или мне вместо SignCades стоит использовать обычный CpSignedData->Sign?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,630 Сказал «Спасибо»: 494 раз Поблагодарили: 2035 раз в 1579 постах
|
Здравствуйте. Сервис требует RAW signature, 64 байта, которые потом кодируется в base64. Sign, SignCades возвращают cms (закодированную asn1 структуру, с сертификатом, подписью) и размер несколько Кб. Отредактировано пользователем 20 января 2021 г. 9:50:05(UTC)
| Причина: Не указана |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close