Class: CryptoPlugin

Главный класс плагина. Реализует всю функциональность плагина. Интерфейсные функции плагина могут вызываться двумя способами: асинхронно и синхронно. Настоятельно рекомендуется использовать асинхронный интерфейс, поскольку при использовании синхронных вызовов происходит блокирование интерфейса браузера на время выполнения функции.

Асинхронный интерфейс.

Все функции принимают resultCallback и errorCallback двумя последними параметрами и работают асинхронно. Сразу после вызова все функции возвращают управление. Функция вызывает resultCallback в случае успешного выполнения и errorCallback в случае ошибки. resultCallback принимает один параметр - результат выполнения операции. errorCallback - принимает код ошибки первым параметром.

Cинхронный интерфейс.

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

Примеры:
<object type="application/x-rutoken-pki" id="plugin"></object>
<script type="text/javascript">
// получение объекта плагина
var plugin = document.getElementById("plugin");
if (!plugin.valid) {
    alert("Couldn't load plugin");
}
// использование асинхронного интерфейса
plugin.enumerateDevices(
    function(devices) {
        console.log(devices);
    },
    function(error) {
        console.log(error);
    });
</script>
<object type="application/x-rutoken-pki" id="plugin"></object>
<script type="text/javascript">
// получение объекта плагина
var plugin = document.getElementById("plugin");
if (!plugin.valid) {
    alert("Couldn't load plugin");
}
// использование синхронного интерфейса
var devices = Array();
try {
    devices = plugin.enumerateDevices();
}
catch (error) {
    console.log(error);
}
</script>

Резюме

Свойства

errorCodes :weak_ptr< ErrorCodesApi >
valid :boolean
version :string

Методы

authenticate(deviceId, certId, salt) → {string}
Аутентификация по сертификату. Не поддерживается для ключей RSA. Для выполнения этой функции требуется авторизоваться на устройстве.
changePin(deviceId, oldPin, newPin, options)
Изменение PIN. Если переданып параметры oldPin и newPin, то будет изменен PIN пользователя. Если эти параметры не переданы, то будет изменен PIN2 (только на PINPad2)
cmsDecrypt(deviceId, keyId, cmsData, options) → {string}
Расшифрование данных в формате CMS. Не поддерживается для ключей RSA. Аргумент options принимает параметры расшифрования, пока зарезервирован для будущего использования. Для выполнения этой функции требуется авторизоваться на устройстве.
cmsEncrypt(deviceId, certId, recipientCert, data, options) → {string}
Шифрование данных в формате CMS. Аргумент options принимает параметры шифрования. Доступны следующие опции (в скобках указано значение по умолчанию):
  • base64:bool (false) - закодированы ли переданные данные в base64
  • useHardwareEncryption:bool (false) - производить шифрование на устройстве
Для выполнения этой функции требуется авторизоваться на устройстве.
createPkcs10(deviceId, keyId, subject, extensions, options) → {string}
Формирование самоподписанного PKCS#10 запроса Для выполнения этой функции требуется авторизоваться на устройстве.
deleteCertificate(deviceId, certId)
Удаление сертификата с устройства. Для выполнения этой функции требуется авторизоваться на устройстве.
deleteKeyPair(deviceId, keyId)
Удаление ключевой пары Для выполнения этой функции требуется авторизоваться на устройстве.
digest(deviceId, hashType, data, options) → {string}
Вычисления хеша. Аргумент options принимает параметры хеширования. Доступны следующие опции (в скобках указано значение по умолчанию):
  • useHardwareHash:bool (false) - производить аппаратное хеширование данных
  • base64:bool (false) - указывает, закодированы ли данные, переданные в data, в base64;
