Типы плагинов

В составе дистрибутива инсталлируются 2 плагина, которые отличаются MIME-типами и методами возврата.  

Первый плагин имеет тип x-rutoken-pki, результат или ошибка возвращаются посредством функций обратного вызова (асинхронно), либо же с помощью исключений (синхронно). Данный плагин может использоваться в браузерах Interrnet Explorer/Mozilla Firefox.

Второй плагин имеет тип x-rutoken-pki-2, результат или ошибка возвращаются посредством promise (асинхронно). Данный плагин может использоваться в браузерах Google Chrome/Mozilla Firefox.

Для работы второго плагина в браузере Google Chrome должно быть установлено расширение https://chrome.google.com/webstore/detail/%D1%80%D1%83%D1%82%D0%BE%D0%BA%D0%B5%D0%BD-%D0%BF%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD/ajkjmgdmgaeacamdgdbkcbkhoecjkfmk?hl=ru и включена галочка "Разрешить открывать файлы по ссылкам".

 

Способы вызова функций

 

Асинхронный интерфейс c использованием функций обратного вызова

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

<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>


Асинхронный интерфейс с использованием promise

<object type="application/x-rutoken-pki-2" id="plugin"></object>
<script type="text/javascript">
// получение объекта плагина
var plugin = document.getElementById("plugin");
plugin.valid.then(function() { 
    // ok! Plugin loaded;
    Goahead();
}, function(){
    alert("Couldn't load plugin");
});

// использование асинхронного интерфейса
function Goahead() {
	plugin.enumerateDevices().then(
    function(devices) {
        console.log(devices);
    },
    function(error) {
        console.log(error);
    })
};
</script>

 

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");
}
// использование синхронного интерфейса
var devices = Array();
try {
    devices = plugin.enumerateDevices();
}
catch (error) {
    console.log(error);
}
</script>

Class: CryptoPlugin 

 

Главный класс плагина. Реализует всю функциональность плагина.

Свойства

errorCodes   

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

       Общие ошибки

errorCodes.UNKNOWN_ERROR: "Неизвестная ошибка";

errorCodes.BAD_PARAMS: "Неправильные параметры";

errorCodes.DEVICE_NOT_FOUND: "Устройство не найдено";

errorCodes.CERTIFICATE_CATEGORY_BAD: "Недопустимый тип сертификата";

errorCodes.CERTIFICATE_EXISTS: "Сертификат уже существует на устройстве";

errorCodes.PKCS11_LOAD_FAILED: "Не удалось загрузить PKCS#11 библиотеку";

errorCodes.NOT_ENOUGH_MEMORY: "Недостаточно памяти";

errorCodes.PIN_LENGTH_INVALID: "Некорректная длина PIN-кода";

errorCodes.PIN_INCORRECT: "Некорректный PIN-код";

errorCodes.PIN_LOCKED: "PIN-код заблокирован";

errorCodes.PIN_CHANGED: "PIN-код был изменен";

errorCodes.SESSION_INVALID: "Состояние токена изменилось";

errorCodes.USER_NOT_LOGGED_IN: "Выполните вход на устройство";

errorCodes.KEY_NOT_FOUND: "Соответствующая сертификату ключевая пара не найдена";

errorCodes.KEY_ID_NOT_UNIQUE: "Идентификатор ключевой пары не уникален";

errorCodes.CERTIFICATE_NOT_FOUND: "Сертификат не найден";

errorCodes.CERTIFICATE_HASH_NOT_UNIQUE: "Хэш сертификата не уникален";

errorCodes.TOKEN_INVALID: "Ошибка чтения/записи устройства. Возможно, устройство было извлечено";

errorCodes.BASE64_DECODE_FAILED: "Ошибка декодирования данных из BASE64";

errorCodes.PEM_ERROR: "Ошибка разбора PEM";

errorCodes.ASN1_ERROR: "Ошибка декодирования ASN1 структуры";

errorCodes.WRONG_KEY_TYPE: "Неправильный тип ключа";

errorCodes.NO_CA_CERTIFICATES_FOUND: "Сертификат УЦ не найден";

       errorCodes.FILE_READ_ERROR: "Ошибка чтения файла";

       errorCodes.FILE_WRITE_ERROR: "Ошибка записи файла";

       errorCodes.FILE_ALREADY_EXISTS_ERROR: "Файл с таким именем уже существует".

