Page tree

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 80 Next »

ВНИМАНИЕ! Примеры использования функций имеются в SDK Рутокен Плагин. SDK представляет собой набор локальных web-страниц, которые не требуют разворачивания на сервере. SDK доступен для загрузки на странице http://www.rutoken.ru/products/all/rutoken-plugin/ . Так же в нем показана обработка ошибок в плагине.


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

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


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

Все функции принимают 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>


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.X509_UNABLE_TO_GET_ISSUER_CERT] = "Невозможно получить сертификат подписанта";

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


errorDescription[this.errorCodes.X509_UNABLE_TO_DECRYPT_CERT_SIGNATURE] = "Невозможно расшифровать подпись сертификата";
this.errorDescription[this.errorCodes.X509_UNABLE_TO_DECRYPT_CRL_SIGNATURE] = "Невозможно расшифровать подпись CRL";
this.errorDescription[this.errorCodes.X509_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY] = "Невозможно раскодировать открытый ключ эмитента";
this.errorDescription[this.errorCodes.X509_CERT_SIGNATURE_FAILURE] = "Неверная подпись сертификата";
this.errorDescription[this.errorCodes.X509_CRL_SIGNATURE_FAILURE] = "Неверная подпись CRL";
this.errorDescription[this.errorCodes.X509_CERT_NOT_YET_VALID] = "Срок действия сертификата еще не начался";
this.errorDescription[this.errorCodes.X509_CRL_NOT_YET_VALID] = "Срок действия CRL еще не начался";
this.errorDescription[this.errorCodes.X509_CERT_HAS_EXPIRED] = "Срок действия сертификата истек";
this.errorDescription[this.errorCodes.X509_CRL_HAS_EXPIRED] = "Срок действия CRL истек";
this.errorDescription[this.errorCodes.X509_ERROR_IN_CERT_NOT_BEFORE_FIELD] = "Некорректные данные в поле \"notBefore\" у сертификата";
this.errorDescription[this.errorCodes.X509_ERROR_IN_CERT_NOT_AFTER_FIELD] = "Некорректные данные в поле \"notAfter\" у сертификата";
this.errorDescription[this.errorCodes.X509_ERROR_IN_CRL_LAST_UPDATE_FIELD] = "Некорректные данные в поле \"lastUpdate\" у CRL";
this.errorDescription[this.errorCodes.X509_ERROR_IN_CRL_NEXT_UPDATE_FIELD] = "Некорректные данные в поле \"nextUpdate\" у CRL";
this.errorDescription[this.errorCodes.X509_OUT_OF_MEM] = "Нехватает памяти";
this.errorDescription[this.errorCodes.X509_DEPTH_ZERO_SELF_SIGNED_CERT] = "Недоверенный самоподписанный сертификат";
this.errorDescription[this.errorCodes.X509_SELF_SIGNED_CERT_IN_CHAIN] = "В цепочке обнаружен недоверенный самоподписанный сертификат";
this.errorDescription[this.errorCodes.X509_UNABLE_TO_GET_ISSUER_CERT_LOCALLY] = "Невозможно получить локальный сертификат подписанта";
this.errorDescription[this.errorCodes.X509_UNABLE_TO_VERIFY_LEAF_SIGNATURE] = "Невозможно проверить первый сертификат";
this.errorDescription[this.errorCodes.X509_CERT_CHAIN_TOO_LONG] = "Слишком длинная цепочка сертификатов";
this.errorDescription[this.errorCodes.X509_CERT_REVOKED] = "Сертификат отозван";
this.errorDescription[this.errorCodes.X509_INVALID_CA] = "Неверный корневой сертификат";
this.errorDescription[this.errorCodes.X509_INVALID_NON_CA] = "Неверный некорневой сертфикат, помеченный как корневой";
this.errorDescription[this.errorCodes.X509_PATH_LENGTH_EXCEEDED] = "Превышена длина пути";
this.errorDescription[this.errorCodes.X509_PROXY_PATH_LENGTH_EXCEEDED] = "Превышина длина пути прокси";
this.errorDescription[this.errorCodes.X509_PROXY_CERTIFICATES_NOT_ALLOWED] = "Проксирующие сертификаты недопустимы";
this.errorDescription[this.errorCodes.X509_INVALID_PURPOSE] = "Неподдерживаемое назначение сертификата";
this.errorDescription[this.errorCodes.X509_CERT_UNTRUSTED] = "Недоверенный сертификат";
this.errorDescription[this.errorCodes.X509_CERT_REJECTED] = "Сертифкат отклонен";
this.errorDescription[this.errorCodes.X509_APPLICATION_VERIFICATION] = "Ошибка проверки приложения";
this.errorDescription[this.errorCodes.X509_SUBJECT_ISSUER_MISMATCH] = "Несовпадения субьекта и эмитента";
this.errorDescription[this.errorCodes.X509_AKID_SKID_MISMATCH] = "Несовпадение идентификатора ключа у субьекта и доверенного центра";
this.errorDescription[this.errorCodes.X509_AKID_ISSUER_SERIAL_MISMATCH] = "Несовпадение серийного номера субьекта и доверенного центра";
this.errorDescription[this.errorCodes.X509_KEYUSAGE_NO_CERTSIGN] = "Ключ не может быть использован для подписи сертификатов";
this.errorDescription[this.errorCodes.X509_UNABLE_TO_GET_CRL_ISSUER] = "Невозможно получить CRL подписанта";
this.errorDescription[this.errorCodes.X509_UNHANDLED_CRITICAL_EXTENSION] = "Неподдерживаемое расширение";
this.errorDescription[this.errorCodes.X509_KEYUSAGE_NO_CRL_SIGN] = "Ключ не может быть использован для подписи CRL";
this.errorDescription[this.errorCodes.X509_KEYUSAGE_NO_DIGITAL_SIGNATURE] = "Ключ не может быть использован для цифровой подписи";
this.errorDescription[this.errorCodes.X509_UNHANDLED_CRITICAL_CRL_EXTENSION] = "Неподдерживаемое расширение CRL";
this.errorDescription[this.errorCodes.X509_INVALID_EXTENSION] = "Неверное или некорректное расширение сертификата";
this.errorDescription[this.errorCodes.X509_INVALID_POLICY_EXTENSION] = "Неверное или некорректное расширение политик сертификата";
this.errorDescription[this.errorCodes.X509_NO_EXPLICIT_POLICY] = "Явные политики отсутствуют";
this.errorDescription[this.errorCodes.X509_DIFFERENT_CRL_SCOPE] = "Другая область CRL";
this.errorDescription[this.errorCodes.X509_UNSUPPORTED_EXTENSION_FEATURE] = "Неподдерживаемое расширение возможностей";
this.errorDescription[this.errorCodes.X509_UNNESTED_RESOURCE] = "RFC 3779 неправильное наследование ресурсов";
this.errorDescription[this.errorCodes.X509_PERMITTED_VIOLATION] = "Неправильная структура сертифката";
this.errorDescription[this.errorCodes.X509_EXCLUDED_VIOLATION] = "Неправильная структура сертфиката";
this.errorDescription[this.errorCodes.X509_SUBTREE_MINMAX] = "Неправильная структура сертифката";
this.errorDescription[this.errorCodes.X509_UNSUPPORTED_CONSTRAINT_TYPE] = "Неправильная структура сертфиката";
this.errorDescription[this.errorCodes.X509_UNSUPPORTED_CONSTRAINT_SYNTAX] = "Неправильная структура сертифката";
this.errorDescription[this.errorCodes.X509_UNSUPPORTED_NAME_SYNTAX] = "Неправильная структура сертфиката";
this.errorDescription[this.errorCodes.X509_CRL_PATH_VALIDATION_ERROR] = "Неправильный путь CRL";


