Приложение

Коды ошибок для методов VerifyCertificateChain*

  • OK – операция прошла успешно.
  • ERR_ENCODING_IS_INVALID – один из сертификатов или CRL переданы в неверной кодировке. Поддерживаются только Base64 и DER.
  • ERR_UNABLE_TO_GET_ISSUER_CERT – не удалось найти сертификат эмитента проверяемого сертификата. Вероятно цепочка доверенных сертификатов не полна.
  • ERR_UNABLE_TO_GET_CRL – не удалось найти CRL для проверяемого сертификата.
  • ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE – не удалось проверить подпись проверяемого сертификата.
  • ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE – не удалось проверить подпись CRL.
  • ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY – не удалось прочесть открытый ключ проверяемого сертификата.
  • ERR_CERT_SIGNATURE_FAILURE – подпись проверяемого сертификата не верна.
  • ERR_CRL_SIGNATURE_FAILURE – подпись CRL не верна.
  • ERR_CERT_NOT_YET_VALID – сертификат не действителен на данный момент. Значение поля notBefore превышает текущее время.
  • ERR_CERT_HAS_EXPIRED – сертификат просрочен. Значение поля notAfter меньше, чем текущее время.
  • ERR_CRL_NOT_YET_VALID – CRL не действителен на данный момент.
  • ERR_CRL_HAS_EXPIRED – CRL просрочен.
  • ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD – поле сертификата notBefore содержит неверные данные.
  • ERR_ERROR_IN_CERT_NOT_AFTER_FIELD – поле сертификата notAfter содержит неверные данные.
  • ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD– поле CRL lastUpdate содержит неверные данные.
  • ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD – поле CRL nextUpdate содержит неверные данные.
  • ERR_PKCS11_ERROR – произошла ошибка, не связанная с содержанием сертификатов или CRL. Для точного получения ошибки необходимо посмотреть текстовое описание, получаемое вместе с кодом ошибки при вызове расширенных методов проверки сертификатов, или воспользоваться getLastError().
  • ERR_DEPTH_ZERO_SELF_SIGNED_CERT – проверямый сертификат является самоподписанным, однако он отсутствует в списке доверенных сертификатов.
  • ERR_SELF_SIGNED_CERT_IN_CHAIN – невозможно найти корневой сертификат в цепочке сертификатов.
  • ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY – не удалось найти сертификат эмитента недоверенного сертификата.
  • ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE – невозможно проверить сертификат. Цепочка сертификатов содержит только один сертификат, не являющийся самоподписаным.
  • ERR_CERT_CHAIN_TOO_LONG – длина цепочки сертификатов превышает максимальное допустимое значение.
  • ERR_CERT_REVOKED – проверяемый сертификат отозван.
  • ERR_INVALID_CA – неверный CA.
  • ERR_PATH_LENGTH_EXCEEDED – превышено максимальное значения параметра basicConstraints.
  • ERR_INVALID_PURPOSE – сертификат не может быть использован для указанных целей.
  • ERR_CERT_UNTRUSTED – корневой CA не является доверенным для данной цели.
  • ERR_CERT_REJECTED – корневой CA отклонил данную цель.
  • ERR_KEYUSAGE_NO_CERTSIGN – расширение keyUsage не поддерживает подпись сертификатов.