Ошибки проверки подписи

.      errorCodes.X509_UNABLE_TO_GET_ISSUER_CERT: "Невозможно получить сертификат подписанта";

       errorCodes.X509_UNABLE_TO_GET_CRL: "Невозможно получить CRL";

       errorCodes.X509_UNABLE_TO_DECRYPT_CERT_SIGNATURE: "Невозможно расшифровать подпись сертификата";

       errorCodes.X509_UNABLE_TO_DECRYPT_CRL_SIGNATURE: "Невозможно расшифровать подпись CRL";

       errorCodes.X509_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY: "Невозможно раскодировать открытый ключ эмитента";

       errorCodes.X509_CERT_SIGNATURE_FAILURE: "Неверная подпись сертификата";

       errorCodes.X509_CRL_SIGNATURE_FAILURE: "Неверная подпись CRL";

       errorCodes.X509_CERT_NOT_YET_VALID: "Срок действия сертификата еще не начался";

       errorCodes.X509_CRL_NOT_YET_VALID: "Срок действия CRL еще не начался";

       errorCodes.X509_CERT_HAS_EXPIRED: "Срок действия сертификата истек";

       errorCodes.X509_CRL_HAS_EXPIRED: "Срок действия CRL истек";

       errorCodes.X509_ERROR_IN_CERT_NOT_BEFORE_FIELD: "Некорректные данные в поле \"notBefore\" у сертификата";

       errorCodes.X509_ERROR_IN_CERT_NOT_AFTER_FIELD: "Некорректные данные в поле \"notAfter\" у сертификата";

       errorCodes.X509_ERROR_IN_CRL_LAST_UPDATE_FIELD: "Некорректные данные в поле \"lastUpdate\" у CRL";

       errorCodes.X509_ERROR_IN_CRL_NEXT_UPDATE_FIELD: "Некорректные данные в поле \"nextUpdate\" у CRL";

       errorCodes.X509_OUT_OF_MEM: "Не хватает памяти";

       errorCodes.X509_DEPTH_ZERO_SELF_SIGNED_CERT: "Недоверенный самоподписанный сертификат";

       errorCodes.X509_SELF_SIGNED_CERT_IN_CHAIN: "В цепочке обнаружен недоверенный самоподписанный сертификат";

       errorCodes.X509_UNABLE_TO_GET_ISSUER_CERT_LOCALLY: "Невозможно получить локальный сертификат подписанта";

       errorCodes.X509_UNABLE_TO_VERIFY_LEAF_SIGNATURE: "Невозможно проверить первый сертификат";

       errorCodes.X509_CERT_CHAIN_TOO_LONG: "Слишком длинная цепочка сертификатов";

       errorCodes.X509_CERT_REVOKED: "Сертификат отозван";

       errorCodes.X509_INVALID_CA: "Неверный корневой сертификат";

       errorCodes.X509_INVALID_NON_CA: "Неверный некорневой сертфикат, помеченный как корневой";

       errorCodes.X509_PATH_LENGTH_EXCEEDED: "Превышена длина пути";

       errorCodes.X509_PROXY_PATH_LENGTH_EXCEEDED: "Превышено количество промежуточных сертификатов";

       errorCodes.X509_PROXY_CERTIFICATES_NOT_ALLOWED: "Промежуточные сертификаты недопустимы";

       errorCodes.X509_INVALID_PURPOSE: "Неподдерживаемое назначение сертификата";

       errorCodes.X509_CERT_UNTRUSTED: "Недоверенный сертификат";

       errorCodes.X509_CERT_REJECTED: "Сертификат отклонен";

       errorCodes.X509_APPLICATION_VERIFICATION: "Ошибка проверки приложения";

       errorCodes.X509_SUBJECT_ISSUER_MISMATCH: "Несовпадения субьекта и эмитента";

       errorCodes.X509_AKID_SKID_MISMATCH: "Несовпадение идентификатора ключа у субьекта и доверенного центра";

       errorCodes.X509_AKID_ISSUER_SERIAL_MISMATCH: "Несовпадение серийного номера субьекта и доверенного центра";

       errorCodes.X509_KEYUSAGE_NO_CERTSIGN: "Ключ не может быть использован для подписи сертификатов";

       errorCodes.X509_UNABLE_TO_GET_CRL_ISSUER: "Невозможно получить CRL подписанта";

       errorCodes.X509_UNHANDLED_CRITICAL_EXTENSION: "Неподдерживаемое расширение";

       errorCodes.X509_KEYUSAGE_NO_CRL_SIGN: "Ключ не может быть использован для подписи CRL";

       errorCodes.X509_KEYUSAGE_NO_DIGITAL_SIGNATURE: "Ключ не может быть использован для цифровой подписи";

       errorCodes.X509_UNHANDLED_CRITICAL_CRL_EXTENSION: "Неподдерживаемое расширение CRL";

       errorCodes.X509_INVALID_EXTENSION: "Неверное или некорректное расширение сертификата";

       errorCodes.X509_INVALID_POLICY_EXTENSION: "Неверное или некорректное расширение политик сертификата";

       errorCodes.X509_NO_EXPLICIT_POLICY: "Явные политики отсутствуют";

       errorCodes.X509_DIFFERENT_CRL_SCOPE: "Другая область CRL";

       errorCodes.X509_UNSUPPORTED_EXTENSION_FEATURE: "Неподдерживаемое расширение возможностей";

       errorCodes.X509_UNNESTED_RESOURCE: "RFC 3779 неправильное наследование ресурсов";

       errorCodes.X509_PERMITTED_VIOLATION: "Неправильная структура сертификата";

       errorCodes.X509_EXCLUDED_VIOLATION: "Неправильная структура сертификата";

       errorCodes.X509_SUBTREE_MINMAX: "Неправильная структура сертификата";

       errorCodes.X509_UNSUPPORTED_CONSTRAINT_TYPE: "Неправильная структура сертификата";

       errorCodes.X509_UNSUPPORTED_CONSTRAINT_SYNTAX: "Неправильная структура сертификата";

       errorCodes.X509_UNSUPPORTED_NAME_SYNTAX: "Неправильная структура сертификата";

       errorCodes.X509_CRL_PATH_VALIDATION_ERROR: "Неправильный путь CRL".