enumerateCertificates(deviceId, category) → {string[]}
Получение массива с идентификаторами сертификатов.
enumerateDevices() → {number[]}
Получение идентификаторов доступных устройств
enumerateKeys(deviceId, marker) → {string[]}
Получение массива с идентификаторами секретных ключей в HEX. Для выполнения этой функции требуется авторизоваться на устройстве.
generateKeyPair(deviceId, reserved, marker, options) → {string}
Генерация ключевой пары ГОСТ Р 34.10-2001 на устройстве. Для выполнения этой функции требуется авторизоваться на устройстве. Аргумент options задает различные свойства ключа. Доступны следующие опции: id:string("") - уникальный идентификатор ключевой пары (hex). Если опция не задана, или в качестве значения указана пустая строка, будет сгенерирован автоматически. keyType:enum(KEY_TYPE_COMMON) - тип ключевой пары, доступны варианты: KEY_TYPE_COMMON - обычная ключевая пара; KEY_TYPE_JOURNAL - журнальная ключевая пара (может быть использована только для подписи журнала) Для ключевой пары типа KEY_TYPE_COMMON так же доступны следующие атрибуты: needPin:bool(false) - если ключевая пара создана на PINPad 2, для каждого ее использования потребуется ввести PIN на устройстве; needConfirm:bool(false) - если ключевая пара создана на PINPad 2, для каждого ее использования потребуется подтверждение на устройстве; publicKeyAlgorithm:enum(GOST3410_2001) - алгоритм, варианты: GOST3410_2001, RSA; signatureSize:number - размер подписи в битах, значения по умолчанию: ГОСТ Р 34.10-2001 - 512, RSA - 2048. paramset - задает параметры ГОСТ 34.10-2001
getCertificate(deviceId, certId) → {string}
Получение тела сертификата в PEM.
getDeviceInfo(deviceId, option) → {object}
Получение информации об устройстве. Тип информации задается константами: TOKEN_INFO_MODEL, TOKEN_INFO_READER, TOKEN_INFO_LABEL, TOKEN_INFO_DEVICE_TYPE, TOKEN_INFO_SERIAL, TOKEN_INFO_IS_LOGGED_IN, TOKEN_INFO_FORMATS, TOKEN_INFO_FEATURES.
getDeviceLabel(deviceId) → {string}
Получение метки устройства
getDeviceModel(deviceId) → {string}
Получение строки с моделью устройства, понятной для человека. Внимание: возвращаемая строка может меняться в будущем.
getDeviceType(deviceId) → {Promise< Pkcs11DeviceBase::DeviceType >}
Получение константы, обозначающей тип устройства.
getJournal(deviceId, keyId, options) → {object}
Получение журнала операций на токене и его журнала, сформированной на соответствующем ключе. Если с момента подключения токена никаких операций не производилось будет возвращен null
getKeyByCertificate(deviceId, certId) → {string}
Получение идентификатора ключевой пары по сертификату. Для выполнения этой функции требуется авторизоваться на устройстве.
getKeyLabel(deviceId, keyId) → {string}
Получение метки секретного ключа. Для выполнения этой функции требуется авторизоваться на устройстве.
getLicence(deviceId, licenceId) → {object}
Получение лицензии с токена
getPublicKeyValue(deviceId, keyId, options) → {string}
Получение значения открытого ключа. Не поддерживается для ключей RSA. Для выполнения этой функции требуется авторизоваться на устройстве.
importCertificate(deviceId, certificate, category) → {string}
Импорт сертификата на устройство. Для выполнения этой функции требуется авторизоваться на устройстве.
login(deviceId, pin)
Авторизация на устройстве
logout(deviceId)
Закрытие сессии
parseCertificate(deviceId, certId) → {object}
Получение ассоциативного массива с разобранными полями из сертификата.
parseCertificateFromString(text) → {object}
Получение ассоциативного массива с разобранными полями из сертификата.
rawSign(deviceId, keyId, data, options) → {string}
Подпись на ключе. Аргумент options принимает параметры подписи. Доступны следующие опции (в скобках указано значение по умолчанию):
  • computeHash:bool (false) - производить хеширование переданных данных
  • useHardwareHash:bool (false) - производить аппаратное хеширование данных, только если computeHash = true
  • invisible:bool (false) - производить подпись данных в режиме без отображения на PINPad 2
  • hashAlgorithm:enum - алгоритм хэширования (необходимо указывать для ключей RSA, даже если computeHash выставлен в false), варианты: GOST3411_94, MD5, SHA1, SHA256, SHA512.
