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.