valid {bool}

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

version {string}

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

Методы

Рутокен Плагин. Описание программного интерфейса.(deviceId, certId, salt, resultCallback, errorCallback) → {string}

Аутентификация по сертификату.

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

cmsDecrypt(deviceId, keyId, cmsData, options, resultCallback, errorCallback) → {string}

Расшифрование данных в формате CMS.

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

Рутокен Плагин. Описание программного интерфейса.(deviceId, certId, recipientCert, data, options, resultCallback, errorCallback) → {string}

Шифрование данных в формате CMS.

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

Рутокен Плагин. Описание программного интерфейса.(deviceId, keyId, subject, extensions, includeSubjSignTool, resultCallback, errorCallback) → {string}

Формирование самоподписанного запроса в формате PKCS#10.

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

Рутокен Плагин. Описание программного интерфейса.(filePath, password, resultCallback, errorCallback) → {bool}

Добавить виртуальное устройство с поддержкой алгоритма RSA 

Рутокен Плагин. Описание программного интерфейса.(deviceId, keyLabel, data, resultCallback, errorCallback) → {string}

Расшифрование данных в формате CMS.

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

Рутокен Плагин. Описание программного интерфейса.(deviceId, certId, resultCallback, errorCallback)

Удаление сертификата из токена.

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

Рутокен Плагин. Описание программного интерфейса.(deviceId, keyId, resultCallback, errorCallback)

Удаление ключевой пары.

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

Рутокен Плагин. Описание программного интерфейса.(deviceId, hashType, data, options, resultCallback, errorCallback)

Вычисление хеш-значения по заданному алгоритму от данных.

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

Рутокен Плагин. Описание программного интерфейса.(deviceId, keyLabel, data, resultCallback, errorCallback) → {string}

Шифрование данных на симметричном ключе.

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

Рутокен Плагин. Описание программного интерфейса.(deviceId, category, resultCallback, errorCallback) → {string[]}

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