Для выполнения этой функции требуется авторизоваться на устройстве.
removePin(deviceId)
Удаление закешированного PIN-кода из файла.
savePin(deviceId)
Сохранение PIN-кода в файл для автоматической аутентификации.
setKeyLabel(deviceId, keyId, label)
Установка метки секретного ключа. Для выполнения этой функции требуется авторизоваться на устройстве.
setLicence(deviceId, licenceId, licence)
Запись лицензии на токен
sign(deviceId, certId, data, isBase64, options) → {string}
Вычисление цифровой подписи. Не поддерживается для ключей RSA. Аргумент options принимает параметры подписи. Доступны следующие опции (в скобках указано значение по умолчанию):
  • detached:bool (false) - генерировать отсоединенную подпись
  • addUserCertificate:bool (false) - включить в подпись сертификат пользователя
  • addSignTime:bool (false) - включить в подпись время подписи
  • useHardwareHash:bool (false) - производить аппаратное хеширование данных
  • invisible:bool (false) - производить подпись данных в режиме без отображения на PINPad 2
Для выполнения этой функции требуется авторизоваться на устройстве.
verify(deviceId, cms, options) → {bool}
Проверка цифровой подписи. Аргумент options принимает параметры проверки подписи. Доступны следующие опции (в скобках указано значение по умолчанию):
  • data:string (null) - подписанные данные (текстовые или base64-encoded), только в случае detached подписи;
  • base64:bool (false) - указывает, закодированы ли данные, переданные в data, в base64;
  • certificates:string[] (null) - набор сертификатов, на которых необходимо проверять подпись, при этом сертификаты, которые содержатся в cms, будут проигнорированы;
  • CA:string[] (null) - список дополнительных корневых сертификатов для проверки сертификата, кроме них берутся сертификаты с устройства;
  • CRL:string[] (null) - список отозванных сертификатов;
  • useHardwareHash:bool (false) - производить хеширование на устройстве (игнорируется для алгоритмов отличных от ГОСТ Р 34.10-2001);
  • verifyCertificate:bool (true) - проверить сертификат пользователя;

Подробно

Свойства

errorCodes :weak_ptr< ErrorCodesApi >

Объект с константами ошибок

valid :boolean

Правильно созданный объект всегда возвращает true

version :string

Версия плагина в формате 1.2.3.4

Методы

authenticate(deviceId, certId, salt) → {string}

Аутентификация по сертификату. Не поддерживается для ключей RSA. Для выполнения этой функции требуется авторизоваться на устройстве.

Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
2
certIdstringИдентификатор сертификата
3
saltstringАутентификационные данные
Возвращает:

Строка для аутентификации в формате CMS

changePin(deviceId, oldPin, newPin, options)

Изменение PIN. Если переданып параметры oldPin и newPin, то будет изменен PIN пользователя. Если эти параметры не переданы, то будет изменен PIN2 (только на PINPad2)

Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
2
oldPinstringСтарый PIN пользователя
3
newPinstringНовый PIN пользователя
4
optionsobjectМассив, содержащий дополнительные параметры - объекты вида {параметр:значение} (зарезервирован для будущего использования)
cmsDecrypt(deviceId, keyId, cmsData, options) → {string}

Расшифрование данных в формате CMS. Не поддерживается для ключей RSA. Аргумент options принимает параметры расшифрования, пока зарезервирован для будущего использования. Для выполнения этой функции требуется авторизоваться на устройстве.

Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
2
keyIdstringИдентификатор ключа для расшифровыания
3
cmsDatastringCMS-сообщение, содержащие зашифрованные данные
4
optionsobjectМассив, содержащий параметры расшифрования - объекты вида {параметр:значение} (зарезервирован для будущего использования)
Возвращает:

Расшифрованные данные

cmsEncrypt(deviceId, certId, recipientCert, data, options) → {string}

Шифрование данных в формате CMS. Аргумент options принимает параметры шифрования. Доступны следующие опции (в скобках указано значение по умолчанию):

  • base64:bool (false) - закодированы ли переданные данные в base64
  • useHardwareEncryption:bool (false) - производить шифрование на устройстве
Для выполнения этой функции требуется авторизоваться на устройстве.

Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
2
certIdstringИдентификатор сертификата, зарезервированно для будущего использования
3
recipientCertstringТело сертификата сервера
4
datastringЗашифровываемые данные (текстовая строка или base64-encoded бинарные данные)
5
optionsobjectМассив, содержащий параметры шифрования - объекты вида {параметр:значение}
Возвращает:

Зашифрованные данные в формате CMS

createPkcs10(deviceId, keyId, subject, extensions, options) → {string}

