Перейти к содержимому

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

USB-токены и смарт-карты JaCartaAPI и SDKUSB-токены и смарт-карты JaCarta

Для формирования электронной подписи используется команды 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
}
});

С помощью 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.

Для формирования электронной подписи используется команда signData или signBase64EncodedData.

При генерации ключевых пар может быть указан признак предъявления PIN-кода подписи. При использовании ключевых пар с таким признаком при подписании необходимо дополнительно передавать значение PIN-кода подписи.

Для проверки электронной подписи используются команды 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

Заголовок раздела «Особенности проверки подписи для токена 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.