Рутокен Плагин. Описание программного интерфейса.(resultCallback, errorCallback) → {number[]}

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

 Рутокен Плагин. Описание программного интерфейса.(deviceId, marker, resultCallback, errorCallback) → {string[]}

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

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

Рутокен Плагин. Описание программного интерфейса.(deviceId, params, marker, specialKey, resultCallback, errorCallback) → {string}

Генерация ключевой пары в устройстве.

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

Рутокен Плагин. Описание программного интерфейса.(deviceId, certId, resultCallback, errorCallback) → {string}

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

Рутокен Плагин. Описание программного интерфейса.(deviceId, option, resultCallback, errorCallback) → {object}

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

Рутокен Плагин. Описание программного интерфейса.(deviceId, resultCallback, errorCallback, deviceId) → {string}

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

getDeviceModel(deviceId, resultCallback, errorCallback) → {string}

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

Рутокен Плагин. Описание программного интерфейса.(deviceId, resultCallback, errorCallback) → {number}

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

Рутокен Плагин. Описание программного интерфейса.(deviceId, keyId, options, resultCallback, errorCallback) → {object}

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

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

Рутокен Плагин. Описание программного интерфейса.(deviceId, certId, resultCallback, errorCallback) → {string}

Получение ключа по сертификату.

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

Рутокен Плагин. Описание программного интерфейса.(deviceId, keyId, resultCallback, errorCallback) → {string}

Получение метки секретного ключа.

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

Рутокен Плагин. Описание программного интерфейса.(deviceId, keyId, options, resultCallback, errorCallback) → {string}

 Получение значения открытого ключа.

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

Рутокен Плагин. Описание программного интерфейса.(deviceId, certificate, category, resultCallback, errorCallback) → {string}

Импорт сертификата на токен.

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

Рутокен Плагин. Описание программного интерфейса.(deviceId, pin, resultCallback, errorCallback)

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

Рутокен Плагин. Описание программного интерфейса.(deviceId, resultCallback, errorCallback)

Закрытие сессии с устройством.

Рутокен Плагин. Описание программного интерфейса.(filePath, resultCallback, errorCallback) → {bool}

Ассоциирование существующего PKCS#12-контейнера с виртуальным устройством.

Рутокен Плагин. Описание программного интерфейса.(deviceId, certId, resultCallback, errorCallback) → {object}

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

Рутокен Плагин. Описание программного интерфейса.(text, resultCallback, errorCallback) → {object}

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

Рутокен Плагин. Описание программного интерфейса.(deviceId, keyId, data, options, resultCallback, errorCallback) → {string}

Вычисление "сырой" подписи.

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

Рутокен Плагин. Описание программного интерфейса.(deviceId, resultCallback, errorCallback) 

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

Рутокен Плагин. Описание программного интерфейса.(deviceId, resultCallback, errorCallback) 

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

Рутокен Плагин. Описание программного интерфейса.(deviceId, keyId, label, resultCallback, errorCallback)

Установка метки секретного ключа.

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

Рутокен Плагин. Описание программного интерфейса.(deviceId, certId, data, isBase64, object, resultCallback, options) → {string}

Вычисление цифровой подписи в формате CMS. 

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

Рутокен Плагин. Описание программного интерфейса.(deviceId, cms, options, resultCallback, errorCallback) → {bool}

Проверка цифровой подписи.

Подробнее

 

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

Аутентификация по сертификату.

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

Параметры:
 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2certIdstringИдентификатор сертификата
3saltstringАутентификационные данные
4resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
5errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки
Возвращает:

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


 cmsDecrypt(deviceId, keyId, cmsData, options, resultCallback, errorCallback) → {string}

Расшифрование данных в формате CMS. Аргумент options принимает параметры расшифрования, пока зарезервирован для будущего использования.

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

Параметры:

 

 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2keyIdstringИдентификатор ключа для расшифровыания
3cmsDatastringCMS-сообщение, содержащие зашифрованные данные
4optionsobjectМассив, содержащий параметры расшифрования - объекты вида {параметр:значение} (зарезервирован для будущего использования)
5resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
6errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки
Возвращает:

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


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

Шифрование данных в формате CMS.

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