Формирование самоподписанного PKCS#10 запроса Для выполнения этой функции требуется авторизоваться на устройстве.

Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
2
keyIdstringИдентификатор ключа
3
subjectobjectМассив, содержащий объекты вида: {rdn: "commonName", value: "значение"}
4
extensionsobjectАссоциативный массив, содержащий массивы расширений: {keyUsage: ["digitalSignature",...], extKeyUsage: ["oid", "longName" ], certificatePolicies: ["OID", ...]}
5
optionsobjectДополнительные опции: subjectSignTool:string - значение соответствующего расширения; hashAlgorithm:enum - алгоритм хэширования, варианты: GOST3411_94, MD5, SHA1, SHA256, SHA512; customExtensions:object - массив, содержащий объекты вида: {oid: "1.2.3", value: "MA0GCCqFAwICLgAIAgEB", criticality: false}.
Возвращает:

PKCS#10 запрос

Пример:
 *        var subject = [
           {
               rdn:    "countryName",
               value:  "RU"
           }
           ,{
               rdn:    "stateOrProvinceName",
               value:  "moscow"
           }
           ,{
               rdn:    "localityName",
               value:  "locality"
           }
           ,{
               rdn:    "streetAddress",
               value:  "street"
           }
           ,{
               rdn:    "organizationName",
               value:  "Aktiv"
           }
           ,{
               rdn:    "organizationalUnitName",
               value:  "IT"
           }
           ,{
               rdn:    "title",
               value:  "должность"
           }
           ,{
               rdn:    "commonName",
               value:  "Фамилия Имя Очество"
           }
           ,{
               rdn:    "postalAddress",
               value:  "postal address"
           }
           ,{
               rdn:    "pseudonym",
               value:  "pseudonymus"
           }
           ,{
               rdn:    "surname",
               value:  "surname"
           }
           ,{
               rdn:    "givenName",
               value:  "given name"
           }
           ,{
               rdn:    "emailAddress",
               value:  "example@example.com"
           }
       ];
       var keyUsageVal = [
           "digitalSignature"
           ,"nonRepudiation"
           ,"keyEncipherment"
           ,"dataEncipherment"
           ,"keyAgreement"
           ,"keyCertSign"
           ,"cRLSign"
           ,"encipherOnly"
           ,"decipherOnly"
       ];
       var extKeyUsageVal = [
           "emailProtection"
           ,"clientAuth"
           ,"serverAuth"
           ,"codeSigning"
           ,"timeStamping"
           ,"msCodeInd"
           ,"msCodeCom"
           ,"msCTLSign"
           ,"1.3.6.1.5.5.7.3.9" // OSCP
           ,"1.2.643.2.2.34.6" // CryptoPro RA user
            // ,"anyExtendedKeyUsage"

       ];
       var certificatePolicies = [
           "1.2.643.100.113.1", // КС1
           "1.2.643.100.113.2", // КС2
           "1.2.643.100.113.3", // КС3
           "1.2.643.100.113.4", // КВ1
           "1.2.643.100.113.5", // КВ2
           "1.2.643.100.113.6"  // КА1
       ];
       var extensions = {
           "keyUsage":            keyUsageVal,
           "extKeyUsage":         extKeyUsageVal,
           "certificatePolicies": certificatePolicies
       };
       var options = {
           "subjectSignTool":     'СКЗИ "РУТОКЕН ЭЦП"',
           "hashAlgorithm":       plugin.GOST3411_94,
           "customExtensions":    [
               {
                   oid: "1.3.6.1.4.1.311.21.7",
                   value: "MA0GCCqFAwICLgAIAgEB",
                   criticality: false
               }
           ];
       };
       plugin.createPkcs10(deviceID, keyID, subject, extensions, options,
               this.printResult, this.printError);
   }


 
deleteCertificate(deviceId, certId)

Удаление сертификата с устройства. Для выполнения этой функции требуется авторизоваться на устройстве.

Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
2
certIdstringИдентификатор сертификата, полученный в результате вызова enumerateCertificates
deleteKeyPair(deviceId, keyId)

Удаление ключевой пары Для выполнения этой функции требуется авторизоваться на устройстве.

Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
2
keyIdstringИдентификатор секретного ключа из ключевой пары
digest(deviceId, hashType, data, options) → {string}

