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

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

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

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

Примечание

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

Для формирования электронной подписи используется команда signData или signBase64EncodedData.
Для подписи хэша используется команда signHash.
Для получения подписи хэша без конвертации в формат PKCS#7 используются команда signHashInByte.

Особенности подписи для токена PRO

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

Для формирования электронной подписи используется команды signData или signBase64EncodedData.
Для подписи хэша используется команда signHash.
Для получения подписи данных и хэша без конвертации в формат PKCS#7 используются команды signDataInByte и signHashInByte.

Особенности подписи для токена GOST 2

С помощью JC-WebClient подписываемые данные сначала подвергаются хэшированию по одному из следующих алгоритмов:

  • ГОСТ Р 34.11-94;
  • ГОСТ Р 34.11-2012 с длиной ключа 256 бит.

Затем формируется электронная подпись по одному из следующих алгоритмов:

  • ГОСТ Р 34.10-2001 для хэшированных данных по алгоритму ГОСТ Р 34.11-94;
  • ГОСТ Р 34.10-2012 для хэшированных данных по алгоритму ГОСТ Р 34.11-2012 с длиной ключа 256 бит.

Параметры криптографических преобразований определяются атрибутом CKA_GOSTR3410_PARAMS открытого ключа. Подписанные данные возвращаются в формате PKCS#7.

Примечание

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

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

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

Для проверки электронной подписи используются команды verifyData или verifyBase64EncodedData.
Для проверки подписи, не сконвертированной в формат PKCS#7, от хэша используется команда verifyHashInByte.

Токен PRO

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

Для проверки электронной подписи используется команды verifyData или verifyBase64EncodedData.
Для проверки подписи, не сконвертированной в формат PKCS#7, от данных и хэша используются соответственно команды verifyDataInByte и verifyHashInByte.

Токен GOST 2

С помощью JC-WebClient подписанные данные сначала подвергаются хэшированию по одному из следующих алгоритмов:

  • ГОСТ Р 34.11-94;
  • ГОСТ Р 34.11-2012 с длиной ключа 256 бит;
  • ГОСТ Р 34.11-2012 с длиной ключа 512 бит.

Проверка электронной подписи осуществляется по одному из следующих алгоритмов:

  • ГОСТ Р 34.10-2001 для хэшированных данных по алгоритму ГОСТ Р 34.11-94;
  • ГОСТ Р 34.10-2012 для хэшированных данных по алгоритму ГОСТ Р 34.11-2012 с длиной ключа 256 бит.

Для проверки электронной подписи используется команды verifyData или verifyBase64EncodedData.

Оглавление