Работа с электронной подписью

Формирование электронной подписи

ГОСТ

С помощью JC-WebClient подписываемые данные сначала подвергаются хэшированию по ГОСТ Р 34.11-94 с применением параметров id-GostR3411-94-CryptoProParamSet согласно RFC 4357. Затем формируется электронная подпись по ГОСТ Р 34.10-2001 с параметрами криптографических преобразований, определяемых значением атрибута CKA_GOSTR3410_PARAMS открытого ключа. Подписанные данные возвращаются в формате PKCS#7.

Примечание

При создании ключевого контейнера с помощью JC-WebClient значение атрибута CKA_GOSTR3410_PARAMS задаётся первым аргументом функции createContainer().

Для формирования электронной подписи используйте функцию signData(), если допускается программное хэширование подписываемых данных, и/или signDataUsingHardwareHash(), если необходимо осуществлять хэширование подписываемых данных аппаратно на электронном ключе.

Пример

// Получить идентификатор сертификата, выбранного в поле выбора сертификата
// web-формы с идентификатором certSelect
var certHandle = $("#certSelect option:selected").val();

// Данные для подписи, вводимые в поле ввода данных
// с идентификатором dataToSign в web-форме
var dataToSign = $('#dataToSign').val();

// Перевести строку в массив байт
dataToSign = $utf8.encode(dataToSign);

// Подписать данные, используя программное хэширование
signedData = JCWebClient().signData(certHandle, dataToSign, false);

PRO

С помощью JC-WebClient подписываемые данные сначала подвергаются хэшированию по SHA-1. Затем формируется электронная подпись на основе алгоритма RSA с длиной ключа 1024. Подписанные данные возвращаются в формате PKCS#7.

Для формирования электронной подписи используйте функцию signData(), если хотите использовать быстрое программное хэширование подписываемых данных, и/или signDataUsingHardwareHash(), если необходимо осуществлять хэширование подписываемых данных аппаратно на электронном ключе. Если требуется подписать массив байт, можно воспользоваться методом signDataInByte().

Проверка электронной подписи

ГОСТ

С помощью JC-WebClient подписанные данные сначала подвергаются хэшированию по ГОСТ Р 34.11-94 с применением параметров id-GostR3411-94-CryptoProParamSet согласно RFC 4357. Проверка электронной подписи осуществляется по ГОСТ Р 34.10-2001 с параметрами криптографических преобразований, хранящимися вместе с электронной подписью. Для проверки электронной подписи используйте функцию verifyData(). Подпись для проверки передается в формате PKCS#7.

Пример

// Получить значение подписи из поля с идентификатором signatureValue web-формы
var signature = $('#signatureValue').val();

// Перевести из base64 в массив байт в формате PKCS#7
signature = Base64.decode(signature);

// Проверить подпись
var res = JCWebClient().verifyData(signature, false, data);

PRO

С помощью JC-WebClient подписанные данные сначала подвергаются хэшированию по SHA-1. Проверка электронной подписи осуществляется на основе алгоритма RSA с длиной ключа 1024.

Для проверки электронной подписи используйте функцию verifyData(). Подпись для проверки передается в формате PKCS#7. Для проверки подписи массива байт можно воспользоваться методами verifyDataInByte() или verifyHashInByte().

Оглавление