7.8.1 Формирование электронной подписи
Для формирования электронной подписи используется команды signData или signBase64EncodedData. При помощи этих команд можно создавать два вида подписи:
- присоединенную подпись (подписываемые данные включаются в подпись);
- отсоединенную подпись (подписываемые данные не включаются в подпись).
За выбор вида подписи отвечает аргумент attachedSignature.
Пример создания присоединенной подписи
// Идентификатор контейнераvar contID = 0;// Данные для подписиvar dataToSign = 'my data';// Перевести строку в массив байтdataToSign = $utf8.encode(dataToSign);// Подписать данные, используя программное хэшированиеvar signedData = JCWebClient2.signData({ args: { contID: contID, data: dataToSign, attachedSignature: true }});Пример создания отсоединенной подписи
// Идентификатор контейнераvar contID = 0;// Данные для подписиvar dataToSign = 'my data';// Перевести строку в массив байтdataToSign = $utf8.encode(dataToSign);// Подписать данные, используя программное хэшированиеvar signedData = JCWebClient2.signData({ args: { contID: contID, data: dataToSign, attachedSignature: false }});Особенности подписи для токена GOST 2
С помощью JC-WebClient подписываемые данные сначала подвергаются хэшированию по одному из следующих алгоритмов:
- ГОСТ Р 34.11-94 (устаревший алгоритм, выведен из применения);
- ГОСТ Р 34.11-2012 (2018) с длиной ключа 256 бит для токена GOST 2;
- ГОСТ Р 34.11-2012 (2018) с длиной ключа 512 бит для токена GOST 2 версии 2.5.13.
- ;
Затем формируется электронная подпись по одному из следующих алгоритмов:
- ГОСТ Р 34.10-2001 для хэшированных данных по алгоритму ГОСТ Р 34.11-94 (устаревший алгоритм, выведен из применения);
- ГОСТ Р 34.10-2012 (2018) для хэшированных данных по алгоритму ГОСТ Р 34.11-2012 (2018) с длиной ключа 256 бит для токена GOST 2;
- ГОСТ Р 34.10-2012 (2018) для хэшированных данных по алгоритму ГОСТ Р 34.11-2012 (2018) с длиной ключа 512 бит для токена GOST 2 версии 2.5.13.
Параметры криптографических преобразований определяются атрибутом CKA_GOSTR3410_PARAMS открытого ключа. Подписанные данные возвращаются в формате PKCS#7.
При создании ключевого контейнера с помощью JC-WebClient значение атрибута CKA_GOSTR3410_PARAMS задаётся аргументом paramSet команды createKeyPair.
Для формирования электронной подписи используется команда signData или signBase64EncodedData.
При генерации ключевых пар может быть указан признак предъявления PIN-кода подписи. При использовании ключевых пар с таким признаком при подписании необходимо дополнительно передавать значение PIN-кода подписи.
7.8.2 Проверка электронной подписи
Для проверки электронной подписи используются команды verifyData или verifyBase64EncodedData. При помощи этих команд можно осуществлять проверку:
- присоединенной подписи (подписываемые данные включены в подпись);
- отсоединенной подписи (подписываемые данные не включены в подпись).
При проверке необходимо указать, содержатся ли данные в подписи. И если данные в подпись не включены (отсоединенная подпись), то передать их в аргумент data или указать путь к файлу, где они располагаются (аргумент fileName).
Пример проверки присоединенной подписи
var signature = [/* Массив байт с подписью в формате PKCS#7 */];var res = JCWebClient2.verifyData({ args: { signature: signature }});Пример проверки отсоединенной подписи
var signature = [/* Массив байт с подписью в формате PKCS#7 */];var res = JCWebClient2.verifyData({ args: { signature: signature, data: data }});Особенности проверки подписи для токена GOST 2
С помощью JC-WebClient подписываемые данные сначала подвергаются хэшированию по одному из следующих алгоритмов:
- ГОСТ Р 34.11-94 (устаревший алгоритм, выведен из применения);
- ГОСТ Р 34.11-2012 (2018) с длиной ключа 256 бит для токена GOST 2;
- ГОСТ Р 34.11-2012 (2018) с длиной ключа 512 бит для токена GOST 2 версии 2.5.13;
Проверка электронной подписи осуществляется по одному из следующих алгоритмов:
- ГОСТ Р 34.10-2001 для хэшированных данных по алгоритму ГОСТ Р 34.11-94 (устаревший алгоритм, выведен из применения);
- ГОСТ Р 34.10-2012 (2018) для хэшированных данных по алгоритму ГОСТ Р 34.11-2012 (2018) с длиной ключа 256 бит для токена GOST 2;
- ГОСТ Р 34.10-2012 (2018) для хэшированных данных по алгоритму ГОСТ Р 34.11-2012 (2018) с длиной ключа 512 бит для токена GOST 2 версии 2.5.13;
Для проверки электронной подписи используется команды verifyData или verifyBase64EncodedData.