Обработка ошибок (Android)
В данном разделе рассмотрены основные коды ошибок SDK, сценарии их возникновения и обработки. Полный список кодов ошибок приведён в разделе Коды ошибок.
При обработке ошибок необходимо обратить внимание на следующие аспекты:
- Ошибки использования ключей аутентификации
- Ошибки регистрации нового устройства
- Сетевые ошибки
- Ошибки взаимодействия с сервисом
- Закрытие UI
Большинство методов SDK используют ключи аутенитификации и делают обращения на сервер. Соответственно необходимо корректно обрабатывать сетевые ошибки и ошибки использования ключей аутентификации.
Закрытие UI
Если пользователь закроет UI SDK, то SDK не завершит соответствующую операцию и вернёт ошибку USER_CANCELED_FORM (287).
Список экранов SDK:
- новый пароль на ключи аутентификации
- ввод пароля для доступа к ключам аутентификации
- подтверждение привязки устройства к учётной записи
- сканирование QR-кода
- подтверждение операций
- ввод ПИН-кода на Рутокен
- ввод PUK-кода на Рутокен
- подтвеждение/отклонение привязки нового устройства
- экран с QR-кодом для привязки нового устройства
Ошибки использования ключей аутентификации
Большинство вызовов API SDK связаны с обращением к сервису. Обращение к сервису требует аутентификации, соответственно использования ключей аутентификации. Доступ к ключам аутентификации требует взаимодействия с пользователем (ввод пароля или биометрии). Так же необходимо учитывать, что ключи аутентификации имеют срок действия, имеют состояние и связаны с учётной записью пользователя на сервисе.
| Ошибка | Код | Описание |
|---|---|---|
| USER_BLOCKED | 277 | Ошибка аутентификации. Учётная запись пользователя заблокирована на сервере. Получен HTTP-ответ со статусом 401. |
| USER_NOT_FOUND | 278 | Ошибка аутентификации. Учётная запись пользователя не найдена или удалена на сервере. Получен HTTP-ответ со статусом 401. |
| DEVICE_BLOCKED | 280 | Ошибка аутентификации. Мобильное устройство пользователя заблокировано на сервере. Получен HTTP-ответ со статусом 401. |
| KEYS_EXPIRED | 5 | Истек срок действия ключей аутентификации пользователя |
| DEVICE_NOT_FOUND_BY_ID | 12 | Не удалось загрузить ключи аутентификации. Ключи с указанным KID не найдены. |
| KEYS_BLOCKED_FOR_ERROR_ATTEMPTS | 20 | Ключи аутентификации временно заблокированы из-за превышения попыток ввода пароля |
| INVALID_KEY_ID | 271 | Передан невалидный идентификатор ключей аутентификации (KID). Получен HTTP-ответ со статусом 400. |
| REQUESTED_USER_NOT_FOUND | 272 | УЗ пользователя не найдена. Получен HTTP-ответ со статусом 400. |
| INVALID_KEY_STATE | 273 | Статус ключей аутентификации не соответствует запрошенной операции. Получен HTTP-ответ со статусом 400. |
| INVALID_HMAC | 279 | Ошибка аутентификации. Передан неверный код аутентификации. Получен HTTP-ответ со статусом 401. |
| JNI_HMAC_AUTH_FAILED | 230 | Не удалось вычислить код аутентификации. |
| JNI_FUN_FAILED | 216 | Ошибка выполнения криптографической операции. Нативный код ошибки и описание содержится в описании. |
| INVALID_AUTHENTICATION_SCHEME | 276 | Ошибка аутентификации. Пользователю отключена аутентификация при помощи мобильного приложения. Получен HTTP-ответ со статусом 401. |
| NOT_SAFE_USAGE_CANCELLED_BY_USER | 220 | SDK не инициализирован. Пользователь запретил использовать API SDK, так как устройство является не безопасным. |
| NFC_TOKEN_IS_REMOVE | 221 | NFC токен был убран во время выполнения операции. |
Ошибка NOT_SAFE_USAGE_CANCELLED_BY_USER возникает если SDK не был инициализирован или пользователь запретил использовать API SDK, так как устройство является не безопасным.
Необходимо повторно вызвать метод CryptoProDSS.init
При возникновении ошибок USER_BLOCKED, DEVICE_BLOCKED необходимо обратиться к администратору сервиса для уточнения причин блокировки устройства.
При возникновении ошибок KEYS_EXPIRED, USER_NOT_FOUND, REQUESTED_USER_NOT_FOUND необходима повторная
регистрация учётной записи пользователя и/или устройства пользователя.
Ошибка INVALID_AUTHENTICATION_SCHEME вызвана тем, что на сервере в учётной записи пользователя отключена аутентификация при помощи мобильного приложения.
Необходимо обратиться к администратору сервера.
Ошибка DEVICE_NOT_FOUND_BY_ID вызвана с тем, что в API SDK передан идентификатор ключей аутентификации KID, которых нет на устройстве.
Ошибка INVALID_KEY_STATE говорит о том, что устройство не находится в нужном состоянии для выполнения операции. Вероятнее всего
не была завершена регистрация устройства и оно не находится в статусе ACTIVE.
Необходимо актуализировать статус устройства Policy.getUserDevices и исходя из состояния устройства завершить регистрацию.
Ошибка INVALID_HMAC вызвана неверным кодом аутентификации, отправленым на сервис. Ошибка может быть вызвана расхождением времени на клиенте и сервисе.
В зависимости от настроек сервис допускается расхождение времени от 4 до 30 минут.
Ошибка JNI_HMAC_AUTH_FAILED вызвана низкоуровневыми ошибками при вычислении кода аутентификации. Для устранения ошибки можно попробовать перезапустить приложение.
Если ошибка не устранится, то может потребоваться повторная регистрация устройства на сервере.
Ошибка JNI_FUN_FAILED вызвана низкоуровневыми ошибками криптографичесих операций. Для устранения ошибки можно попробовать перезапустить приложение.
Если ошибка не устранится, то может потребоваться повторная регистрация устройства на сервере.
Ошибки регистрации нового устройства
В сценарии регистрации по QR-коду возможны следующие ошибки:
WRONG_QR- отсканирован неверный QR-код. Требуется отсканировать QR-код созданный для регистрации мобильного приложения. Ошибка возникает при вызове метода Auth.scanQR.KINIT_NOT_LOADED- для вызова метода Auth.kinit требуется отсканировать QR-код. Ошибка может возникнуть если межды вызовами Auth.scanQR и Auth.kinit приложение было закрыто.KINIT_ALREADY_USED- отсканированный QR-код уже был использован или удалён на сервере. Для устранения ошибки требуется создать новый QR-код.CANNOT_OPEN_KINIT_SESSION- в метод Auth.kinit передан неверный код активации QR-кода.USING_THAT_PROTECTION_TYPE_PERMITTED_BY_POLICYв метод Auth.kinit передан способ защиты ключей аутентификации ниже настроенного на сервере.
В сценарии Online-регистрации возможны следующие ошибки:
SELF_REGISTRATION_DISABLED- Online-регистрация запрещена на сервере. Ошибка может возникнуть при вызове метода Auth.init.USING_THAT_PROTECTION_TYPE_PERMITTED_BY_POLICYв метод Auth.init передан способ защиты ключей аутентификации ниже настроенного на сервере.
Ошибка INVALID_KEY_STATE может возникнуть при вызове методов Auth.confirm, Auth.verify.
Ошибка говорит о том, что состояние устройства на сервере не соответствует вызываемому методу.
Если устройство находится в статусе Created, то необходимо вызвать метод Auth.confirm для перевода устройства в статус Installed или NotVerified.
Новый статус устройства зависит от сценария регистрации.
Если устройство находится в статусе NotVerified, то необходимо вызвать метод Auth.verify для перевода устройства в статус Active.
Ошибка INVALID_AUTHENTICATION_SCHEME вызвана тем, что на сервере в учётной записи пользователя отключена аутентификация при помощи мобильного приложения.
Необходимо обратиться к администратору сервера.
Ошибка KEY_ALREADY_CONFIRMED говорит о том, что ожидалось состояние устройство Created. Необходимо актуализировать состояние устройства при помощи метода
Policy.getUserDevices и исходя из состояния устройства завершить регистрацию.
Ошибка INVALID_PROFILE_HMAC говорит о том, что при вызове метода Auth.verify на сервере был отправлен неправильный код подтверждения
привязки устройства. Необходимо актуализировать данные учетной записи и устройства при помощи метода Policy.getUserDevices
и повторить вызов метода Auth.verify.
Ошибка INVALID_VERIFICATION_NONCE говорит о том, что перед вызовом метода Auth.verify требуется отсканировать QR-код для подтверждения
привязки устройства к учётной записи.
Ошибки SAVING_ON_PASSWORD_FAILED, JNI_FUN_FAILED вызваны низкоуровневыми криптографическими ошибки. Если после перезапуска приложения и/или повторной регистрации
устройства ошибки сохраняются, то необходимо обратиться к администратору сервиса.
| Ошибка | Код | Описание |
|---|---|---|
| SELF_REGISTRATION_DISABLED | 1 | Настройками сервера запрещена Online-регистрация пользователя. Ошибку возвращает вызов метод Auth.init() |
| DEVICE_NOT_FOUND_BY_ID | 12 | Не найдены ключи аутентификации по указанному идентификатору KID. |
| WRONG_QR | 19 | Не верный QR-код. Не удалось прочитать данные из QR-кода. |
| QR_NOT_IN_BASE64 | 21 | Не удалось прочитать QR-код. |
| INVALID_KEY_STATE | 273 | Не верный статус ключей аутентификации. |
| USING_THAT_PROTECTION_TYPE_PERMITTED_BY_POLICY | 29 | Выбранный способ защиты ключей аутентификации не соответствует требованиям заданным на сервере. |
| SAVING_ON_PASSWORD_FAILED | 30 | Не удалось сохранить ключи аутентификации на новом пароле. |
| KEY_ALREADY_CONFIRMED | 269 | Установка ключей аутентификации уже была выполнена. Получен HTTP-ответ со статусом 400. Ошибку может вернуть метод Auth.confirm(). |
| KINIT_ALREADY_USED | 270 | QR-код для привязки УЗ уже был использован или удалён. Получен HTTP-ответ со статусом 400. |
| CANNOT_OPEN_KINIT_SESSION | 47 | Не удалось создать сессию взаимодействия с сервером с использование одноразового ключа аутентификации из QR-кода. |
| KINIT_NOT_LOADED | 46 | В сценарии регистрации устройства по QR-коду не был отсканирован QR-код. Ошибку возвращает вызов метод Auth.kinit() |
| JNI_FUN_FAILED | 216 | Ошибка выполнения криптографической операции. Нативный код ошибки и описание содержится в описании. |
| INVALID_PROFILE_HMAC | 274 | Ошибка подтверждения УЗ пользователя. Передан неверный код подтверждения УЗ. Получен HTTP-ответ со статусом 400. |
| INVALID_VERIFICATION_NONCE | 275 | Ошибка подтверждения УЗ пользователя. Передан неверный идентификатор из QR-кода. Получен HTTP-ответ со статусом 400. |
| INVALID_AUTHENTICATION_SCHEME | 276 | Ошибка аутентификации. Пользователю отключена аутентификация при помощи мобильного приложения. Получен HTTP-ответ со статусом 401. |
Сетевые ошибки
Перечисленные ниже ошибки возникают в тех случаях, когда на запрос к сервису был получен ответ с HTTP-статусом отличным от 200.
| Ошибка | Код | Описание |
|---|---|---|
| REQUEST_WAS_LARGER | 413 | Переданные на сервер данные превышают ограничения, установленные на сервере. Получен HTTP-ответ со статусом 413. |
| INTERNAL_SERVER_ERROR | 500 | Получен HTTP-ответ со статусом 500. |
| BAD_GATEWAY | 502 | Получен HTTP-ответ со статусом 502. |
| SERVICE_UNAVAILABLE | 503 | Получен HTTP-ответ со статусом 503. |
| RESPONSE_CODE_NOT_OK | 876 | Получен HTTP-ответ со статусом 400, 401 и неизвестным прикладным кодом ошибки. Код ошибки и описание ошибки содержится в описании. |
| DESERIALIZATION_ERROR | 3 | Ошибка десериализации ответа сервера. |
| UNEXPECTED_NETWORK_ERROR | 2 | Произошла ошибка при установлении соединения с сервером. |
| NETWORK_ERROR | 4 | Не удалось установить соединение с сервером. |
Ошибка REQUEST_WAS_LARGER может возникнуть при попытке загрузить на сервер документ большего размера, чем ограничения определённые сервером.
При возникновении ошибок INTERNAL_SERVER_ERROR, BAD_GATEWAY, SERVICE_UNAVAILABLE можно повторить запрос позже или обратиться к Администратору сервиса.
Ошибка RESPONSE_CODE_NOT_OK возникает при получении от сервер HTTP-ответа со статусом 400, 401 и неизвестным прикладным кодом ошибки. То есть SDK не смог отобразить
код ошибки, полученный от сервера, на код ошибки SDK.
В данном случае пользователю можно отобразить описание ошибки.
Ошибка UNEXPECTED_NETWORK_ERROR, NETWORK_ERROR возникает при ошибках установления соединения с сервером. Подробности ошибки содержатся в описании ошибки.
Ошибка может быть связана с:
- Ошибками TLS-соединения (не установлен корневой сертификат, не удалось проверить сертификат сервера на отзыв, и т.п.)
- Time-out соединения
- Ошибки разрешения доменного имени
- и другие.
Ошибки взаимодействия с сервисом
Данные ошибки могут возникнуть, если клиент передал на сервер не валидный запрос или состояние данных на сервере не позволяет выполнить операцию.
| Ошибка | Код | Описание |
|---|---|---|
| ACCESS_POLICY_VIOLATION | 232 | Действие запрещено настройками сервера. Сервер вернут ответ с HTTP-статусом 400. |
| CONFIRMATION_POLICY_VIOLATION | 233 | Действие может быть выполнено только со вторичной аутентификацией. Сервер вернут ответ с HTTP-статусом 400. |
| INVALID_SUBJECT_NAME | 234 | Указанное в запросе на сертификат имя субъекта не соответствует требованиям. Получен HTTP-ответ со статусом 400. |
| INVALID_TEMPLATE | 235 | Указан неверный шаблон сертификата. Получен HTTP-ответ со статусом 400. |
| INVALID_ENROLL | 236 | Указан неверный идентификатор модуля УЦ. Получен HTTP-ответ со статусом 400. |
| INVALID_REQUEST | 237 | Неверный запрос на сертификат или связанные с запросом на сертификат данные. Получен HTTP-ответ со статусом 400. |
| INVALID_PIN | 238 | Неверный ПИН-код для доступа к закрытому ключу, хранящемуся на сервере. Получен HTTP-ответ со статусом 400. |
| INVALID_LICENSE | 239 | На сервере нет доступных лицензий для создания нового сертификата пользователя. Получен HTTP-ответ со статусом 400. |
| INVALID_CERTIFICATE_ID | 240 | Передан неверный идентификатор сертификата. Получен HTTP-ответ со статусом 400. |
| CERTIFICATE_NOT_FOUND_ID | 241 | Сертификат не найден по идентификатору. Получен HTTP-ответ со статусом 400. |
| REQUEST_NOT_FOUND_BY_ID | 242 | Запрос на сертификат не найден по идентификатору. Получен HTTP-ответ со статусом 400. |
| UNSIGNED_REQUEST_INVALID_STATE | 243 | Запрос на сертификат для мобильного приложения уже был обработан. Получен HTTP-ответ со статусом 400. |
| DUPLICATE_FRIENDLY_NAME | 244 | Дружественное имя уже назначено другому сертификату. Получен HTTP-ответ со статусом 400. |
| INVALID_CERT_REQUEST | 245 | Не найден запрос на сертификат. Получен HTTP-ответ со статусом 400. |
| PENDING_REQUESTS_EXIST | 246 | Ошибка создания запроса на сертификат. У пользователя уже есть необработанный запрос на сертификат. Получен HTTP-ответ со статусом 400. |
| CERT_ALREADY_INSTALLED | 247 | Сертификат уже был установлен. Получен HTTP-ответ со статусом 400. |
| DUPLICATE_CERT_FOUND | 248 | Сертификат уже был установлен для другой учетной записи. Получен HTTP-ответ со статусом 400. |
| KEY_NOT_FOUND | 249 | Не найден закрытый ключ сертификата. Получен HTTP-ответ со статусом 400. |
| KEY_TYPE_MISMATCH | 250 | Устанавливаемый сертификат не соответствует типу закрытого ключу (серверный/клиентский). Получен HTTP-ответ со статусом 400. |
| INVALID_CERTIFICATE_STATUS | 251 | Неверный статус сертификата для выполнения отзыва/приостановления/восстановления. Получен HTTP-ответ со статусом 400. |
| CONTENT_REQUIRED | 252 | Не передан документ для выполнения операции. Получен HTTP-ответ со статусом 400. |
| INVALID_CONTENT | 253 | Получены неверные данные при усовершенствовании подписи. Получен HTTP-ответ со статусом 400. |
| INVALID_CERTIFICATE | 254 | Сертификат не может быть использован для |
| INVALID_SIGNATURE_TYPE | 255 | Неверный тип подписи, инициированной в мобильном приложении. Получен HTTP-ответ со статусом 400. |
| INVALID_PROCESSING_TEMPLATE | 256 | Неверный идентификатор шаблона подписи, инициированной в мобильном приложении. Получен HTTP-ответ со статусом 400. |
| INVALID_SIGNATURE_PARAMS | 257 | Неверный набор параметров подписи, инициированной в мобильном приложении. Получен HTTP-ответ со статусом 400. |
| INVALID_PRESIGNED_HASH_DATA | 258 | Ошибка подписи с использованием ключей в мобильном приложении. Получен HTTP-ответ со статусом 400. |
| INVALID_SIGNED_DOCS_IDS_DATA | 259 | Ошибка подписи с использованием ключей в мобильном приложении. Получен HTTP-ответ со статусом 400. |
| DOC_NOT_FOUND | 260 | Не найден документ, указанный в операции. Получен HTTP-ответ со статусом 400. |
| KEY_UNAVAILABLE | 261 | Ошибка доступа к серверному ключу подписи. Получен HTTP-ответ со статусом 400. |
| INVALID_TSP_ADDRESS | 262 | Указан неверный адрес TSP-службы. Получен HTTP-ответ со статусом 400. |
| INVALID_CERT | 263 | Истек срок действия сертификата. Получен HTTP-ответ со статусом 400. |
| ARCHIVE_DISABLED | 264 | Ошибка архивирования ключа подписи. Архивирование ключей подписи запрещено настройками сервера. Получен HTTP-ответ со статусом 400. |
| INVALID_CERT_TYPE | 265 | Ошибка архивирования ключа подписи. Сертификат не поддерживает архивирование. Получен HTTP-ответ со статусом 400. |
| ALREADY_ARCHIVED | 266 | Ошибка создания архивной копии ключа подписи. Ключ подписи уже был архивирован. Получен HTTP-ответ со статусом 400. |
| CERT_MISMATCH | 267 | Ошибка установки сертификата. Сертификат не соответствует закрытому ключу. Получен HTTP-ответ со статусом 400. |
| NOT_ARCHIVED | 268 | Ошибка восстановления ключа подписи из архивной копии. Ключ подписи не был архивирован. Получен HTTP-ответ со статусом 400. |
| KINIT_ALREADY_USED | 270 | QR-код для привязки УЗ уже был использован или удалён. Получен HTTP-ответ со статусом 400. |
| INVALID_KEY_ID | 271 | Передан невалидный идентификатор ключей аутентификации (KID). Получен HTTP-ответ со статусом 400. |
| REQUESTED_USER_NOT_FOUND | 272 | УЗ пользователя не найдена. Получен HTTP-ответ со статусом 400. |
Список кодов ошибок
| Ошибка | Код | Описание |
|---|---|---|
| SELF_REGISTRATION_DISABLED | 1 | Настройками сервера запрещена Online-регистрация пользователя. Ошибку возвращает вызов метод Auth.init() |
| UNEXPECTED_NETWORK_ERROR | 2 | Непредвиденная сетевая ошибка. |
| DESERIALIZATION_ERROR | 3 | Не удалось десериализовать ответ сервера. |
| NETWORK_ERROR | 4 | Не удалось установить соединение с сервером. |
| KEYS_EXPIRED | 5 | Истек срок действия ключей аутентификации пользователя |
| CANNOT_CHANGE_PASSWORD | 6 | Не удалось сохранить ключи аутентификации на новом пароле пользователя (JNI ошибки экспорта ключей аутентификации) |
| ENTERING_NEW_PASSWORD_WAS_CANCELLED | 8 | Пользователь отменил ввод нового пароля на ключи аутентификации |
| ENTERING_PASSWORD_WAS_CANCELLED | 11 | Пользователь отменил ввод пароля на ключи аутентификации или ПИН-кода на Рутокен |
| DEVICE_NOT_FOUND_BY_ID | 12 | Не найдены ключи аутентификации по указанному идентификатору KID. |
| WRONG_QR | 19 | Не верный QR-код. Не удалось прочитать данные из QR-кода. |
| KEYS_BLOCKED_FOR_ERROR_ATTEMPTS | 20 | Ключи аутентификации временно заблокированы из-за превышения попыток ввода пароля |
| QR_NOT_IN_BASE64 | 21 | Не удалось прочитать QR-код. |
| ERROR_ENCRYPTING_WITH_PASSWORD | 27 | Ошибка доступа к ключам аутентификации. Возможно ключи аутентификации повреждены. |
| ERROR_ENCRYPTING_WITH_DEFAULT_PASSWORD | 28 | Ошибка доступа к ключу аутентификации устройства. Возможно ключ аутентификации устройства поврежден. |
| USING_THAT_PROTECTION_TYPE_PERMITTED_BY_POLICY | 29 | Выбранный способ защиты ключей аутентификации не соответствует требованиям заданным на сервере. |
| SAVING_ON_PASSWORD_FAILED | 30 | Не удалось сохранить ключи аутентификации на новом пароле. |
| CANNOT_START_SILENT_SESSION_WITHOUT_PASSWORD | 31 | |
| CHECK_REQUEST_RESPONSE_BODY_IS_EMPTY | 32 | При проверке статуса нового устройства получены неверный ответ сервера (сценарий с использованием существующего устройства). |
| REGISTER_NEW_DEVICE_RESPONSE_BODY_IS_EMPTY | 39 | Получен пустой ответ сервера при регистрации нового устройства. |
| REJECT_DEVICE_RESPONSE_BODY_IS_EMPTY | 44 | Получен пустой ответ сервера при отклонении привязки нового устройства. |
| USER_REGISTER_RESPONSE_BODY_IS_EMPTY | 45 | Получен пустой ответ сервера при регистрации нового устройства. |
| KINIT_NOT_LOADED | 46 | Не был отсканирован QR-код для регистрации устройства пользователя. Ошибку возвращает вызов метод Auth.kinit(). Необходимо предварительно вызвать метод Auth.scanQR(). |
| CANNOT_OPEN_KINIT_SESSION | 47 | Не удалось создать сессию взаимодействия с сервером с использование одноразового ключа аутентификации из QR-кода. |
| USER_DEVICES_STRUCT_HAS_NO_DEVICES | 48 | При подтверждении (Auth.verify()) привязки устройства получен пустой ответ сервера. |
| VERIFICATION_STRUCT_DID_NOT_LOADED | 50 | Для завершения привязки устройства требуется отсканировать QR-код (Auth.verify()). |
| NO_CERT_ID_NEITHER_REQUEST_ID_ENTERED | 70 | Не передан ID сертификата или ID запроса на сертификат. |
| GET_CERT_RESPONSE_BODY_IS_EMPTY | 77 | Получен пустой ответ сервера на запрос создания запроса на сертификат. |
| GET_CERT_LIST_RESPONSE_BODY_IS_EMPTY | 78 | Получен пустой ответ сервера на запрос списка сертификатов. |
| PARSE_CERT_LIST_RESPONSE_BODY_IS_EMPTY | 79 | Получен пустой ответ сервера на запрос декодирования сертификата. |
| PARSE_CERTS_REQUEST_FAILED | 81 | Сетевая ошибка запроса декодирования сертификата. |
| LIST_EXTERNAL_KEYS_FAILED | 82 | Сетевая ошибка на запрос установки сертификата на Рутокен. |
| INSTALL_CERT_EXTERNAL_RESPONSE_BODY_IS_EMPTY | 83 | |
| LIST_EXTERNAL_KEYS_CANCEL | 85 | Пользователь закрыл экран NFC. |
| CA_PARAMS_DESERIALIZATION_ERROR | 103 | Не удалось десериализовать настройки сервиса подписи. |
| PARAMS_DSS_RESPONSE_BODY_IS_EMPTY | 112 | Получен пустой ответ сервера на запрос списка настроек сервера. |
| CA_PARAMS_RESPONSE_BODY_IS_EMPTY | 113 | Получен пустой ответ сервера на запрос настроек сервиса подписи. |
| USER_DEVICES_RESPONSE_BODY_IS_EMPTY | 114 | Получен пустой ответ сервера на запрос списка устройств пользователя. |
| OPERATION_HISTORY_RESPONSE_BODY_IS_EMPTY | 115 | Получен пустой ответ сервера на запрос истории операция пользователя. |
| SIGN_MT_OPERATION_CONFIRMATION_FAILED | 153 | Сетевая ошибка подтверждения операции. |
| SIGN_MT_OPERATION_RESPONSE_CODE_NOT_OK | 154 | |
| GET_OPERATION_LIST_RESPONSE_BODY_IS_EMPTY | 159 | Получен пустой ответ сервера на запрос списка операций. |
| SIGN_MO_OPERATION_RESPONSE_BODY_IS_EMPTY | 160 | Получен пустой ответ сервера на запрос подписи из мобильного приложения. |
| TRANSACTION_STRUCT_NOT_LOADED | 162 | В метод Sign.sigmMt не переданы данные операции. |
| TRANSACTION_STRUCT_NOT_CONTAINS_OPERATION | 163 | В метод Sign.sigmMt не переданы данные операции. |
| SIGN_MO_OPERATION_CANCELLED | 164 | Пользователь закрыл экран подписи документов. |
| UPLOAD_DOCUMENT_RESPONSE_BODY_EMPTY | 200 | |
| UPLOAD_DOCUMENT_FILE_NOT_FOUND | 203 | |
| UPLOAD_DOCUMENT_FILE_INPUT_ERROR | 204 | |
| GET_DOCUMENT_INFO_RESPONSE_BODY_EMPTY | 205 | |
| GET_DOCUMENT_PREVIEW_RESPONSE_BODY_EMPTY | 208 | |
| GET_DOCUMENT_RAW_RESPONSE_BODY_EMPTY | 211 | |
| GET_DOCUMENT_RAW_FAILED | 213 | |
| SAVE_DOC_TO_TMP_ERROR | 214 | |
| GET_DOCUMENT_RESPONCE_BODY_EMPTY | 215 | |
| JNI_FUN_FAILED | 216 | Ошибка выполнения криптографической операции. Нативный код ошибки и описание содержится в описании. |
| GET_DOCUMENT_FAILED | 217 | |
| GET_DOCUMENT_IO_ERROR | 218 | |
| GET_DOCUMENT_INFO_FAILED | 219 | |
| NOT_SAFE_USAGE_CANCELLED_BY_USER | 220 | SDK не инициализирован. Пользователь запретил использовать API SDK, так как устройство является не безопасным. |
| NFC_TOKEN_IS_REMOVE | 221 | NFC токен был убран во время выполнения операции. |
| KEY_OPERATION_FAILED | 222 | |
| SEND_SIGN_REQUEST_FAILED | 223 | Ошибка отправки подписанного запроса на сертификат на сервер. |
| CREATE_KEY_FAILED | 223 | |
| CERTIFICATE_INSTALLATION_FAILED | 224 | |
| SIGN_MT_OPERATION_EXPIRED | 225 | Истекло время подтверждения операции. |
| PIN_CHANGED_FAILED | 227 | Ошибка смены ПИН-кода Рутокен. |
| PIN_FORGETTING_FAILED | 228 | |
| PIN_CHANGED_CANCELED | 229 | Пользователь закрыл экран смены ПИН-кода на Рутокен. |
| JNI_HMAC_AUTH_FAILED | 230 | Не удалось вычислить код аутентификации. |
| USER_KEY_GEN_CANCELED | 231 | Пользователь отменил создание ключа в мобильном приложении (экран БИО ДСЧ закрыт). |
| ACCESS_POLICY_VIOLATION | 232 | Сервер вернут ответ с HTTP-статусом 400. Действие запрещено настройками сервера. |
| CONFIRMATION_POLICY_VIOLATION | 233 | Сервер вернут ответ с HTTP-статусом 400. Действие может быть выполнено только со вторичной аутентификацией. |
| INVALID_SUBJECT_NAME | 234 | Указанное в запросе на сертификат имя субъекта не соответствует требованиям. Получен HTTP-ответ со статусом 400. |
| INVALID_TEMPLATE | 235 | Указан неверный шаблон сертификата. Получен HTTP-ответ со статусом 400. |
| INVALID_ENROLL | 236 | Указан неверный идентификатор модуля УЦ. Получен HTTP-ответ со статусом 400. |
| INVALID_REQUEST | 237 | Неверный запрос на сертификат или связанные с запросом на сертификат данные. Получен HTTP-ответ со статусом 400. |
| INVALID_PIN | 238 | Неверный ПИН-код для доступа к закрытому ключу, хранящемуся на сервере. Получен HTTP-ответ со статусом 400. |
| INVALID_LICENSE | 239 | На сервере нет доступных лицензий для создания нового сертификата пользователя. Получен HTTP-ответ со статусом 400. |
| INVALID_CERTIFICATE_ID | 240 | Передан неверный идентификатор сертификата. Получен HTTP-ответ со статусом 400. |
| CERTIFICATE_NOT_FOUND_ID | 241 | Сертификат не найден по идентификатору. Получен HTTP-ответ со статусом 400. |
| REQUEST_NOT_FOUND_BY_ID | 242 | Запрос на сертификат не найден по идентификатору. Получен HTTP-ответ со статусом 400. |
| UNSIGNED_REQUEST_INVALID_STATE | 243 | Запрос на сертификат для мобильного приложения уже был обработан. Получен HTTP-ответ со статусом 400. |
| DUPLICATE_FRIENDLY_NAME | 244 | Дружественное имя уже назначено другому сертификату. Получен HTTP-ответ со статусом 400. |
| INVALID_CERT_REQUEST | 245 | Не найден запрос на сертификат. Получен HTTP-ответ со статусом 400. |
| PENDING_REQUESTS_EXIST | 246 | Ошибка создания запроса на сертификат. У пользователя уже есть необработанный запрос на сертификат. Получен HTTP-ответ со статусом 400. |
| CERT_ALREADY_INSTALLED | 247 | Сертификат уже был установлен. Получен HTTP-ответ со статусом 400. |
| DUPLICATE_CERT_FOUND | 248 | Сертификат уже был установлен для другой учетной записи. Получен HTTP-ответ со статусом 400. |
| KEY_NOT_FOUND | 249 | Не найден закрытый ключ сертификата. Получен HTTP-ответ со статусом 400. |
| KEY_TYPE_MISMATCH | 250 | Устанавливаемый сертификат не соответствует типу закрытого ключу (серверный/клиентский). Получен HTTP-ответ со статусом 400. |
| INVALID_CERTIFICATE_STATUS | 251 | Неверный статус сертификата для выполнения отзыва/приостановления/восстановления. Получен HTTP-ответ со статусом 400. |
| CONTENT_REQUIRED | 252 | Не передан документ для выполнения операции. Получен HTTP-ответ со статусом 400. |
| INVALID_CONTENT | 253 | Получены неверные данные при усовершенствовании подписи. Получен HTTP-ответ со статусом 400. |
| INVALID_CERTIFICATE | 254 | Сертификат не может быть использован для |
| INVALID_SIGNATURE_TYPE | 255 | Неверный тип подписи, инициированной в мобильном приложении. Получен HTTP-ответ со статусом 400. |
| INVALID_PROCESSING_TEMPLATE | 256 | Неверный идентификатор шаблона подписи, инициированной в мобильном приложении. Получен HTTP-ответ со статусом 400. |
| INVALID_SIGNATURE_PARAMS | 257 | Неверный набор параметров подписи, инициированной в мобильном приложении. Получен HTTP-ответ со статусом 400. |
| INVALID_PRESIGNED_HASH_DATA | 258 | Ошибка подписи с использованием ключей в мобильном приложении. Получен HTTP-ответ со статусом 400. |
| INVALID_SIGNED_DOCS_IDS_DATA | 259 | Ошибка подписи с использованием ключей в мобильном приложении. Получен HTTP-ответ со статусом 400. |
| DOC_NOT_FOUND | 260 | Не найден документ, указанный в операции. Получен HTTP-ответ со статусом 400. |
| KEY_UNAVAILABLE | 261 | Ошибка доступа к серверному ключу подписи. Получен HTTP-ответ со статусом 400. |
| INVALID_TSP_ADDRESS | 262 | Указан неверный адрес TSP-службы. Получен HTTP-ответ со статусом 400. |
| INVALID_CERT | 263 | Истек срок действия сертификата. Получен HTTP-ответ со статусом 400. |
| ARCHIVE_DISABLED | 264 | Ошибка архивирования ключа подписи. Архивирование ключей подписи запрещено настройками сервера. Получен HTTP-ответ со статусом 400. |
| INVALID_CERT_TYPE | 265 | Ошибка архивирования ключа подписи. Сертификат не поддерживает архивирование. Получен HTTP-ответ со статусом 400. |
| ALREADY_ARCHIVED | 266 | Ошибка создания архивной копии ключа подписи. Ключ подписи уже был архивирован. Получен HTTP-ответ со статусом 400. |
| CERT_MISMATCH | 267 | Ошибка установки сертификата. Сертификат не соответствует закрытому ключу. Получен HTTP-ответ со статусом 400. |
| NOT_ARCHIVED | 268 | Ошибка восстановления ключа подписи из архивной копии. Ключ подписи не был архивирован. Получен HTTP-ответ со статусом 400. |
| KEY_ALREADY_CONFIRMED | 269 | Установка ключей аутентификации уже была выполнена. Получен HTTP-ответ со статусом 400. Ошибку может вернуть метод Auth.confirm(). |
| KINIT_ALREADY_USED | 270 | QR-код для привязки УЗ уже был использован или удалён. Получен HTTP-ответ со статусом 400. |
| INVALID_KEY_ID | 271 | Передан невалидный идентификатор ключей аутентификации (KID). Получен HTTP-ответ со статусом 400. |
| REQUESTED_USER_NOT_FOUND | 272 | УЗ пользователя не найдена. Получен HTTP-ответ со статусом 400. |
| INVALID_KEY_STATE | 273 | Статус ключей аутентификации не соответствует запрошенной операции. Получен HTTP-ответ со статусом 400. |
| INVALID_PROFILE_HMAC | 274 | Ошибка подтверждения УЗ пользователя. Передан неверный код подтверждения УЗ. Получен HTTP-ответ со статусом 400. |
| INVALID_VERIFICATION_NONCE | 275 | Ошибка подтверждения УЗ пользователя. Передан неверный идентификатор из QR-кода. Получен HTTP-ответ со статусом 400. |
| INVALID_AUTHENTICATION_SCHEME | 276 | Ошибка аутентификации. Пользователю отключена аутентификация при помощи мобильного приложения. Получен HTTP-ответ со статусом 401. |
| USER_BLOCKED | 277 | Ошибка аутентификации. Учётная запись пользователя заблокирована на сервере. Получен HTTP-ответ со статусом 401. |
| USER_NOT_FOUND | 278 | Ошибка аутентификации. Учётная запись пользователя не найдена или удалена на сервере. Получен HTTP-ответ со статусом 401. |
| INVALID_HMAC | 279 | Ошибка аутентификации. Передан неверный код аутентификации. Получен HTTP-ответ со статусом 401. |
| DEVICE_BLOCKED | 280 | Ошибка аутентификации. Мобильное устройство пользователя заблокировано на сервере. Получен HTTP-ответ со статусом 401. |
| ASSERTION_REPLAY | 281 | Ошибка аутентификации. Получено два одинаковых запроса. Получен HTTP-ответ со статусом 401. |
| INVALID_GRANT | 282 | Ошибка аутентификации. Получен HTTP-ответ со статусом 401. |
| INVALID_KINIT | 283 | Ошибка аутентификации. По данному QR-коду уже выполнена привязка устройства или срок действия QR-кода уже истек. Получен HTTP-ответ со статусом 401. |
| KEY_NOT_FOUND_ERROR | 284 | На устройстве пользователя не найден ключ подписи. |
| INVALID_CERT_STATE | 285 | Статус запроса на сертификат не допускает выполнение операции. Ошибку возвращает вызов методы Cert.signRequest(), Cert.createKeyAndSignRequest(), если статус запроса не равен SIGN_WAIT; метод Cert.installCertificate(), если статус не равен ACCEPTED. |
| USER_FORGOT_PASSWORD | 286 | Пользователь нажал кнопку "Забыл пароль". |
| USER_CANCELED_FORM | 287 | Пользователь закрыл экран SDK. |
| REQUEST_WAS_LARGER | 413 | Переданные на сервер данные превышают ограничения, установленные на сервере. Получен HTTP-ответ со статусом 413. |
| INTERNAL_SERVER_ERROR | 500 | Получен HTTP-ответ со статусом 500. |
| BAD_GATEWAY | 502 | Получен HTTP-ответ со статусом 502. |
| SERVICE_UNAVAILABLE | 503 | Получен HTTP-ответ со статусом 503. |
| RESPONSE_CODE_NOT_OK | 876 | Получен HTTP-ответ со статусом 400, 401 и неизвестным прикладным кодом ошибки. Код ошибки и описание ошибки содержится в описании. |