Параметры:

 

 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2certIdstringИдентификатор сертификата, зарезервированно для будущего использования
3recipientCertstringТело сертификата сервера
4datastringЗашифровываемые данные (текстовая строка или base64-encoded бинарные данные)
5optionsobject

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

    • base64:bool (false) - закодированы ли переданные данные в base64
    • useHardwareEncryption:bool (false) - производить шифрование на устройстве
6resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
7errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки
Возвращает:

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


createPkcs10(deviceId, keyId, subject, extensions, includeSubjSignTool, resultCallback, errorCallback) → {string}

Формирование самоподписанного запроса PKCS#10.

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

Параметры:
 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2keyIdstringИдентификатор ключа
3subjectobject[]Массив, содержащий объекты вида: {rdn: "commonName", value: "значение"}
4extensionsobjectАссоциативный массив, содержащий массивы расширений: {keyUsage: ["digitalSignature",...], extKeyUsage: ["oid", "longName" ]}
5includeSubjSignToolbooleanФлаг, включать или нет в запрос расширение SubjectSignTool
6resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
7errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки
Возвращает:

Запрос PKCS#10 в PEM-формате.

Пример:
*        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 extensions = {
          "keyUsage":     keyUsageVal,
          "extKeyUsage":  extKeyUsageVal
      };
      plugin.createPkcs10(deviceID, keyID, subject, extensions, includeSubjectSignToolExt,
              this.printResult, this.printError);
  }

 

createVirtualDevice(filePath, password, resultCallback, errorCallback) → {bool}

        Функция ассоциирует файл-контейнер формата PKCS#12 с виртуальным устройством с поддержкой алгоритма RSA.

        При дальнейшем использовании устройства, например, для генерации ключей или импорта сертификатов, ключи и сертификаты будут сохранены в этом файле.  После вызова функции последующий вызов функции enumerateDevices вернет массив идентификаторов, в который будет добавлен и идентификатор виртуального устройства. Вызов getDeviceInfo для данного устройства вернет в качестве модели "PKCS12", в качестве label - путь к файлу.

Параметры: 
 NameTypeDescription
1

filePath

stringПуть к файлу PKCS#12-контейнеру, с которым будет ассоциировано виртуальное устройство. Если null, то путь будет запрошен диалогом.
2

password

stringПароль, на котором будет зашифрован PKCS#12-контейнер
6resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
7errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки
Возвращает:

 Если контейнер успешно создан, то true. Если пользователь в  диалоге выбора нажал кнопку "Отмена", то false.



decrypt
(deviceId, keyLabel, data, resultCallback, errorCallback) → {string}

Расшифрование данных на симметричном ключе.

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

Параметры:
 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2keyLabelstringМетка ключа для шифрования (если такого ключа нет, будет возвращена ошибка)
3datastringРасшифровываемые данные
4resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
5errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки
Возвращает:

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


deleteCertificate(deviceId, certId, resultCallback, errorCallback)

Удаление сертификата из токена.

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

Параметры:
 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2certIdstringИдентификатор сертификата, полученный в результате вызова enumerateCertificates
3resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
4errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки void

deleteKeyPair(deviceId, keyId, resultCallback, errorCallback)

Удаление ключевой пары

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

Параметры:
 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2keyIdstringИдентификатор секретного ключа из ключевой пары
3resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
4errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки void

digest(deviceId, hashType, data, options, resultCallback, errorCallback) → {string}

        Вычисление хеш-значения по заданному алгоритму от данных

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

Параметры:
 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2hashTypestringИдентификатор алгоритма хеширования
3datastringданные для хеширования
4optionsobject

Массив, содержащий параметры хеширования - объекты вида {параметр:true/false}.

  • useHardwareHash:bool (false) - производить аппаратное хеширование данных 
  • base64:bool (false) - перекодировать ли данные из base64
5resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
6errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки void 
Возвращает:

Хеш-значение в hex


 

encrypt(deviceId, keyLabel, data, resultCallback, errorCallback) → {string}

Шифрование данных.

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

Параметры:
 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2keyLabelstringМетка ключа для шифрования (если такого ключа нет, он будет сгенерирован)