valid {bool}

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

version {string}

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

Методы

Рутокен Плагин API(deviceId, certId, salt, resultCallback, errorCallback) → {string}

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

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

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

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

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

Рутокен Плагин API(deviceId, certId, recipientCert, data, options, resultCallback, errorCallback) → {string}

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

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

Рутокен Плагин API(deviceId, keyId, subject, extensions, includeSubjSignTool, resultCallback, errorCallback) → {string}

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

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

Рутокен Плагин API(deviceId, keyLabel, data, resultCallback, errorCallback) → {string}

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

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

Рутокен Плагин API(deviceId, certId, resultCallback, errorCallback)

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

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

Рутокен Плагин API(deviceId, keyId, resultCallback, errorCallback)

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

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

Рутокен Плагин API(deviceId, hashType, data, options, resultCallback, errorCallback)

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

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

Рутокен Плагин API(deviceId, keyLabel, data, resultCallback, errorCallback) → {string}

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

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

Рутокен Плагин API(deviceId, category, resultCallback, errorCallback) → {string[]}

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

Рутокен Плагин API(resultCallback, errorCallback) → {number[]}

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

 Рутокен Плагин API(deviceId, marker, resultCallback, errorCallback) → {string[]}

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

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

Рутокен Плагин API(deviceId, params, marker, specialKey, resultCallback, errorCallback) → {string}