Список возможных исключений

  • CKR_CANCEL 0x00000001 – пользователь отказался от выполнения операции.
  • CKR_HOST_MEMORY 0x00000002 – недостаточно памяти для выполнения функции.
  • CKR_SLOT_ID_INVALID 0x00000003 – неправильный идентификатор слота.
  • CKR_GENERAL_ERROR 0x00000005 – такой код ошибки может означать:
    • Критическую ошибку, связанную с аппаратным обеспечением;
    • Неудачную попытку проверки пути сертификации.
  • CKR_FUNCTION_NOT_SUPPORTED 0x00000054 – функция не поддерживается.
  • CKR_FUNCTION_FAILED 0x00000006 – при выполнении функции возник сбой.
  • CKR_ARGUMENTS_BAD 0x00000007 – недопустимый аргумент.
  • CKR_ATTRIBUTE_READ_ONLY 0x00000010 – предпринята попытка присвоения значения атрибуту, который нельзя изменять.
  • CKR_ATTRIBUTE_TYPE_INVALID 0x00000012 – некорректный тип атрибута.
  • CKR_ATTRIBUTE_VALUE_INVALID 0x00000013 – атрибут нулевой длины.
  • CKR_DEVICE_ERROR 0x00000030 – ошибка при обращении к устройству или слоту.
  • CKR_DEVICE_MEMORY 0x00000031 – для выполнения функции недостаточно памяти в устройстве.
  • CKR_FUNCTION_CANCELED 0x00000050 – время ожидания выполнения функции истекло.
  • CKR_KEY_HANDLE_INVALID 0x00000060 – функции передан некорректный дескриптор ключа.
  • CKR_KEY_SIZE_RANGE 0x00000062 – недопустимый размер ключа.
  • CKR_KEY_TYPE_INCONSISTENT 0x00000063 – данный тип ключа не может использоваться с данным механизмом.
  • CKR_MECHANISM_INVALID 0x00000070 – при выполнении криптографической функции был указан неправильный механизм.
  • CKR_MECHANISM_PARAM_INVALID 0x00000071 – при выполнении криптографической функции были заданы некорректные параметры механизма.
  • CKR_OBJECT_HANDLE_INVALID 0x00000082 – функции передан некорректный дескриптор объекта.
  • CKR_OPERATION_ACTIVE 0x00000090 – одна или несколько выполняющихся операций препятствуют выполнению новой операции.
  • CKR_OPERATION_NOT_INITIALIZED 0x00000091 – выполнение операции без предварительного указания параметров невозможно.
  • CKR_PIN_INCORRECT 0x000000A0 – функции передан неверный PIN-код.
  • CKR_PIN_LEN_RANGE 0x000000A2 – недопустимая длина PIN-кода.
  • CKR_PIN_LOCKED 0x000000A4 – PIN-код заблокирован.
  • CKR_SESSION_HANDLE_INVALID 0x000000B3 – функции передан некорректный дескриптор сессии.
  • CKR_SESSION_PARALLEL_NOT_SUPPORTED 0x000000B4 – невозможно открыть параллельную сессию.
  • CKR_SESSION_EXISTS 0x000000B6 – уже открыта сессия работы с тем же устройством.
  • CKR_SESSION_READ_ONLY_EXISTS 0x000000B7 – сессия открыта только для чтения. Смена режима невозможна.
  • CKR_SESSION_READ_WRITE_SO_EXISTS 0x000000B8 – открыта сессия чтения/записи. Открыть сеанс только для чтения невозможно.
  • CKR_SIGNATURE_INVALID 0x000000C0 – неправильное значение электронной подписи.
  • CKR_TEMPLATE_INCOMPLETE 0x000000D0 – для создания объекта недостаточно атрибутов.
  • CKR_TOKEN_NOT_PRESENT 0x000000E0 – в момент выполнения функции устройство было отключено.
  • CKR_TOKEN_WRITE_PROTECTED 0x000000E2 – устройство недоступно для записи.
  • CKR_USER_ALREADY_LOGGED_IN 0x00000100 – пользователь уже предъявил PIN-код.
  • CKR_USER_NOT_LOGGED_IN 0x00000101 – функция не может быть выполнена в гостевом режиме работы устройства.
  • CKR_USER_PIN_NOT_INITIALIZED 0x00000102 – начальное значение PIN-кода не установлено.
  • CKR_USER_TYPE_INVALID 0x00000103 – функция не может быть выполнена в текущем режиме работы устройства.
  • CKR_USER_ANOTHER_ALREADY_LOGGED_IN 0x00000104 – невозможно переключение из режима администратора в режим пользователя или обратно.
  • CKR_BUFFER_TOO_SMALL 0x00000150 – размер заданного буфера является недостаточным для сохранения результатов функции.
  • CKR_INFORMATION_SENSITIVE 0x00000170 – запрашиваемый объект недоступен для чтения.
  • CKR_CRYPTOKI_NOT_INITIALIZED 0x00000190 – выполнение функции без инициализации Единой библиотеки PKCS#11 (библиотеки Cryptoki) невозможно.
  • CKR_CRYPTOKI_ALREADY_INITIALIZED 0x00000191 – попытка повторно инициализировать библиотеку Cryptoki.
  • CKR_FUNCTION_REJECTED 0x00000200 – пользователь отменил операцию.
  • NOT_STATE_TOKEN_BINDED 0x00001000 – значение параметра state отличается от STATE_TOKEN_BINDED (1).
  • NOT_STATE_NOT_BINDED 0x00001001 – значение параметра state отличается от STATE_TOKEN_BINDED (0).
  • IS_STATE_NOT_BINDED 0x00001002 – параметр state принимает значение STATE_TOKEN_BINDED (0).
  • NOT_STATE_UNILATERAL_AUTHENTICATION_IN_PROGRESS 0x00001003 – значение параметра state отличается от STATE_TOKEN_BINDED (4).
  • NOT_STATE_SECURE_CHANNEL_CONNECTION_IN_PROGRESS 0x00001004 – значение параметра state отличается от STATE_TOKEN_BINDED (2).
  • NOT_STATE_SECURE_CHANNEL_ESTABLISHED 0x00001005 – значение параметра state отличается от STATE_TOKEN_BINDED (3).
  • CERTIFICATE_NOT_FOUND 0x00001010 – сертификат не обнаружен.
  • PUBLIC_KEY_NOT_FOUND 0x00001011 – открытый ключ не обнаружен в памяти поддерживаемого устройства.
  • SERVER_PUBLIC_KEY_NOT_FOUND 0x00001012 – не найден открытый ключ сервера.
  • INVALID_SERVER_PUBLIC_KEY 0x00001013 – неверный открытый ключ сервера.
  • DATA_TO_SIGN_ZERO_LENGTH 0x00001020 – на подпись были представлены данные, имеющие нулевую длину.
  • DATA_TO_VERIFY_ZERO_LENGTH 0x00001021 – на проверку подписи были представлены данные, имеющие нулевую длину.
  • SIGNATURE_TO_VERIFY_ZERO_LENGTH 0x00001022 – на проверку была представлена подпись, имеющая нулевую длину.
  • INVALID_EC_PARAMS 0x00001025 – неверно заданы параметры криптографических преобразований по ГОСТ Р 34.10-2001.
  • TOKEN_MEMORY_TOO_SMALL 0x00001026 – для выполнения операции в поддерживаемом устройстве недостаточно свободной памяти.
  • KEY_SIZE_NOT_64 0x00001030 – длина ключа не равна 64 битам.
  • CERT_NOT_MATCH_PUBLIC_KEY 0x00001031 – сертификат не соответствует открытому ключу.
  • FAILED_CHECK_BROWSER_VERS 0x00001033 – ошибка проверки версии используемого браузера.
  • BROWSER_VERS_NOT_SUPPORTED 0x00001034 – используемая версия браузера не поддерживается.
  • INVALID_USER_TYPE 0x00001036 – неверно указан тип PIN-кода.
  • PINS_NOT_MATCH 0x00001037 – введённые значения нового PIN-кода неодинаковы.
  • USER_CHANGE_ADMIN_PIN_NOT_STATE_NOT_BINDED 0x00001038 – cмена PIN-кода администратора невозможна, поскольку значение параметра state отличается от STATE_TOKEN_BINDED (0).
  • SSL_ERR_GEN_SESSION_KEY 0x00001050 – ошибка при генерации ключа защиты данных, передаваемых между клиентом и сервером.
  • SSL_ERR_GOST_ENGINE 0x00001052 – ошибка средства защиты, программно выполняющего криптографические преобразования на стороне клиента.
  • SSL_ERR_SSL_NEW 0x00001053 – ошибка в начале выполнения протокола Handshake.
  • SSL_ERR_CONNECT 0x00001054 – ошибка при выполнении протокола Handshake.
  • SSL_ERR_SSL_WRITE 0x00001055 – ошибка при подготовке данных к защищённой передаче.
  • SSL_ERR_SSL_READ 0x00001056 – ошибка при чтении защищённых для передачи данных.
  • SSL_ERR_LOAD_CERT_AND_KEY_FROM_TOKEN 0x00001057 – ошибка при попытке считать сертификат и открытый ключ из памяти поддерживаемого устройства.
  • SSL_ERR_GET_PEER_PUBLIC_KEY 0x00001058 – ошибка при получении открытого ключа сервера.
  • CERT_PARS_ERR_GET_PUBLIC_KEY 0x00001070 – не удалось считать открытый ключ из сертификата.
  • CERT_PARS_ERR_GET_ISSUER_AND_SER_NUMBER 0x00001071 – не удалось считать имя удостоверяющего центра и серийный номер из сертификата.
  • UNKNOWN_ERROR 0x00002000 – неизвестная ошибка.