3datastringЗашифровываемые данные
4resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
5errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки
Возвращает:

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


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

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

Параметры:
 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2categorynumberТип сертификата: "user", "other" или "CA"
3resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
4errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки
Возвращает:

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


enumerateDevices(resultCallback, errorCallback) → {number[]}

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

Параметры:
 NameTypeDescription
1resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
2errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки
Возвращает:

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


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

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

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

Параметры:
 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2markerstringИдентификатор группы ключей, "" - все ключи
3resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
4errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки
Возвращает:

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


generateKeyPair(deviceId, params, marker, options, resultCallback, errorCallback) → {string}

Генерация ключевой пары в устройстве.

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

Параметры:
 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2paramsstringПараметры ключа
3markerstringИдентификатор группы ключей
4optionsobject

Доступны следующие опции:

  • 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, для каждого ее использования потребуется подтверждение на устройстве.

  • algorithm:enum(по умолчанию ALG_TYPE_GOST). В случае использования виртуального устройства возможна генерация только ключа RSA.
    • ALG_TYPE_RSA - ключ будет создан по алгоритму RSA;
    • ALG_TYPE_GOST - ключ будет создан по алгоритму ГОСТ Р 34.10-2001.

  • keyLength:number (используется только для алгоритма RSA) - длина ключа. Возможны длины 512, 1024.
5
resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
6errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки
Возвращает:

ID ключа в HEX


getCertificate(deviceId, certId, resultCallback, errorCallback) → {string}

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

Параметры:
 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2certIdstringИдентификатор сертификата
3resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
4errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки
Возвращает:

Строку, содержащую сертификат в PEM-формате.


 getDeviceInfo(deviceId, option, resultCallback, errorCallback) → {object}

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

 

Параметры:
 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2optionnumber

Тип запрашиваемой информации:

  • 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 - аппаратные возможности устройства.
3resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
4errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки
Возвращает:

Текстовая строка для метки и серийного номера, число для типа устройства.

В случае передачи в качестве параметра TOKEN_INFO_FORMATS возвращается список форматов, которые поддерживает устройство, в виде массива констант:

В случае передачи в качестве параметра TOKEN_INFO_FEATURES возвращается ассоциативный массив, определяющий возможности устройства, со следующими полями:

В случае передачи в качестве параметра TOKEN_INFO_DEVICE_TYPE возвращает тип устройства в виде числовой константы. Возможные типы устройства:


getDeviceLabel(deviceId, resultCallback, errorCallback) → {string}

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

Параметры:
 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
3errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки
Возвращает:

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


getDeviceModel(deviceId, resultCallback, errorCallback) → {string}

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

 

Параметры:
 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
3errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки
Возвращает:

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


getDeviceType(deviceId, resultCallback, errorCallback) → {void}

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

Параметры:
 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
3errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки
Возвращает:

Тип устройства в виде числовой константы. Возможные типы устройства:


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

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

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

Параметры:
 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2keyIdstringИдентификатор ключа
3optionsobjectЗарезервировано для будущего использования
4resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
6errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки
Возвращает:

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



getKeyByCertificate
(deviceId, certId, resultCallback, errorCallback) → {string}

Получение ключа по сертификату.

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

Параметры:
 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2certIdstringИдентификатор сертификата
3resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
4errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки
Возвращает:

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


getKeyLabel(deviceId, keyId, resultCallback, errorCallback) → {string}

Получение метки секретного ключа.

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

Параметры:
 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2keyIdstringИдентификатор ключа
3resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
4errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки
Возвращает:

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



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

Получение значения открытого ключа.

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

 

Параметры:
 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2keyIdstringИдентификатор ключа
3optionsobjectМассив, содержащий дополнительные параметры - объекты вида {параметр:значение} (зарезервирован для будущего использования)
4resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
5errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки
Возвращает:

Открытый ключ (hex-строка)



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

Импорт сертификата на токен.

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

Параметры:
 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2certificatestringТело сертификата в формате BASE64
3categorynumberТип сертификата: "user", "other" или "CA"
4resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
5errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки
Возвращает:

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


login(deviceId, pin, resultCallback, errorCallback)

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

Параметры:
 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2pinstringPIN-код доступа к устройству
3resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
4errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки void

logout(deviceId, resultCallback, errorCallback)

Закрытие сессии с устройством

Параметры:
 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
3errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки void

 openVirtualDevice(filePath, resultCallback, errorCallback) → {bool}

Открытие контейнера PKCS#12 и ассоциирование его с виртуальным устройством.

Параметры:
 NameTypeDescription
1filePathstringПуть к файлу PKCS#12-контейнеру, с которым будет ассоциировано виртуальное устройство. Если null, то путь будет запрошен диалогом.
2resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
3errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки void
Возвращает:

 Если контейнер успешно открыт, то true. Если пользователь в  диалоге выбора нажал кнопку "Отмена", то false.



parseCertificate(deviceId, certId, resultCallback, errorCallback) → {object}

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

Параметры:
 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2certIdstringИдентификатор сертификата, полученный в результате вызова enumerateCertificates
3resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
4errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки
Возвращает:

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


parseCertificateFromString(text, resultCallback, errorCallback) → {object}

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

Параметры:
 NameTypeDescription
1textstringТело сертификата в BASE64
2resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
3errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки
Возвращает:

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


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

Подпись на ключе. Аргумент options принимает параметры подписи.

Параметры:
 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2keyIdstringИдентификатор ключа
3datastringПодписываемый хеш (hex-строка) или текстовые данные
4optionsobject

Массив, содержащий параметры подписи - объекты вида {параметр:true/false}.

Доступны следующие параметры:

  • computeHash:bool (false) - производить хеширование переданных данных
  • useHardwareHash:bool (false) - производить аппаратное хеширование данных (только если computeHash = true)
  • invisible:bool (false) - производить подпись данных в режиме без отображения на PINPad 2 
2resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
3errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки
Возвращает:

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


 

removePin(deviceId, resultCallback, errorCallback) 

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

 

Параметры:
 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
3errorCallbackfunctionФункция обратного вызова для случая возникновения ошибкиboolean

 savePin(deviceId, resultCallback, errorCallback) 

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

 Параметры:

 

 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
3errorCallbackfunctionФункция обратного вызова для случая возникновения ошибкиvoid

 

setKeyLabel(deviceId, keyId, label, resultCallback, errorCallback)

Установка метки секретного ключа.

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

Параметры:
 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2keyIdstringИдентификатор ключа
3labelstringНовая метка закрытого ключа
4resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
5errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки void

sign(deviceId, certId, data, isBase64, object, resultCallback, options) → {string}

Вычисление цифровой подписи.

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

Параметры:
 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2certIdstringИдентификатор сертификата
3datastringПодписываемые данные (текстовая строка или base64-encoded бинарные данные)
4isBase64booleanФлаг, данные передаются в кодировке base64 или нет
5object options Параметры подписи - объект {параметр:true/false} (по умолчанию все значение false) доступны следующие параметры: detached - генерировать отсоединенную подпись addUserCertificate - включить в подпись сертификат пользователя addSignTime - включить в подпись время подписи useHardwareHash - производить хеширование на "борту" токена
6resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
7optionsstring[]undefined
Возвращает:

Электронную подпись в формате CMS в base64


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

Проверка цифровой подписи.

 

Параметры:
 NameTypeDescription
1deviceIdnumberИдентификатор устройства
2cmsstringКонтейнер с цифровой подписью
3optionsobject

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

    • data:string (null) - подписанные данные, только в случае detached подписи;
    • base64:bool (false) - указывает, закодированы ли даные, переданные в data в base64. Будет произведено декодирование данных;
    • certificates:string[] (null) - набор сертификатов, на которых необходимо проверять подпись. При этом сертификаты содержащиеся в cms будут проигнорированы;
    • CA:string[] (null) - список дополнительных корневых сертификатов для проверки сертификата. Кроме них берутся корневые сертификаты с устройства;
    • CRL:string[] (null) - набор списков отзыва сертификатов. Каждый список отзыва в PEM.
    • useHardwareHash:bool (false) - производить хеширование на устройстве;
    • verifyCertificate:bool (true) - проверять ли сертификат пользователя (выстраивать цепочку до корневого);
4resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
5errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки
Возвращает:

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