Генерация ключевой пары ГОСТ Р 34.10-2001 на "борту" токена.

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

Рутокен Плагин API(deviceId, certId, resultCallback, errorCallback) → {string}

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

Рутокен Плагин API(deviceId, option, resultCallback, errorCallback) → {object}

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

Рутокен Плагин API(deviceId, resultCallback, errorCallback, deviceId) → {string}

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

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

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

Рутокен Плагин API(deviceId, resultCallback, errorCallback) → {number}

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

Рутокен Плагин API(deviceId, keyId, options, resultCallback, errorCallback) → {object}

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

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

Рутокен Плагин API(deviceId, certId, resultCallback, errorCallback) → {string}

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

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

Рутокен Плагин API(deviceId, keyId, resultCallback, errorCallback) → {string}

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

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

Рутокен Плагин API(deviceId, keyId, options, resultCallback, errorCallback) → {string}

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

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

Рутокен Плагин API(deviceId, certificate, category, resultCallback, errorCallback) → {string}

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

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

Рутокен Плагин API(deviceId, pin, resultCallback, errorCallback)

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

Рутокен Плагин API(deviceId, resultCallback, errorCallback)

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

Рутокен Плагин API(deviceId, certId, resultCallback, errorCallback) → {object}

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

Рутокен Плагин API(text, resultCallback, errorCallback) → {object}

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

Рутокен Плагин API(deviceId, keyId, data, options, resultCallback, errorCallback) → {string}

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

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

Рутокен Плагин API(deviceId, resultCallback, errorCallback) 

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

Рутокен Плагин API(deviceId, resultCallback, errorCallback) 

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

Рутокен Плагин API(deviceId, keyId, label, resultCallback, errorCallback)

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

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

Рутокен Плагин API(deviceId, certId, data, isBase64, object, resultCallback, options) → {string}

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

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

Рутокен Плагин API(deviceId, cms, options, resultCallback, errorCallback) → {bool}

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

Подробнее

 

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

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

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

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

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


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

Запрос 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);
  }

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

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

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

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

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


deleteCertificate(deviceId, certId, resultCallback, errorCallback)

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

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

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

deleteKeyPair(deviceId, keyId, resultCallback, errorCallback)

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

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

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

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


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

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

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

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


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

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

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

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


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

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

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

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

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


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

Генерация ключевой пары ГОСТ Р 34.10-2001 на "борту" токена.

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

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

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

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

ID ключа в HEX


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

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

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

Строку, содержащую сертификат в 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 возвращается список форматов, которые поддерживает устройство, в виде массива констант:

  • 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 - поддержка генерации ключей, требующих визуализации данных на устройстве 

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

  • TOKEN_TYPE_UNKNOWN - неизвестное устройство;
  • TOKEN_TYPE_RUTOKEN_ECP - Рутокен ЭЦП;
  • TOKEN_TYPE_RUTOKEN_WEB - Рутокен WEB;
  • TOKEN_TYPE_RUTOKEN_PINPAD_2 - Рутокен PINPad;
  • TOKEN_TYPE_KAZTOKEN - Казтокен.

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

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

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

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


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

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

 

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

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


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

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

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

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

  • TOKEN_TYPE_UNKNOWN - неизвестное устройство;
  • TOKEN_TYPE_RUTOKEN_ECP - Рутокен ЭЦП;
  • TOKEN_TYPE_RUTOKEN_WEB - Рутокен WEB;
  • TOKEN_TYPE_RUTOKEN_PINPAD_2 - Рутокен PINPad;
  • TOKEN_TYPE_KAZTOKEN - Казтокен.


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

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

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

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

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



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

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

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

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

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


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

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

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

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

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



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

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

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

 

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

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



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

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

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

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

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


login(deviceId, pin, resultCallback, errorCallback)

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

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

logout(deviceId, resultCallback, errorCallback)

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

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

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

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

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

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


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

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

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

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


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
1
deviceIdnumberИдентификатор устройства
2
keyIdstringИдентификатор ключа
3
labelstringНовая метка закрытого ключа
4
resultCallbackfunctionФункция обратного вызова для случая успешного выполнения
5
errorCallbackfunctionФункция обратного вызова для случая возникновения ошибки void

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

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

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

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

  • No labels