Вычисления хеша. Аргумент options принимает параметры хеширования. Доступны следующие опции (в скобках указано значение по умолчанию):

  • useHardwareHash:bool (false) - производить аппаратное хеширование данных
  • base64:bool (false) - указывает, закодированы ли данные, переданные в data, в base64;

Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
2
hashTypenumberИдентификатор алгоритма хеширования
3
datastringХешируемые данные (текстовые или base64-строка)
4
optionsobjectМассив, содержащий параметры хеширования - объекты вида {параметр:true/false}
Возвращает:

Хеш (hex)

enumerateCertificates(deviceId, category) → {string[]}

Получение массива с идентификаторами сертификатов.

Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
2
categorynumberТип сертификата: CERT_CATEGORY_UNSPEC, CERT_CATEGORY_USER, CERT_CATEGORY_CA или CERT_CATEGORY_OTHER, см. описание функции importCertificate
Возвращает:

Массив строк с идентификаторами сертификатов

enumerateDevices() → {number[]}

Получение идентификаторов доступных устройств

Возвращает:

Список идентификаторов подключенных устройств

enumerateKeys(deviceId, marker) → {string[]}

Получение массива с идентификаторами секретных ключей в HEX.

Для выполнения этой функции требуется авторизоваться на устройстве.

Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
2
markerstringИдентификатор группы ключей, "" - все ключи
Возвращает:

Массив строк с идентификаторами закрытых ключей (hex)

generateKeyPair(deviceId, reserved, marker, options) → {string}

Генерация ключевой пары ГОСТ Р 34.10-2001 на устройстве. Для выполнения этой функции требуется авторизоваться на устройстве. Аргумент options задает различные свойства ключа. Доступны следующие опции: id:string("") - уникальный идентификатор ключевой пары (hex). Если опция не задана, или в качестве значения указана пустая строка, будет сгенерирован автоматически. keyType:enum(KEY_TYPE_COMMON) - тип ключевой пары, доступны варианты: KEY_TYPE_COMMON - обычная ключевая пара; KEY_TYPE_JOURNAL - журнальная ключевая пара (может быть использована только для подписи журнала) Для ключевой пары типа KEY_TYPE_COMMON так же доступны следующие атрибуты: needPin:bool(false) - если ключевая пара создана на PINPad 2, для каждого ее использования потребуется ввести PIN на устройстве; needConfirm:bool(false) - если ключевая пара создана на PINPad 2, для каждого ее использования потребуется подтверждение на устройстве; publicKeyAlgorithm:enum(GOST3410_2001) - алгоритм, варианты: GOST3410_2001, RSA; signatureSize:number - размер подписи в битах, значения по умолчанию: ГОСТ Р 34.10-2001 - 512, RSA - 2048. paramset - задает параметры ГОСТ 34.10-2001

Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
2
reservedstringЗарезервировано для будущего использования (необходимо передавать undefined)
3
markerstringИдентификатор группы ключей
4
optionsobjectДополнительные свойства ключевой пары в виде ассоциативного массива, см. подробное описание функции
Возвращает:

ID ключа (hex)

getCertificate(deviceId, certId) → {string}

Получение тела сертификата в PEM.

Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
2
certIdstringИдентификатор сертификата
Возвращает:

Описатель сертификата в виде объекта

getDeviceInfo(deviceId, option) → {object}

Получение информации об устройстве.

Тип информации задается константами: TOKEN_INFO_MODEL, TOKEN_INFO_READER, TOKEN_INFO_LABEL, TOKEN_INFO_DEVICE_TYPE, TOKEN_INFO_SERIAL, TOKEN_INFO_IS_LOGGED_IN, TOKEN_INFO_FORMATS, TOKEN_INFO_FEATURES.

Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
2
optionnumberТип запрашиваемой информации (тип устройства, метка, серийный номер или наличие лицензии)
Возвращает:

Текстовая строка для метки и серийного номера, число для типа устройства или true/false в случае лицензии. В случае передачи в качестве параметра TOKEN_INFO_FORMATS возвращается список форматов, которые поддерживает устройство, в виде массива констант:

  • DEVICE_DATA_FORMAT_PLAIN - произвольные данные
  • DEVICE_DATA_FORMAT_RAW - неформатированные данные для отображения на PINPad 2
  • DEVICE_DATA_FORMAT_PINPAD2 - данные в формате PINPADFILE для отображения на PINPad 2
  • DEVICE_DATA_FORMAT_XML - данные в XML формате для отображения на PINPad 2
  • DEVICE_DATA_FORMAT_SAFETOUCH - данные для отображения на Safetouch
