Обработка ошибок (iOS)
В данном разделе рассмотрены основные коды ошибок SDK, сценарии их возникновения и обработки. Полный список классов ошибок приведен в разделе Типы ошибок.
При обработке ошибок необходимо обратить внимание на следующие аспекты:
- Закрытие UI
- Ошибки использования ключей аутентификации
- Ошибки регистрации нового устройства
- Сетевые ошибки
- Ошибки взаимодействия с сервисом
Большинство методов SDK используют ключи аутентификации и делают обращения на сервер, что требует корректной обработки сетевых ошибок и ошибок использования ключей аутентификации.
Закрытие UI
Если пользователь закроет UI SDK, то SDK не завершит соответствующую операцию и вернет ошибку USER_CANCELED_FORM
(DSSCancelType.userCancel / DSSCancelType.tokenUserCancel) (287).
Список экранов SDK, при закрытии которых будет возвращена ошибка:
- новый пароль на ключи аутентификации,
- ввод пароля для доступа к ключам аутентификации,
- подтверждение привязки нового устройства к учетной записи,
- сканирование QR-кода,
- подтверждение операций,
- ввод ПИН-кода Рутокен,
- ввод PUK-кода Рутокен,
- подтверждение/отклонение привязки устройства к учетной записи при помощи имеющегося устройства,
- экран с QR-кодом для привязки устройства к учетной записи при помощи имеющегося устройства.
Ошибки использования ключей аутентификации
Большинство вызовов API SDK связаны с обращением к сервисам КриптоПро Ключ. Каждое обращение к сервису требует аутентификации, задействующей ключи аутентификации. Доступ к ключам аутентификации требует взаимодействия с пользователем (ввод пароля или биометрии). Также необходимо учитывать, что ключи аутентификации имеют срок действия, состояние и связаны с учетной записью пользователя на сервисе.
Ошибка | Код | Описание |
---|---|---|
DSSServerError.unauthorized.userBlocked(DSSServerErrorType.unauthorized(DSSServerError.unauthorized.userBlocked)) | 277 | Ошибка аутентификации. Учетная запись пользователя заблокирована на сервере. Получен HTTP-ответ со статусом 401. |
DSSServerError.unauthorized.userNotFound (DSSServerErrorType.unauthorized(DSSServerError.unauthorized.userNotFound)) | 278 | Ошибка аутентификации. Учетная запись пользователя не найдена или удалена на сервере. Получен HTTP-ответ со статусом 401. |
DSSServerError.unauthorized.deviceBlocked (DSSServerErrorType.unauthorized(DSSServerError.unauthorized.deviceBlocked)) | 280 | Ошибка аутентификации. Мобильное устройство пользователя заблокировано на сервере. Получен HTTP-ответ со статусом 401. |
DSSSessionError.keyExpired (DSSSessionError.keyExpired) | 5 | Истек срок действия ключей аутентификации пользователя |
DSSError.kidNotFound (DSSError.kidNotFound) | 12 | Не удалось загрузить ключи аутентификации. Ключи с указанным KID не найдены. |
KEYS_BLOCKED_FOR_ERROR_ATTEMPTS (нет аналога!) | 20 | Ключи аутентификации временно заблокированы из-за превышения попыток ввода пароля |
INVALID_KEY_ID (DSSServerErrorType.badRequest(DSSServerError.badRequest.invalidKeyId)) | 271 | Передан невалидный идентификатор ключей аутентификации (KID). Получен HTTP-ответ со статусом 400. |
REQUESTED_DSSServerError.unauthorized.userNotFound (DSSServerErrorType.badRequest(DSSServerError.badRequest.requestedUserNotFound)) | 272 | УЗ пользователя не найдена. Получен HTTP-ответ со статусом 400. |
DSSServerError.badRequest.invalidKeyState (DSSServerErrorType.badRequest(DSSServerError.badRequest.invalidKeyState)) | 273 | Статус ключей аутентификации не соответствует запрошенной операции. Получен HTTP-ответ со статусом 400. |
DSSServerError.unauthorized.invalidHmac (DSSServerErrorType.unauthorized(DSSServerError.unauthorized.invalidHmac)) | 279 | Ошибка аутентификации. Передан неверный код аутентификации. Получен HTTP-ответ со статусом 401. |
DSSEncryptError.functionFailed (DSSEncryptError.functionFailed) | 230 | Не удалось вычислить код аутентификации. |
JNI_FUN_FAILED (любой случай из enum DSSEncryptError) | 216 | Ошибка выполнения криптографической операции. Нативный код ошибки и описание содержится в описании. |
DSSServerError.unauthorized.invalidAuthenticationScheme (DSSServerErrorType.unauthorized(DSSServerError.unauthorized.invalidAuthenticationScheme)) | 276 | Ошибка аутентификации. Пользователю отключена аутентификация при помощи мобильного приложения. Получен HTTP-ответ со статусом 401. |
NOT_SAFE_USAGE_CANCELLED_BY_USER (enum CSPInitCode, но больше подходит слуай CSPInitCode.init_lockScreen_not_installed) | 220 | SDK не инициализирован. Пользователь запретил использовать API SDK, так как устройство не является безопасным. |
Ошибка NOT_SAFE_USAGE_CANCELLED_BY_USER
возникает если SDK не был инициализирован или пользователь запретил использовать API SDK, так как устройство не является безопасным.
Необходимо повторно вызвать метод CryptoProDSS.init
При возникновении ошибок DSSServerError.unauthorized.userBlocked
, DSSServerError.unauthorized.deviceBlocked
необходимо обратиться к администратору КриптоПро Ключ для уточнения причин блокировки устройства.
При возникновении ошибок DSSSessionError.keyExpired
, DSSServerError.unauthorized.userNotFound
, DSSServerError.unauthorized.userNotFound
необходима повторная
регистрация учетной записи пользователя и/или устройства пользователя.
Ошибка DSSServerError.unauthorized.invalidAuthenticationScheme
вызвана тем, что на сервере в учетной записи пользователя отключена аутентификация при помощи мобильного приложения.
Необходимо обратиться к администратору КриптоПро Ключ.
Ошибка DSSError.kidNotFound
вызвана с тем, что в API SDK передан идентификатор ключей аутентификации KID, которых нет на устройстве.
Ошибка DSSServerError.badRequest.invalidKeyState
говорит о том, что устройство не находится в нужном состоянии для выполнения операции. Вероятнее всего
не была завершена регистрация устройства и оно не находится в статусе ACTIVE.
Необходимо актуализировать статус устройства Policy.getUserDevices и исходя из состояния устройства завершить регистрацию.
Ошибка DSSServerError.unauthorized.invalidHmac
вызвана неверным кодом аутентификации, отправленым на сервис. Ошибка может быть вызвана расхождением времени на клиенте и сервисе.
В зависимости от настроек сервис допускается расхождение времени от 4 до 30 минут.
Ошибка DSSEncryptError.functionFailed
вызвана низкоуровневыми ошибками при вычислении кода аутентификации. Для устранения ошибки можно попробовать перезапустить приложение.
Если ошибка не устранится, то может потребоваться повторная регистрация устройства на сервере.
Ошибка JNI_FUN_FAILED
вызвана низкоуровневыми ошибками криптографичесих операций. Для устранения ошибки можно попробовать перезапустить приложение.
Если ошибка не устранится, то может потребоваться повторная регистрация устройства на сервере.
Ошибки регистрации нового устройства
В сценарии регистрации по QR-коду возможны следующие ошибки:
WRONG_QR
(DSSAuthError.invalidQrCode) - отсканирован неверный QR-код. Требуется отсканировать QR-код созданный для регистрации мобильного приложения. Ошибка возникает при вызове метода Auth.kInit. (Изменил Auth.scanQR на kInit)KINIT_NOT_LOADED
(DSSQRCodeError.qrNotLoaded) - для вызова метода Auth.kinit требуется отсканировать QR-код. Ошибка может возникнуть если межды вызовами Auth.scanQR и Auth.kinit приложение было закрыто.KINIT_ALREADY_USED
(DSSServerErrorType.badRequest(DSSServerError.badRequest.kinitAlreadyUsed)) - отсканированный QR-код уже был использован или удален на сервере. Для устранения ошибки требуется создать новый QR-код.USING_THAT_PROTECTION_TYPE_PERMITTED_BY_POLICY
(DSSAuthError.biometricKeyProtectionImpossible / throw DSSAuthError.noPolicyKeyProtectionError) в метод Auth.kinit передан способ защиты ключей аутентификации ниже настроенного на сервере.
В сценарии регистрации с уникальным идентификаторов (онлайн-регистрации) возможны следующие ошибки:
SELF_REGISTRATION_DISABLED
(DSSAuthError.selfRegistrationImpossible) - онлайн-регистрация запрещена на сервере. Ошибка может возникнуть при вызове метода Auth.init.USING_THAT_PROTECTION_TYPE_PERMITTED_BY_POLICY
(DSSAuthError.biometricKeyProtectionImpossible / throw DSSAuthError.noPolicyKeyProtectionError) в метод Auth.init передан способ защиты ключей аутентификации ниже настроенного на сервере.
Ошибка DSSServerError.badRequest.invalidKeyState
(DSSAuthError.incorrectKeyStatus / (DSSServerErrorType.unauthorized(DSSServerError.unauthorized.invalidKeyState))) может возникнуть при вызове методов Auth.confirm, Auth.verify.
Ошибка говорит о том, что состояние устройства на сервере не соответствует вызываемому методу.
Если устройство находится в статусе Created
, то необходимо вызвать метод Auth.confirm для перевода устройства в статус Installed
или NotVerified
.
Новый статус устройства зависит от сценария регистрации.
Если устройство находится в статусе NotVerified
, то необходимо вызвать метод Auth.verify для перевода устройства в статус Active
.
Ошибка DSSServerError.unauthorized.invalidAuthenticationScheme
(DSSServerErrorType.unauthorized(DSSServerError.unauthorized.invalidAuthenticationScheme)) вызвана тем, что на сервере в учетной записи пользователя отключена аутентификация при помощи мобильного приложения.
Необходимо обратиться к администратору КриптоПро Ключ.
Ошибка KEY_ALREADY_CONFIRMED
(DSSServerErrorType.badRequest(DSSServerError.badRequest.keyAlreadyConfirmed)) говорит о том, что ожидалось состояние устройство Created. Необходимо актуализировать состояние устройства при помощи метода
Policy.getUserDevices и, исходя из состояния устройства, завершить регистрацию.
Ошибка INVALID_PROFILE_HMAC
(DSSServerErrorType.badRequest(DSSServerError.badRequest.invalidProfileHmac)) говорит о том, что при вызове метода Auth.verify на сервере был отправлен неправильный код подтверждения
привязки устройства. Необходимо актуализировать данные учетной записи и устройства при помощи метода Policy.getUserDevices
и повторить вызов метода Auth.verify.
Ошибка INVALID_VERIFICATION_NONCE
(DSSServerErrorType.badRequest(DSSServerError.badRequest.invalidVerificationNonce)) говорит о том, что перед вызовом метода Auth.verify требуется отсканировать QR-код для подтверждения
привязки устройства к учетной записи.
Ошибка | Код | Описание |
---|---|---|
SELF_REGISTRATION_DISABLED (DSSAuthError.selfRegistrationImpossible) | 1 | Настройками сервера запрещена Online-регистрация пользователя. Ошибку возвращает вызов метод Auth.init() |
DSSError.kidNotFound (DSSError.kidNotFound) | 12 | Не найдены ключи аутентификации по указанному идентификатору KID. |
WRONG_QR (DSSAuthError.invalidQrCode) | 19 | Не верный QR-код. Не удалось прочитать данные из QR-кода. |
QR_NOT_IN_BASE64 (DSSAuthError.wrongQrString) | 21 | Не удалось прочитать QR-код. |
DSSServerError.badRequest.invalidKeyState (DSSAuthError.incorrectKeyStatus / (DSSServerErrorType.unauthorized(DSSServerError.unauthorized.invalidKeyState))) | 273 | Не верный статус ключей аутентификации. |
USING_THAT_PROTECTION_TYPE_PERMITTED_BY_POLICY (DSSAuthError.biometricKeyProtectionImpossible / throw DSSAuthError.noPolicyKeyProtectionError) | 29 | Выбранный способ защиты ключей аутентификации не соответствует требованиям заданным на сервере. |
KEY_ALREADY_CONFIRMED (DSSServerErrorType.badRequest(DSSServerError.badRequest.keyAlreadyConfirmed)) | 269 | Установка ключей аутентификации уже была выполнена. Получен HTTP-ответ со статусом 400. Ошибку может вернуть метод Auth.confirm(). |
KINIT_ALREADY_USED (DSSServerErrorType.badRequest(DSSServerError.badRequest.kinitAlreadyUsed)) | 270 | QR-код для привязки УЗ уже был использован или удален. Получен HTTP-ответ со статусом 400. |
KINIT_NOT_LOADED (DSSQRCodeError.qrNotLoaded) | 46 | В сценарии регистрации устройства по QR-коду не был отсканирован QR-код. Ошибку возвращает вызов метод Auth.kinit() |
JNI_FUN_FAILED (любой случай из enum DSSEncryptError) | 216 | Ошибка выполнения криптографической операции. Нативный код ошибки и описание содержится в описании. |
INVALID_PROFILE_HMAC (DSSServerErrorType.badRequest(DSSServerError.badRequest.invalidProfileHmac)) | 274 | Ошибка подтверждения УЗ пользователя. Передан неверный код подтверждения УЗ. Получен HTTP-ответ со статусом 400. |
INVALID_VERIFICATION_NONCE (DSSServerErrorType.badRequest(DSSServerError.badRequest.invalidVerificationNonce)) | 275 | Ошибка подтверждения УЗ пользователя. Передан неверный идентификатор из QR-кода. Получен HTTP-ответ со статусом 400. |
DSSServerError.unauthorized.invalidAuthenticationScheme (DSSServerErrorType.unauthorized(DSSServerError.unauthorized.invalidAuthenticationScheme)) | 276 | Ошибка аутентификации. Пользователю отключена аутентификация при помощи мобильного приложения. Получен HTTP-ответ со статусом 401. |
Сетевые ошибки
Серверные ошибки представляют из себя структуру DSSServerError
, которая имеет следующие поля:
public let kind: DSSServerErrorType
public var description: String?
Поле | Тип | Описание |
---|---|---|
kind | DSSServerErrorType | перечисление возращаемых ошибок. Серверная ошибка маппируется в конкретный случай ошибки или в случай unknown, если такого не было в списке, и возвращается из SDK. |
description | String | описание конкретной ошибки, полученное от сервера. |
Примечание
В случае, если описание ошибки description не было получено от сервера, будет взято описание ошибки из поля errorDescription ошибки SDK.
Тип DSSServerErrorType
Ошибка | Описание |
---|---|
otherError | прочие ошибки, например, отсутствие соединения |
serverError | ошибки со http кодом 500, 502, 503 |
unauthorized | ошибки со http кодом 401 |
badRequest | ошибки со http кодом 400 |
Пример перехвата одного из типов серверной ошибки:
do {
//вызов метода
} catch let error as DSSServerError {
if case .unauthorized(.deviceBlocked) = error.kind {
//обработка ошибки
}
}
Перечисленные ниже ошибки возникают в тех случаях, когда на запрос к сервису был получен ответ с HTTP-статусом, отличным от 200.
Ошибка | Код | Описание |
---|---|---|
<!-- REQUEST_WAS_LARGER | 413 | Переданные на сервер данные превышают ограничения, установленные на сервере. Получен HTTP-ответ со статусом 413. --> |
INTERNAL_SERVER_ERROR (DSSServerErrorType.serverError(DSSServerError.serverError.internalServerError)) | 500 | Получен HTTP-ответ со статусом 500. |
BAD_GATEWAY (DSSServerErrorType.serverError(DSSServerError.serverError.badGateway)) | 502 | Получен HTTP-ответ со статусом 502. |
SERVICE_UNAVAILABLE (DSSServerErrorType.serverError(DSSServerError.serverError.serviceUnavailable)) | 503 | Получен HTTP-ответ со статусом 503. |
RESPONSE_CODE_NOT_OK (DSSServerErrorType.badRequest(DSSServerError.badRequest.unknown) / (DSSServerErrorType.unauthorized(DSSServerError.unauthorized.unknown))) | 876 | Получен HTTP-ответ со статусом 400, 401 и неизвестным прикладным кодом ошибки. Код ошибки и описание ошибки содержится в описании. |
DESERIALIZATION_ERROR (DSSLocalNetError.mapping) | 3 | Ошибка десериализации ответа сервера. |
UNEXPECTED_NETWORK_ERROR (DSSServerErrorType.otherError(DSSServerError.otherError.inner)) | 2 | Произошла ошибка при установлении соединения с сервером. Описание ошибки содержится в описании. |
NETWORK_ERROR (DSSServerErrorType.otherError(DSSServerError.otherError.inner)) | 4 | Не удалось установить соединение с сервером. Описание ошибки содержится в описании. |
При возникновении ошибок 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 (DSSServerErrorType.badRequest(DSSServerError.badRequest.accessPolicyViolation)) | 232 | Действие запрещено настройками сервера. Сервер вернул ответ с HTTP-статусом 400. |
CONFIRMATION_POLICY_VIOLATION (DSSServerErrorType.badRequest(DSSServerError.badRequest.confirmationPolicyViolation)) | 233 | Действие может быть выполнено только со подтверждение операции. Сервер вернут ответ с HTTP-статусом 400. |
INVALID_SUBJECT_NAME (DSSServerErrorType.badRequest(DSSServerError.badRequest.invalidSubjectName)) | 234 | Указанное в запросе на сертификат имя субъекта не соответствует требованиям. Получен HTTP-ответ со статусом 400. |
INVALID_TEMPLATE (DSSServerErrorType.badRequest(DSSServerError.badRequest.invalidTemplate)) | 235 | Указан неверный шаблон сертификата. Получен HTTP-ответ со статусом 400. |
INVALID_ENROLL (DSSServerErrorType.badRequest(DSSServerError.badRequest.invalidEnroll)) | 236 | Указан неверный идентификатор обработчика запросов на сертификат. Получен HTTP-ответ со статусом 400. |
INVALID_REQUEST (DSSServerErrorType.badRequest(DSSServerError.badRequest.invalidRequest)) | 237 | Неверный запрос на сертификат или связанные с запросом на сертификат данные. Получен HTTP-ответ со статусом 400. |
INVALID_PIN (DSSServerErrorType.badRequest(DSSServerError.badRequest.invalidPin)) | 238 | Неверный ПИН-код для доступа к ключу подписи, хранящемуся на сервере. Получен HTTP-ответ со статусом 400. |
INVALID_LICENSE (DSSServerErrorType.badRequest(DSSServerError.badRequest.invalidLicense)) | 239 | На сервере нет доступных лицензий для создания нового сертификата пользователя. Получен HTTP-ответ со статусом 400. |
INVALID_CERTIFICATE_ID (DSSServerErrorType.badRequest(DSSServerError.badRequest.invalidCertificateId)) | 240 | Передан неверный идентификатор сертификата. Получен HTTP-ответ со статусом 400. |
CERTIFICATE_NOT_FOUND_ID (DSSServerErrorType.badRequest(DSSServerError.badRequest.certificateNotFoundId)) | 241 | Сертификат не найден по идентификатору. Получен HTTP-ответ со статусом 400. |
REQUEST_NOT_FOUND_BY_ID (DSSServerErrorType.badRequest(DSSServerError.badRequest.requestNotFoundById)) | 242 | Запрос на сертификат не найден по идентификатору. Получен HTTP-ответ со статусом 400. |
UNSIGNED_REQUEST_INVALID_STATE (DSSServerErrorType.badRequest(DSSServerError.badRequest.unsignedRequestInvalidState)) | 243 | Запрос на сертификат для мобильного приложения уже был обработан. Получен HTTP-ответ со статусом 400. |
DUPLICATE_FRIENDLY_NAME (DSSServerErrorType.badRequest(DSSServerError.badRequest.duplicateFriendlyName)) | 244 | Отображаемое имя уже назначено другому сертификату. Получен HTTP-ответ со статусом 400. |
INVALID_CERT_REQUEST (DSSServerErrorType.badRequest(DSSServerError.badRequest.invalidCertRequest)) | 245 | Не найден запрос на сертификат. Получен HTTP-ответ со статусом 400. |
PENDING_REQUESTS_EXIST (DSSServerErrorType.badRequest(DSSServerError.badRequest.pendingRequestsExist)) | 246 | Ошибка создания запроса на сертификат. У пользователя уже есть необработанный запрос на сертификат. Получен HTTP-ответ со статусом 400. |
CERT_ALREADY_INSTALLED (DSSServerErrorType.badRequest(DSSServerError.badRequest.certAlreadyInstalled)) | 247 | Сертификат уже был установлен. Получен HTTP-ответ со статусом 400. |
DUPLICATE_CERT_FOUND (DSSServerErrorType.badRequest(DSSServerError.badRequest.duplicateCertFound)) | 248 | Сертификат уже был установлен для другой учетной записи. Получен HTTP-ответ со статусом 400. |
KEY_NOT_FOUND (DSSServerErrorType.badRequest(DSSServerError.badRequest.keyNotFound)) | 249 | Не найден ключ подписи, соответствующий сертификату. Получен HTTP-ответ со статусом 400. |
KEY_TYPE_MISMATCH (DSSServerErrorType.badRequest(DSSServerError.badRequest.keyTypeMismatch)) | 250 | Устанавливаемый сертификат не соответствует типу закрытого ключа в зависимости от его расположения. Получен HTTP-ответ со статусом 400. |
INVALID_CERTIFICATE_STATUS (DSSServerErrorType.badRequest(DSSServerError.badRequest.invalidCertificateStatus)) | 251 | Неверный статус сертификата для выполнения отзыва/приостановления/восстановления. Получен HTTP-ответ со статусом 400. |
CONTENT_REQUIRED (DSSServerErrorType.badRequest(DSSServerError.badRequest.contentRequired)) | 252 | Не передан документ для выполнения операции. Получен HTTP-ответ со статусом 400. |
INVALID_CONTENT (DSSServerErrorType.badRequest(DSSServerError.badRequest.invalidContent)) | 253 | Получены неверные данные при усовершенствовании подписи. Получен HTTP-ответ со статусом 400. |
INVALID_CERTIFICATE (DSSServerErrorType.badRequest(DSSServerError.badRequest.invalidCertificate)) | 254 | Сертификат не может быть использован для выполнения операции. Получен HTTP-ответ со статусом 400. |
INVALID_SIGNATURE_TYPE (DSSServerErrorType.badRequest(DSSServerError.badRequest.invalidSignatureType)) | 255 | Неверный тип подписи, переданный из мобильного приложения. Получен HTTP-ответ со статусом 400. |
INVALID_PROCESSING_TEMPLATE (DSSServerErrorType.badRequest(DSSServerError.badRequest.invalidProcessingTemplate)) | 256 | Неверный идентификатор шаблона подписи, переданный из мобильного приложения. Получен HTTP-ответ со статусом 400. |
INVALID_SIGNATURE_PARAMS (DSSServerErrorType.badRequest(DSSServerError.badRequest.invalidSignatureParams)) | 257 | Неверный набор параметров подписи, переданный из мобильного приложения. Получен HTTP-ответ со статусом 400. |
INVALID_PRESIGNED_HASH_DATA (DSSServerErrorType.badRequest(DSSServerError.badRequest.invalidPresignedHashData)) | 258 | Ошибка подписи с использованием ключей в мобильном приложении. Получен HTTP-ответ со статусом 400. |
INVALID_SIGNED_DOCS_IDS_DATA (DSSServerErrorType.badRequest(DSSServerError.badRequest.invalidSignedDocsIdsData)) | 259 | Ошибка подписи с использованием ключей в мобильном приложении. Получен HTTP-ответ со статусом 400. |
DOC_NOT_FOUND (DSSServerErrorType.badRequest(DSSServerError.badRequest.docNotFound)) | 260 | Не найден документ, указанный в операции. Получен HTTP-ответ со статусом 400. |
KEY_UNAVAILABLE (DSSServerErrorType.badRequest(DSSServerError.badRequest.keyUnavailable)) | 261 | Ошибка доступа к серверному ключу подписи. Получен HTTP-ответ со статусом 400. |
INVALID_TSP_ADDRESS (DSSServerErrorType.badRequest(DSSServerError.badRequest.invalidTspAddress)) | 262 | Указан неверный адрес TSP-службы. Получен HTTP-ответ со статусом 400. |
INVALID_CERT (DSSServerErrorType.badRequest(DSSServerError.badRequest.invalidCert)) | 263 | Истек срок действия сертификата. Получен HTTP-ответ со статусом 400. |
ARCHIVE_DISABLED (DSSServerErrorType.badRequest(DSSServerError.badRequest.archiveSisabled)) | 264 | Ошибка архивирования ключа подписи. Архивирование ключей подписи запрещено настройками сервера. Получен HTTP-ответ со статусом 400. |
INVALID_CERT_TYPE (DSSServerErrorType.badRequest(DSSServerError.badRequest.invalidCertType)) | 265 | Ошибка архивирования ключа подписи. Сертификат не поддерживает архивирование. Получен HTTP-ответ со статусом 400. |
ALREADY_ARCHIVED (DSSServerErrorType.badRequest(DSSServerError.badRequest.alreadyArchived)) | 266 | Ошибка создания архивной копии ключа подписи. Ключ подписи уже был архивирован. Получен HTTP-ответ со статусом 400. |
CERT_MISMATCH (DSSServerErrorType.badRequest(DSSServerError.badRequest.certMismatch)) | 267 | Ошибка установки сертификата. Сертификат не соответствует закрытому ключу. Получен HTTP-ответ со статусом 400. |
NOT_ARCHIVED (DSSServerErrorType.badRequest(DSSServerError.badRequest.notArchived)) | 268 | Ошибка восстановления ключа подписи из архивной копии. Ключ подписи не был архивирован. Получен HTTP-ответ со статусом 400. |
KINIT_ALREADY_USED (DSSServerErrorType.badRequest(DSSServerError.badRequest.kinitAlreadyUsed)) | 270 | QR-код для привязки УЗ уже был использован или удален. Получен HTTP-ответ со статусом 400. |
INVALID_KEY_ID (DSSServerErrorType.badRequest(DSSServerError.badRequest.invalidKeyId)) | 271 | Передан невалидный идентификатор ключей аутентификации (kid). Получен HTTP-ответ со статусом 400. |
REQUESTED_DSSServerError.unauthorized.userNotFound (DSSServerErrorType.badRequest(DSSServerError.badRequest.requestedUserNotFound)) | 272 | УЗ пользователя не найдена. Получен HTTP-ответ со статусом 400. |
Список типов ошибок
Тип ошибки | Описание |
---|---|
DSSAuthError | ошибки, которые возникают при создании/изменении или обращении к пользовательскому ключу аутентификации; |
DSSCryptoLibError | ошибки, возникающие при выполнении криптографических операций; |
DSSCertError | ошибки при работе с методами, которые подписывают, используют, удаляют сертификаты; |
DSSOperationError | эти ошибки возникают, когда операция уже не актуальна или не может быть выполнена из-за изменения в системе; |
DSSSignError | ошибки, возникшие во время обработки операции подписи/расшифрования; |
DSSError | различные внутренние ошибки системы при обработке данных; |
DSSServerError | ошибки, которые произошли в результате взаимодействия с сервером; |
DSSLocalNetError | ошибки, связанные с формированием или обработкой сетевых запросов; |
DSSEncryptError | ошибки во время взаимодействия с пользовательским ключом аутентификации; |
DSSQRCodeError | невалидный QR-код. Например, если QR-код содержит некорректные данные. |
DSSCancelType | эта ошибка связана с пользовательской отменой операции. Например, если пользователь прерывает выполнение операции до ее завершения. |
Все ошибки, за исключением DSSServerError
, являются перечислениями, которые реализуют системный протокол Error
.
Каждый тип ошибки также реализует системный протокол LocalizedError
, который содержит в себе поле errorDescription
, из которого можно получить описание конкретной ошибки.