Возможные значения флагов электронного ключа

  • CKF_RNG 0x00000001 – всегда установлен.
  • CKF_WRITE_PROTECTED 0x00000002 – флаг установлен, когда устройство работает в гостевом режиме, и не установлен, когда устройство работает в режимах, требующих ввода PIN-кода.
  • CKF_LOGIN_REQIURED 0x00000004 – всегда установлен.
  • CKF_USER_PIN_INITIALIZED 0x00000008 – флаг установлен, если инициализирован PIN-код пользователя, и не установлен в противном случае.
  • CKF_RESTORE_KEY_NOT_NEEDED 0x00000020 – никогда не установлен.
  • CKF_CLOCK_ON_TOKEN 0x00000040 – никогда не установлен.
  • CKF_PROTECTED_AUTHENTICATION_PATH 0x00000100 – никогда не установлен.
  • CKF_DUAL_CRYPTO_OPERATIONS 0x00000200 – никогда не установлен.
  • CKF_TOKEN_INITIALIZED 0x00000400 – всегда установлен.
  • CKF_SECONDARY_AUTHENTICATION 0x00000800 – никогда не установлен.
  • CKF_USER_PIN_COUNT_LOW 0x00010000 – флаг установлен, если со времени последней успешной попытки ввода PIN-кода пользователя была предпринята, по меньшей мере, одна неудачная попытка ввода этого PIN-кода, и не установлен в противном случае.
  • CKF_USER_PIN_FINAL_TRY 0x00020000 – флаг установлен, если у пользователя осталась последняя попытка ввода PIN-кода, и не установлен в других случаях.
  • CKF_USER_PIN_LOCKED 0x00040000 – флаг установлен, если PIN-код пользователя заблокирован, и не установлен, если PIN-код пользователя не заблокирован.
  • CKF_USER_PIN_TO_BE_CHANGED 0x00080000 – никогда не установлен.
  • CKF_SO_PIN_COUNT_LOW 0x00100000 - флаг установлен, если со времени последней успешной попытки ввода PIN-кода администратора была предпринята, по меньшей мере, одна неудачная попытка ввода этого PIN-кода, и не установлен в противном случае.
  • CKF_SO_PIN_FINAL_TRY 0x00200000 – флаг установлен, если у администратора осталась последняя попытка ввода PIN-кода, и не установлен в других случаях.
  • CKF_SO_PIN_LOCKED 0x00400000 – флаг установлен, если PIN-код администратора заблокирован, и не установлен в противном случае.
  • CKF_SO_PIN_TO_BE_CHANGED 0x00800000 – никогда не установлен.
  • CKF_ERROR_STATE 0x01000000 – никогда не установлен.