В случае передачи в качестве параметра TOKEN_INFO_FEATURES возвращается ассоциативный массив, определяющий возможности устройства, со следующими полями:
  • journal:bool - поддержка журнала операций
  • pin2:bool - поддержка ввода PIN2 на устройстве
  • visualization:bool - поддержка генерации ключей, требующих визуализации данных на устройстве

getDeviceLabel(deviceId) → {string}

Получение метки устройства

Deprecated:
Внимание: начиная с версии 0.15.0.0, функция не поддерживается и может быть удалена в последующих версиях плагина. Используйте метод getDeviceInfo.
Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
Возвращает:

Метка устройства

getDeviceModel(deviceId) → {string}

Получение строки с моделью устройства, понятной для человека. Внимание: возвращаемая строка может меняться в будущем.

Deprecated:
Внимание: начиная с версии 0.15.0.0, функция не поддерживается и может быть удалена в последующих версиях плагина. Используйте метод getDeviceInfo.
Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
Возвращает:

Тип устройства в виде человеко-понятной строки

getDeviceType(deviceId) → {Promise< Pkcs11DeviceBase::DeviceType >}

Получение константы, обозначающей тип устройства.

Deprecated:
Внимание: начиная с версии 0.15.0.0, функция не поддерживается и может быть удалена в последующих версиях плагина. Используйте метод getDeviceInfo.
Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
Возвращает:

deviceType Тип устройства в виде числовой константы

getJournal(deviceId, keyId, options) → {object}

Получение журнала операций на токене и его журнала, сформированной на соответствующем ключе. Если с момента подключения токена никаких операций не производилось будет возвращен null

Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
2
keyIdstringИдентификатор ключа
3
optionsobjectМассив, содержащий дополнительные параметры - объекты вида {параметр:значение} (зарезервирован для будущего использования)
Возвращает:

Ассоциативный массив с полями journal и signature

getKeyByCertificate(deviceId, certId) → {string}

Получение идентификатора ключевой пары по сертификату. Для выполнения этой функции требуется авторизоваться на устройстве.

Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
2
certIdstringИдентификатор сертификата
Возвращает:

Идентификатор ключа (hex)

getKeyLabel(deviceId, keyId) → {string}

Получение метки секретного ключа. Для выполнения этой функции требуется авторизоваться на устройстве.

Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
2
keyIdstringИдентификатор ключа
Возвращает:

Метка закрытого ключа

getLicence(deviceId, licenceId) → {object}

Получение лицензии с токена

Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
2
licenceIdnumberИдентификатор лицензии (значения 1, 2)
Возвращает:

Ассоциативный массив с полями journal и signature

getPublicKeyValue(deviceId, keyId, options) → {string}

Получение значения открытого ключа. Не поддерживается для ключей RSA. Для выполнения этой функции требуется авторизоваться на устройстве.

Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
2
keyIdstringИдентификатор ключа
3
optionsobjectМассив, содержащий дополнительные параметры - объекты вида {параметр:значение} (зарезервирован для будущего использования)
Возвращает:

Открытый ключ (hex)

importCertificate(deviceId, certificate, category) → {string}

Импорт сертификата на устройство. Для выполнения этой функции требуется авторизоваться на устройстве.

Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
2
certificatestringТело сертификата в формате BASE64
3
categorynumberТип сертификата, задается константами:
  • CERT_CATEGORY_UNSPEC - категория сертификата не уточняется
  • CERT_CATEGORY_USER - пользовательский сертификат. Может быть использован в операциях, требующих операцию подписи
  • CERT_CATEGORY_CA - доверенный в рамках текущего устройства сертификат
  • CERT_CATEGORY_OTHER - сертификат третьей стороны
Возвращает:

Идентификатор сертификата (hex)

login(deviceId, pin)

Авторизация на устройстве

Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
2
pinstringPIN-код доступа к устройству
logout(deviceId)

Закрытие сессии

Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
parseCertificate(deviceId, certId) → {object}

Получение ассоциативного массива с разобранными полями из сертификата.

Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
2
certIdstringИдентификатор сертификата, полученный в результате вызова enumerateCertificates
Возвращает:

