Class: CryptoPlugin
Главный класс, реализующий всю функциональность Рутокен Плагин.
Подсказка Для работы с Рутокен Плагином рекомендуется использовать модуль-обертку.
Для обращения к классу используется асинхронный интерфейс, возвращающий Promise. Подробнее об интерфейсе на странице Способы вызова методов.
Универсальный метод добавления обработчиков: Promise.then(onFulfilled, onRejected), где:
- onFulfilled – функция, которая будет вызвана при успешном выполнении метода;
- onRejected – функция, которая будет вызвана при ошибке выполнения метода.
Примеры:
// Пример инициализации Рутокен Плагина window.onload = function () { rutoken.ready // Проверка установки расширение 'Адаптера Рутокен Плагина' в Google Chrome .then(function () { if (window.chrome || typeof InstallTrigger !== 'undefined') { return rutoken.isExtensionInstalled(); } else { return Promise.resolve(true); } }) // Проверка установки Рутокен Плагина .then(function (result) { if (result) { return rutoken.isPluginInstalled(); } else { return Promise.reject("Не удаётся найти расширение 'Адаптер Рутокен Плагина'"); } }) // Загрузка Рутокен Плагина .then(function (result) { if (result) { return rutoken.loadPlugin(); } else { return Promise.reject("Не удаётся найти Рутокен Плагин"); } }) // Можно начинать работать с Рутокен Плагином .then(function (result) { if (!result) { return Promise.reject("Не удаётся загрузить Рутокен Плагин"); } else { plugin = result; return Promise.resolve(); } }); }// Пример функции обработки ошибок от Рутокен Плагина // В разделе Сlass: errorCodes описаны все возможные ошибки function handleError(reason) { if (isNaN(reason.message)) { alert(reason); } else { var errorCodes = plugin.errorCodes; switch (parseInt(reason.message)) { case errorCodes.PIN_INCORRECT: alert("Неверный PIN"); break; default: alert("Неизвестная ошибка"); } } }
Резюме
Свойства
| Название | Тип | Описание |
|---|---|---|
| errorCodes | ErrorCodesApi | Объект с константами ошибок |
| valid | bool | Правильно созданный объект всегда возвращает true |
| version | string | Версия Рутокен Плагина в формате 1.2.3.4 |
Методы
| Название | Описание |
|---|---|
| authenticate | Аутентификация по сертификату |
| changePin | Изменение PIN-кода Пользователя |
| cmsDecrypt | Расшифрование данных в формате CMS |
| cmsEncrypt | Шифрование данных в формате CMS |
| createBinaryFile | Создание бинарного файла на устройстве |
| createPkcs10 | Формирование самоподписанного PKCS#10 запроса |
| createTsRequest | Создание запроса на метку времени |
| deleteBinaryFile | Удаление бинарного файла с устройства |
| deleteCertificate | Удаление сертификата с устройства |
| deleteKeyPair | Удаление ключевой пары |
| derive | Выработка ключа обмена |
| digest | Вычисление хеша |
| enumerateBinaryFiles | Получение перечня идентификаторов бинарных файлов |
| enumerateCertificates | Получение массива с идентификаторами сертификатов |
| enumerateDevices | Получение идентификаторов доступных устройств |
| enumerateKeys | Получение массива с идентификаторами закрытых ключей в HEX |
| enumerateStoreCertificates | Получение массива с идентификаторами установленных в системном хранилище сертификатов |
| formatToken | Форматирование токена |
| generateKeyPair | Генерация ключевой пары на устройстве |
| getBinaryFileInfo | Получение информации о бинарном файле |
| getCertificate | Получение тела сертификата в формате PEM |
| getCertificateInfo | Получение информации о сертификате |
| getCertLabel | Получение метки сертификата |
| getDeviceInfo | Получение информации об устройстве |
| getJournal | Получение журнала операций устройства и журнала, сформированного на соответствующем ГОСТ-ключе |
| getKeyByCertificate | Получение идентификатора ключевой пары по сертификату |
| getKeyInfo | Получение информации о ключе |
| getKeyLabel | Получение метки закрытого ключа |
| getLicence | Получение лицензии с токена |
| getPublicKeyValue | Получение значения открытого ключа |
| getStoreCertificate | Получение тела сертификата из системного хранилища в формате PEM |
| importCertificate | Импорт сертификата на устройство |
| isLoginBioRequired | Проверка необходимости аутентификации по отпечатку пальца |
| login | Авторизация на устройстве |
| loginBio | Авторизация на устройстве с помощью отпечатка пальца |
| logout | Закрытие сессии |
| logoutBio | Закрытие сессии, открытой с помощью отпечатка пальца |
| parseCertificate | Получение ассоциативного массива с разобранными полями из сертификата |
| parseCertificateFromString | Получение ассоциативного массива с разобранными полями из сертификата из строки |
| rawSign | Подпись на ключе |
| readBinaryFile | Чтение бинарного файла |
| removePin | Удаление закешированного PIN-кода из файла |
| savePin | Сохранение PIN-кода в файл для автоматической аутентификации |
| setCertLabel | Установка метки сертификата |
| setKeyLabel | Установка метки закрытого ключа |
| setLicence | Запись лицензии на токен |
| sign | Вычисление электронной подписи |
| stopLoginBio | Остановка попытки авторизации на устройстве с помощью отпечатка пальца: останавливается попытка получить скан отпечатка пальца |
| tokenMonitor | Асинхронный мониторинг токена |
| unblockUserPin | Разблокировка заблокированного PIN-кода Пользователя |
| verify | Криптографическая проверка электронной подписи сообщения в формате CMS, CAdES-BES, CAdES-T, а также опциональная проверка цепочки сертификатов подписанта |
| verifyTsResponse | Проверка метки доверенного времени |
Подробно
Методы
- authenticate(deviceId, certId, salt) → {string}
Аутентификация по сертификату.
Предупреждение С версии Рутокен Плагин 2.8.5 метод считается устаревшим и не рекомендуется к применению. В будущих обновлениях он может быть удален из состава продукта. Используйте метод rawSign.
- changePin(deviceId, authPin, newPin, options)
Изменение PIN-кода Пользователя.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2authPin string Текущий PIN-код Пользователя или PIN-код Администратора 3newPin string Новый PIN-код Пользователя 4options object Объект, содержащий дополнительные параметры в виде пар "опция: значение" Параметры (опции) аргумента options:
- cmsDecrypt(deviceId, keyId, cmsData, options) → {string}
Расшифрование данных в формате CMS.
Примечание Для выполнения этого метода требуется авторизоваться на устройстве.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2keyId string Идентификатор ключа для расшифрования 3cmsData string CMS-сообщение в формате PEM или Base64, содержащее зашифрованные данные 4options object Объект, содержащий параметры расшифрования в виде пар "опция: значение" Параметры (опции) аргумента options:
Возвращает:
Расшифрованные данные
- cmsEncrypt(deviceId, certId, recipientCerts, data, options) → {string}
Шифрование данных в формате CMS.
Примечание Для выполнения этого метода требуется авторизоваться на устройстве.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2certId string Идентификатор сертификата. Зарезервировано для будущего использования 3recipientCerts object Массив, содержащий сертификаты получателей в PEM-формате 4data string Данные для шифрования (текстовая строка или Base64-encoded бинарные данные) 5options object Объект, содержащий параметры шифрования в виде пар "опция: значение" Параметры (опции) аргумента options:
Возвращает:
Зашифрованные данные в формате CMS
- createBinaryFile(deviceId, fileName, fileBuffer, isPrivate) → {string}
Создание бинарного файла на устройстве.
Примечание Для выполнения этого метода требуется авторизоваться на устройстве.
Примечание При создании бинарных файлов альтернативными способами (например, через библиотеку rtPKCS11ECP) необходимо придерживаться ограничений.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2fileName string Имя (идентификатор) создаваемого файла 3fileBuffer string Тело создаваемого файла в Base64 4isPrivate bool Идентификатор доступа (доступен ли файл только из приватной сессии) Возвращает:
Строка с идентификатором созданного бинарного файла
- createPkcs10(deviceId, keyId, subject, extensions, options) → {string}
Формирование самоподписанного PKCS#10 запроса.
Примечание Для выполнения этого метода требуется авторизоваться на устройстве.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2keyId string Идентификатор ключа 3subject object Массив объектов, описывающих атрибуты субъекта сертификата. Каждый объект имеет вид: { rdn: "string", value: "string" }.
Список поддерживаемых имен атрибутов (rdn):- commonName/CN;
- surname/SN;
- givenName/GN;
- countryName/C;
- stateOrProvinceName/ST;
- localityName/L;
- streetAddress/street;
- organizationName/O;
- organizationalUnitName/OU;
- title;
- OGRN;
- SNILS;
- INN;
- INNLE;
- OGRNIP;
- postalAddress;
- pseudonym;
- emailAddress.
4extensions object Ассоциативный массив, содержащий массивы расширений: - keyUsage: ["digitalSignature",...];
- extKeyUsage: ["oid", "longName" ];
- certificatePolicies: ["OID", ...];
- privateKeyUsagePeriod: { notBefore: number, notAfter: number} – объект, содержащий опциональные поля в формате Unix-время (целое число секунд, прошедших с 1970.01.01.00:00:00):
- notBefore – дата начала валидности закрытого ключа;
- notAfter – дата окончания валидности закрытого ключа;
- требования к полям privateKeyUsagePeriod (несоблюдение хотя бы одного приведет к ошибке):
- дата начала/окончания валидности закрытого ключа должна принадлежать диапазону от 1970.01.01.00:00:00 до 9999.12.31.23:59:59 включительно;
- если поля notBefore и notAfter заданы одновремено, то значение в поле notBefore должно быть меньше значения в поле notAfter;
- атрибуты закрытого ключа CKA_START_DATE/CKA_END_DATE должны быть не заданы.
5options object Дополнительные опции Параметры (опции) аргумента options:
Возвращает:
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: "pseudonym" } ,{ 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 privateKeyUsagePeriod = { notBefore: 1714510800, // 2024.04.30 21:00:00 notAfter: 1809118800, // 2027.04.30 21:00:00 }; var extensions = { "keyUsage": keyUsageVal, "extKeyUsage": extKeyUsageVal, "certificatePolicies": certificatePolicies "privateKeyUsagePeriod": privateKeyUsagePeriod }; var options = { "subjectSignTool": 'СКЗИ "РУТОКЕН ЭП"', "hashAlgorithm": plugin.HASH_TYPE_GOST3411_12_256, "customExtensions": [ { oid: "1.3.6.1.4.1.311.21.7", value: "MA0GCCqFAwICLgAIAgEB", criticality: false } ] }; plugin.createPkcs10(deviceID, keyID, subject, extensions, options); }- createTsRequest(data, dataFormat, hashType, options) → {string}
Создание запроса на метку времени.
Параметры:
Название Тип Описание 1data string Данные, для которых нужно создать метку времени 2dataFormat number Формат данных.
Если формат данных – DATA_FORMAT_HASH, то в параметр data передается посчитанный хеш от данных (hex-строка)3hashType number Алгоритм хеширования 4options object Дополнительные опции Параметры (опции) аргумента options:
Возвращает:
Запрос (Base64)
- deleteBinaryFile(deviceId, fileName)
Удаление бинарного файла с устройства.
Шаблон поиска аналогичен шаблону поиска бинарного файла с добавлением CKA_LABEL = <имя файла>.
Примечание Для выполнения этого метода требуется авторизоваться на устройстве.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2fileName string Имя (идентификатор) бинарного файла, полученное в результате вызова enumerateBinaryFiles - deleteCertificate(deviceId, certId)
Удаление сертификата с устройства.
Примечание Для выполнения этого метода требуется авторизоваться на устройстве.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2certId string Идентификатор сертификата, полученный в результате вызова enumerateCertificates - deleteKeyPair(deviceId, keyId)
Удаление ключевой пары.
Примечание Для выполнения этого метода требуется авторизоваться на устройстве.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2keyId string Идентификатор закрытого ключа из ключевой пары - derive(deviceId, keyId, publicKey, options) → {string}
Выработка ключа обмена.
Примечание Для выполнения этого метода требуется авторизоваться на устройстве.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2keyId string Идентификатор закрытого ключа 3publicKey string Открытый ключ (hex-строка) (для ECDSA uncompressed форма) 4options object Объект, содержащий параметры подписи в виде пар "опция: значение" Параметры (опции) аргумента options:
Возвращает:
Выработанный ключ (hex)
- digest(deviceId, hashType, data, options) → {string}
Вычисление хеша.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2hashType number Алгоритм хеширования.
Следующие алгоритмы хеширования доступны только при опции useHardwareHash = false:3data string Хешируемые данные 4options object Объект, содержащий параметры хеширования в виде пар "опция: значение" Параметры (опции) аргумента options:
Возвращает:
Хеш (hex)
- enumerateBinaryFiles(deviceId) → {string[]}
Получение перечня идентификаторов бинарных файлов.
Поиск бинарных файлов осуществляется по шаблону.
Примечание Приватные бинарные файлы доступны только из приватной сессий.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства Возвращает:
Массив строк с идентификаторами бинарных файлов
- enumerateCertificates(deviceId, category) → {string[]}
Получение массива с идентификаторами сертификатов.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2category number Категория сертификата Возвращает:
Массив строк с идентификаторами сертификатов
- enumerateDevices(options) → {number[]}
Получение идентификаторов доступных устройств.
Подсказка Доступен новый метод для асинхронного мониторинга токена – tokenMonitor.
Параметры:
Название Тип Описание 1options object Объект, содержащий дополнительные параметры в виде пар "опция: значение" Параметры (опции) аргумента options:
Возвращает:
Список идентификаторов устройств
- enumerateKeys(deviceId, marker) → {string[]}
Получение массива с идентификаторами закрытых ключей в HEX.
Примечание Для выполнения этого метода требуется авторизоваться на устройстве.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2marker string Идентификатор группы ключей, "" – все ключи Возвращает:
Массив строк с идентификаторами закрытых ключей (hex)
- enumerateStoreCertificates(options) → {string[]}
Получение массива с идентификаторами установленных в системном хранилище сертификатов.
Предупреждение С версии Рутокен Плагин 4.11.0 метод считается устаревшим и не рекомендуется к применению. В будущих обновлениях он может быть удален из состава продукта. Используйте метод enumerateCertificates.
- formatToken(deviceId, options)
Форматирование токена.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2options object Объект, содержащий дополнительные параметры в виде пар "опция: значение" Параметры (опции) аргумента options:
- generateKeyPair(deviceId, reserved, marker, options) → {string}
Генерация ключевой пары на устройстве.
Примечание Для выполнения этого метода требуется авторизоваться на устройстве.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2reserved string Зарезервировано для будущего использования (необходимо передавать undefined) 3marker string Идентификатор группы ключей 4options object Объект, содержащий дополнительные свойства ключевой пары в виде пар "опция: значение" Параметры (опции) аргумента options:
Возвращает:
ID ключа (hex)
Примеры:
// Преобразование шестнадцатеричного id ключевой пары в формат для ЕГАИС function asciitohex(str){ var result = []; for (var n = 0, l = str.length; n < l; n++) { var code = str.charCodeAt(n); if(code > 128 || code == 32) continue; var hex = code.toString(16); result.push(hex); } return result.join(':'); }// Генерация ключевой пары c возможностью обмена только на поддерживающих это токенах // Генерация ключевой пары будет производиться на устройстве с этим // идентификатором, полученным из enumerateDevices() var deviceId = 0; var info = plugin.TOKEN_INFO_SUPPORTED_MECHANISMS; plugin.pluginObject.getDeviceInfo(deviceId, info).then(function (result) { // Определение, поддерживает ли устройство генерацию симметричного ключа // по алгоритмам ГОСТ var supportedMechs = result["keyExchange"]["hardware"]; var exchangeSupported = supportedMechs.includes( plugin.PUBLIC_KEY_ALGORITHM_EXCHANGE_VKO_GOST3410_2012_256) || supportedMechs.includes( plugin.PUBLIC_KEY_ALGORITHM_EXCHANGE_VKO_GOST3410_2012_512); // Авторизация на устройстве plugin.pluginObject.login(deviceId, "12345678").then(function () { var algorithm = plugin.PUBLIC_KEY_ALGORITHM_GOST3410_2012_256; var options = { "publicKeyAlgorithm": algorithm }; // Параметры ключевой пары ГОСТ options.paramset = "TC26-A"; options.signatureSize = 512; options.id = "AA:BB:CC"; // Идентификатор ключевой пары // Если Рутокен поддерживает генерацию симметричного ключа, // тогда назначение ключевой пары должно быть // "обмен сообщениями (шифрование) и подпись". // Если поддержка отсутствует, то назначение следует указать как // "подпись" if (exchangeSupported) options.keySpec = plugin.KEY_SPEC_SIGN_AND_EXCHANGE; else options.keySpec = plugin.KEY_SPEC_SIGN; var marker = "Test"; // Метка // Генерация ключевой пары с выбранным назначением plugin.pluginObject.generateKeyPair(deviceId, undefined, marker, options). then(function () { console.info("Success"); // Закрытие сессии plugin.pluginObject.logout(deviceId).then(function () { }, function (errorCode) { console.error(errorCode) }); }, function (errorCode) { console.error(errorCode) }); }, function (errorCode) { console.error(errorCode) }); }, function (errorCode) { console.error(errorCode) });- getBinaryFileInfo(deviceId, fileName, option) → {object}
Получение информации о бинарном файле.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2fileName string Имя (идентификатор) бинарного файла 3option number Тип запрашиваемой информации.
Задается константой BINARY_FILE_INFO_PRIVATE, передача которой возвращает флаг приватности бинарного файлаВозвращает:
Информация о бинарном файле
- getCertificate(deviceId, certId) → {string}
Получение тела сертификата в формате PEM.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2certId string Идентификатор сертификата Возвращает:
Описатель сертификата в виде объекта
- getCertificateInfo(deviceId, certId, option) → {object}
Получение информации о сертификате.
Примечание Для выполнения этого метода требуется авторизоваться на устройстве.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2certId string Идентификатор сертификата 3option number Тип запрашиваемой информации.
Задается константой CERT_INFO_SERIAL_NUMBER, передача которой возвращает серийный номер сертификата в формате hex-строкиВозвращает:
Для серийного номера сертификата – строка (hex)
- getCertLabel(deviceId, certId) → {string}
Получение метки сертификата.
Примечание Для выполнения этого метода требуется авторизоваться на устройстве.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2certId string Идентификатор сертификата Возвращает:
Метка сертификата
- getDeviceInfo(deviceId, option, options) → {object}
Получение информации об устройстве.
Тип возвращаемой информации задается константами в параметре option.Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2option number Тип запрашиваемой информации 3options number Идентификатор набора отпечатков пальцев. Используется, если на токене есть несколько наборов отпечатков и только при передаче TOKEN_INFO_BIO_ATTEMPTS_INFO в параметр option Возвращает:
Информация об устройстве в зависимости от типа запрашиваемой информации
- getJournal(deviceId, keyId, options) → {object}
Получение журнала операций устройства и журнала, сформированного на соответствующем ГОСТ-ключе.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2keyId string Идентификатор ключа 3options object Объект, содержащий дополнительные параметры. Зарезервирован для будущего использования Возвращает:
Ассоциативный массив с полями "journal" и "signature". Если с момента подключения токена никаких операций не производилось, то возвращается null
- getKeyByCertificate(deviceId, certId) → {string}
Получение идентификатора ключевой пары по сертификату.
Примечание Для выполнения этого метода требуется авторизоваться на устройстве.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2certId string Идентификатор сертификата Возвращает:
Идентификатор ключа (hex)
- getKeyInfo(deviceId, keyId, option) → {object}
Получение информации о ключе.
Примечание Для выполнения этого метода требуется авторизоваться на устройстве.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2keyId string Идентификатор ключа 3option number Тип запрашиваемой информации Возвращает:
Информация о ключе в зависимости от типа запрашиваемой информации
- getKeyLabel(deviceId, keyId) → {string}
Получение метки закрытого ключа.
Примечание Для выполнения этого метода требуется авторизоваться на устройстве.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2keyId string Идентификатор ключа Возвращает:
Метка закрытого ключа
- getLicence(deviceId, licenceId) → {string}
Получение лицензии с токена.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2licenceId number Идентификатор лицензии (значения 1, 2) Возвращает:
Лицензия (hex)
- getPublicKeyValue(deviceId, keyId, options) → {string}
Получение значения открытого ключа.
Предупреждение Не поддерживается для ключей RSA.
Примечание Для выполнения этого метода требуется авторизоваться на устройстве.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2keyId string Идентификатор ключа 3options object Объект, содержащий дополнительные параметры. Зарезервирован для будущего использования Возвращает:
Открытый ключ (hex) (для ECDSA uncompressed форма)
- getStoreCertificate(certId, options) → {string}
Получение тела сертификата из системного хранилища в формате PEM.
Предупреждение С версии Рутокен Плагин 4.11.0 метод считается устаревшим и не рекомендуется к применению. В будущих обновлениях он может быть удален из состава продукта. Используйте метод getCertificate.
- importCertificate(deviceId, certificate, category) → {string}
Импорт сертификата на устройство.
Примечание Для выполнения этого метода требуется авторизоваться на устройстве.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2certificate string Тело сертификата в PEM-формате 3category number Категория сертификата Возвращает:
Идентификатор сертификата (hex)
- isLoginBioRequired(deviceId, objectId) → {bool}
Проверка необходимости аутентификации по отпечатку пальца.
Примечание Для выполнения этого метода требуется авторизоваться на устройстве.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2objectId string Идентификатор закрытого ключа или сертификата Возвращает:
true – для работы с ключевой парой/сертификатом необходимо пройти аутентификацию по отпечатку пальца. false – для работы с ключевой парой/сертификатом не требуется аутентификация по отпечатку пальца (она уже выполнена или объект не защищен отпечатком)
- login(deviceId, pin)
Авторизация на устройстве.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2pin string PIN-код доступа к устройству - loginBio(deviceId, options, callback) → {bool}
Авторизация на устройстве с помощью отпечатка пальца.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2options object Набор дополнительных опций в виде пар "опция: значение" 3callback function Функция обратного вызова, выполняющая действия после получения информации со сканера отпечатков пальцев или при истечении таймаута Параметры (опции) аргумента options:
Возвращает:
true – авторизация успешна / false – авторизация не успешна
Пример:
var deviceId; // Идентификатор токена var objId; // keyId или certId // 1. Определение поддержки биометрии токеном function isSupportBio(deviceId) { return plugin.getDeviceInfo(deviceId, plugin.TOKEN_INFO_MODEL) .then(function(result) { return result == "Rutoken BIO"; }); } // 2. Получение максимального количества попыток входа с помощью биометрии function attemptsBioMax(deviceId) { return plugin.getDeviceInfo(deviceId, plugin.TOKEN_INFO_BIO_ATTEMPTS_INFO) .then(function(result) { return result.attemptsMax; }); } // 3. Получение количества оставшихся попыток входа с помощью биометрии function attemptsBioLeft(deviceId) { return plugin.getDeviceInfo(deviceId, plugin.TOKEN_INFO_BIO_ATTEMPTS_INFO) .then(function(result) { return result.attemptsLeft; }); } // 4. Создание ключевой пары, защищенной с помощью биометрии // Предварительно требуется вход на токен с помощью PIN-кода (метод login) function generateBioKeyPair(deviceId) { var options = {}; options.linkToBiometrics = true; // Флаг - создаваемую ключевую пару нужно связать с биометрией // Далее необходимо указать другие параметры создаваемой ключевой пары в параметре options var marker = "Test"; // Метка return plugin.generateKeyPair(deviceId, undefined, marker, options); } // 5. Проверка, защищен ли объект с помощью биометрии function isLoginBioRequired(deviceId, objId) { return plugin.isLoginBioRequired(deviceId, objId); } // 6. Вход на устройство с помощью биометрии function loginBio(deviceId) { var options = {}; options.timeout = 10000; // Время ожидания получения отпечатка пальца от сканера (10 сек). // Для бесконечного ожидания параметр не передается, или передается timeout = 0 plugin.loginBio(deviceId, options, function(isLoginBioSuccessful) { // Данная функция (callback) вызывется после получения отпечатка и попытки логина return isLoginBioSuccessful; }) .then(function () { // Данная функция (resultCallback) вызывется после запуска ожидания получения отпечатка пальца } } } // 7. Выход с устройства, на которое вход был выполнен с помощью биометрии function logoutBio(deviceId) { return plugin.logoutBio(deviceId); } // 8. Прерывание loginBio function stopLoginBio() { return plugin.stopLoginBio(); } // 9. Для работы с закрытым ключом (например, подписание документов) требуется // предварительный вход на токен с помощью PIN-кода (метод login)- logout(deviceId)
Закрытие сессии.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства - logoutBio(deviceId)
Закрытие сессии, открытой с помощью отпечатка пальца.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства - parseCertificate(deviceId, certId) → {object}
Получение ассоциативного массива с разобранными полями из сертификата.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2certId string Идентификатор сертификата, полученный в результате вызова enumerateCertificates Возвращает:
Ассоциативный массив объектов
- parseCertificateFromString(text) → {object}
Получение ассоциативного массива с разобранными полями из сертификата из строки.
Параметры:
Название Тип Описание 1text string Тело сертификата в PEM-формате Возвращает:
Ассоциативный массив объектов
- rawSign(deviceId, keyId, data, options) → {string}
Подпись на ключе.
Примечание Для выполнения этого метода требуется авторизоваться на устройстве.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2keyId string Идентификатор закрытого ключа 3data string Подписываемый хеш (hex-строка) или текстовые данные 4options object Объект, содержащий параметры подписи в виде пар "опция: значение" Параметры (опции) аргумента options:
Возвращает:
Электронная подпись (hex)
- readBinaryFile(deviceId, fileName) → {string}
Чтение бинарного файла.
Примечание Приватные бинарные файлы доступны только из приватной сессий.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2fileName string Имя (идентификатор) бинарного файла, полученное в результате вызова enumerateBinaryFiles Возвращает:
Тело считанного бинарного файла
- removePin(deviceId)
Удаление закешированного PIN-кода из файла.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства - savePin(deviceId)
Сохранение PIN-кода в файл для автоматической аутентификации.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства - setCertLabel(deviceId, certId, label)
Установка метки сертификата.
Примечание Для выполнения этого метода требуется авторизоваться на устройстве.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2certId string Идентификатор сертификата 3label string Новая метка сертификата - setKeyLabel(deviceId, keyId, label)
Установка метки закрытого ключа.
Примечание Для выполнения этого метода требуется авторизоваться на устройстве.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2keyId string Идентификатор ключа 3label string Новая метка закрытого ключа - setLicence(deviceId, licenceId, licence)
Запись лицензии на токен.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2licenceId number Идентификатор лицензии (значения 1, 2) 3licence string 72 байта данных, представленные в hex-строке - sign(deviceId, certId, data, dataFormat, options) → {string}
Вычисление электронной подписи.
В зависимости от параметров можно получить подпись в форматах CMS (RFC5652), CAdES-BES (RFC5126, 4.3.1), CAdES-T (RFC5126, 4.4.1).
Примечание Для выполнения этого метода требуется авторизоваться на устройстве.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2certId string Идентификатор сертификата 3data string Подписываемые данные (текстовая строка или Base64-encoded бинарные данные) 4dataFormat number Формат данных.
Если формат данных – DATA_FORMAT_HASH, то в параметр data передается посчитанный хеш сообщения (hex-строка), при этом необходимо присвоить опции detached значение true5options object Объект, содержащий параметры подписи в виде пар "опция: значение" Параметры (опции) аргумента options:
Возвращает:
Электронная подпись (в формате Base64 или PEM)
- stopLoginBio()
Остановка попытки авторизации на устройстве с помощью отпечатка пальца: останавливается попытка получить скан отпечатка пальца.
- tokenMonitor(callback)
Асинхронный мониторинг токена.
Параметры:
Название Тип Описание 1callback function Функция обратного вызова для случая успешного выполнения.
Функция должна принимать параметр type (тип события: "connected" или "disconnected") и параметр slotId (идентификатор слота, в котором произошло событие)- unblockUserPin(deviceId, adminPin)
Разблокировка заблокированного PIN-кода Пользователя.
Примечание Пользователь не должен быть авторизован.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2adminPin string PIN-код Администратора - verify(deviceId, cms, options) → {bool}
Криптографическая проверка электронной подписи сообщения в формате CMS, CAdES-BES, CAdES-T, а также опциональная проверка цепочки сертификатов подписанта.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2cms string Контейнер с электронной подписью в формате CMS (RFC5652) (PEM-формат или Base64) 3options object Объект, содержащий параметры проверки подписи в виде пар "опция: значение" Параметры (опции) аргумента options:
Возвращает:
true – подпись верна / false – не верна
- verifyTsResponse(deviceId, response, data, dataFormat, options) → {bool}
Проверка метки доверенного времени.
Параметры:
Название Тип Описание 1deviceId number Идентификатор устройства 2response string Base64-encoded метка доверенного времени (TSResponse) 3data string Запрос метки доверенного времени (TSRequest) 4dataFormat number Формат данных. Задается константой DATA_FORMAT_BASE64 5options object Объект, содержащий параметры проверки подписи в виде пар "опция: значение" Параметры (опции) аргумента options:
Возвращает:
true – метка верна / false – метка не верна