Описание параметра messageIdx

Значение messageIdx определяет сообщение, которое выводится на экран терминала при запросе на ввод или подтверждение пользователем PIN-кода (например, при выполнении операций aftGetPINAsync или aftGetNewPINAsync). messageIdx представляет собой 1 байт, разделенный на два полубайта (правый и левый) по 4 бита. Правый (младший) полубайт определяет первую строку сообщения, выводимого на экран, и соответствует битам 0-3. Левый (старший) полубайт соответствует битам 4-7 и определяет вторую строку сообщения.

Правый полубайт может принимать значение в диапазоне от 0 до 2, левый от 0 до 3. Каждому значению полубайта соответствует одна строка текста (см. таблицу ниже.) Значение целого байта определяет весь отображаемый на экране текст. Например, байт со значением 0x10 соответствует следующему сообщению: Введите PIN-код пользователя.

Возможные значения каждого полубайта и соответствующий им текст приведены в таблицах ниже.

Для русского языка:

Правый (младший) полубайт, биты 0-3 Левый (старший) полубайт, биты 4-7:
Значение Выводимый текст Значение Выводимый текст
0 “Введите PIN-код” 0 пустая строка
1 “Введите новый PIN” 1 “пользователя”
2 “Повторите PIN” 2 “администратора”
3 “подписи”

Для английского языка:

Правый (младший) полубайт, биты 0-3 Левый (старший) полубайт, биты 4-7:
Значение Выводимый текст Значение Выводимый текст
0 “Enter PIN” 0 пустая строка
1 “Enter new PIN” 1 “of user”
2 “Repeat PIN” 2 “of admin”
3 “for signature”