Ассоциативный массив объектов

parseCertificateFromString(text) → {object}

Получение ассоциативного массива с разобранными полями из сертификата.

Параметры:
Name Type Attributes Default Description
1
textstringТело сертификата в BASE64
Возвращает:

Ассоциативный массив объектов

rawSign(deviceId, keyId, data, options) → {string}

Подпись на ключе. Аргумент options принимает параметры подписи. Доступны следующие опции (в скобках указано значение по умолчанию):

  • computeHash:bool (false) - производить хеширование переданных данных
  • useHardwareHash:bool (false) - производить аппаратное хеширование данных, только если computeHash = true
  • invisible:bool (false) - производить подпись данных в режиме без отображения на PINPad 2
  • hashAlgorithm:enum - алгоритм хэширования (необходимо указывать для ключей RSA, даже если computeHash выставлен в false), варианты: GOST3411_94, MD5, SHA1, SHA256, SHA512.
Для выполнения этой функции требуется авторизоваться на устройстве.

Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
2
keyIdstringИдентификатор ключа
3
datastringПодписываемый хеш (hex-строка) или текстовые данные
4
optionsobjectМассив, содержащий параметры подписи - объекты вида {параметр:true/false}
Возвращает:

Электронно-цифровая подпись (hex)

removePin(deviceId)

Удаление закешированного PIN-кода из файла.

Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
savePin(deviceId)

Сохранение PIN-кода в файл для автоматической аутентификации.

Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
setKeyLabel(deviceId, keyId, label)

Установка метки секретного ключа. Для выполнения этой функции требуется авторизоваться на устройстве.

Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
2
keyIdstringИдентификатор ключа
3
labelstringНовая метка закрытого ключа
setLicence(deviceId, licenceId, licence)

Запись лицензии на токен

Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
2
licenceIdnumberИдентификатор лицензии (значения 1, 2)
3
licencestring72 байта данных, представленные в hex-строке
sign(deviceId, certId, data, isBase64, options) → {string}

Вычисление цифровой подписи. Не поддерживается для ключей RSA. Аргумент options принимает параметры подписи. Доступны следующие опции (в скобках указано значение по умолчанию):

  • detached:bool (false) - генерировать отсоединенную подпись
  • addUserCertificate:bool (false) - включить в подпись сертификат пользователя
  • addSignTime:bool (false) - включить в подпись время подписи
  • useHardwareHash:bool (false) - производить аппаратное хеширование данных
  • invisible:bool (false) - производить подпись данных в режиме без отображения на PINPad 2
Для выполнения этой функции требуется авторизоваться на устройстве.

Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
2
certIdstringИдентификатор сертификата
3
datastringПодписываемые данные (текстовая строка или base64-encoded бинарные данные)
4
isBase64booleanФлаг, данные передаются в кодировке base64 или нет
5
optionsobjectМассив, содержащий параметры подписи - объекты вида {параметр:true/false}
Возвращает:

Электронно-цифровая подпись (base64)

verify(deviceId, cms, options) → {bool}

Проверка цифровой подписи. Аргумент options принимает параметры проверки подписи. Доступны следующие опции (в скобках указано значение по умолчанию):

  • data:string (null) - подписанные данные (текстовые или base64-encoded), только в случае detached подписи;
  • base64:bool (false) - указывает, закодированы ли данные, переданные в data, в base64;
  • certificates:string[] (null) - набор сертификатов, на которых необходимо проверять подпись, при этом сертификаты, которые содержатся в cms, будут проигнорированы;
  • CA:string[] (null) - список дополнительных корневых сертификатов для проверки сертификата, кроме них берутся сертификаты с устройства;
  • CRL:string[] (null) - список отозванных сертификатов;
  • useHardwareHash:bool (false) - производить хеширование на устройстве (игнорируется для алгоритмов отличных от ГОСТ Р 34.10-2001);
  • verifyCertificate:bool (true) - проверить сертификат пользователя;

Параметры:
Name Type Attributes Default Description
1
deviceIdnumberИдентификатор устройства
2
cmsstringКонтейнер с цифровой подписью
3
optionsobjectМассив, содержащий параметры проверки подписи - объекты вида {параметр:значение}
Возвращает:

true - подпись верна / false - не верна