Получение нового ключа в мобильном приложении

Учетная запись создается автоматически по ИНН организации.
После выбора места хранения сертификата нажмите кнопку ОК.
В мастере отобразится место хранения:

Нажмите Отправить заявление.
При отправке заявления не создается контейнер закрытого ключа.
После отправки обратитесь к партнеру. Он предоставит вам распечатанный QR-код и инструкцию по использованию:

Далее скачайте приложение myDSS, зайдите в него и нажмите Сканировать QR-код:

Введите шестизначный пин-код, полученный в смс:

Ваша электронная подпись готова к использованию:

После добавления ЭП в мобильное приложение и успешной обработки заявки обновите статус заявления в 1С:

На первом шаге подтвердите аутентификацию в приложении на смартфоне:

Все подтверждения необходимо производить в приложении myDSS на смартфоне.
После подтверждения будет показана печатная форма с наименованием сервера, логином и паролем. Обязательно сохраните эти данные:

На следующем шаге укажите логин/пароль от свой учетной записи, которые отобразились на предыдущем шаге. Это является подтверждением того, что они действительно были сохранены.

По любой информации, требующей расшифровки, будет приходить уведомление на смартфон для подтверждения действий.
На последнем шаге распечатайте полученный сертификат, подпишите его и отправьте из 1С, нажав Отправить скан-копию расписки:

Учетная запись настроена и готова к использованию в сервисе 1С-Отчетность.
Как привязать электронную подпись к приложению MyDSS
Для перехода на новую технологию сдачи отчетности необходимо скачать на ваш смартфон приложение MyDSS. Инструкция ниже:
1. Для загрузки приложения на телефон вы можете либо отсканировать QR-код:
Либо скачать приложение MyDSS в PlayМаркете или App Store со следующей иконкой:

2. После выпуска подписи перейдите в раздел Моя организация — Электронные подписи — QR-код:


Для привязки приложения откройте QR-код в сервисе Небо и с помощью смартфона отсканируйте его:

По смс вам поступит код авторизации , его нужно ввести.
3. Задайте имя ключа, как правило, указывают название организации.
4. Можно задать пароль (не короче 6 символов). Также пароль можно не вводить.
После регистрации устройства ключ будет добавлен и отобразится на экране мобильного приложения.
5. При отправке отчетов, писем и уведомлений о прочтении действие необходимо будет подтверждать в этом мобильном приложении.
Установка и работа с облачной электронной подписью
Для установки приложения MyDss на смартфоне, он должен работать под управлением операционных систем:
- Android 7.0 и выше.
- iOS 8/9/10/11.
Установка и настройка на смартфоне приложения MyDss #
Установка на смартфоне приложения MyDSS #
Запускаем приложение Play Маркет или Apple store в зависимости от типа вашего устройства. В форме поиске, введите myDSS и нажмите кнопку Установить. После окончания установки нажимаем на кнопку Открыть.

Настройка приложения MyDSS #
Запустите установленное приложение MyDss. Для начала работы вам предложат от сканировать QR-код. Приложение отправит запрос на доступ к камере телефона, нажмите Разрешить. Возьмите бланк сертификата, выданного вам в УЦ и отсканируйте напечатанный QR-код. Укажите имя сохраняемого ключа(Оно может быть любым, например: «Облачная подпись для Торгов»). Так же вам потребуется выбрать способ подтверждения (без пароля, пароль, отпечаток пальца, face ID). После всех этих действий приложение будет готово к работе.
Установка СКЗИ КриптоПро CSP 5 #
Для начала работы с вашей облачной подписью необходима установленная ОС Windows 7, 8,8.1 или 10. Необходимо проверить, что у вашей Операционной Системы установлены все последние обновления. Для этого запустите Центр Обновления Windows и произведите поиск и обновления компонентов Windows.
Основным элементом для работы с облачной подписью является установленное и настроенное КриптоПро CSP 5.0.
- Скачиваем последнюю версию установочного файла КриптоПро CSP 5.0 с сайта разработчика КриптоПро.
- Запускаем скачанный Файл CSPSetup-5.0.exe и нажимаем кнопку Установить.Подробный процесс установки КриптоПро здесь.
- Скачайте корневой сертификат Минкомсвязи России и установите его в «Доверенные корневые центры сертификации».
- Установить корневой сертификат вашего УЦ в «Промежуточные центры сертификации». Инструкция по установке корневого сертификата Минкомсвязи и УЦ.
Настройка КриптоПро CSP 5.0 #
В операционной системе Windows: Нажимаем Пуск , переходим в папку Крипто-Про и выбираем пункт Инструменты Крипто-Про.

Далее переходим в раздел Облачный провайдер.

Замена адреса DSS сервера #
- Необходимо поменять текст в строке Сервер авторизации на адрес вашего сервера DSS(Адрес можно уточнить у вашего УЦ).
- Так же измените текст в строке Сервер DSS на адрес предоставленный вашим УЦ.
- Нажимаем на кнопку Установить сертификаты.
На следующем шаге укажите логин полученный вами в точке выдачи и нажмите кнопку далее.
Если это первый ваш вход в систему, то вам предложат изменить пароль для входа в личный кабинет облачной подписи. Чтобы это сделать укажите пароль полученный вами в точке выдачи. Вводим его в графу Старый пароль, а ниже указываем Новый пароль и Подтверждение пароля. После установки вашего нового пароля, обязательно запишите его.
Если вы уже изменяли пароль ранее, то предложения изменить пароль не будет.
Аутентификация в приложении myDSS #
Следующим действием нам потребуется пройти Аутентификацию. Потребуется подтвердить операцию с помощью установленного приложения MyDss. Запустите приложение MyDss на смартфоне, и в открывшемся запросе нажимаем Подтвердить. Если на телефоне нет интернет соединения, то выбираем Используйте офлайн-подтверждение. Сканируем приложением MyDss QR-код и указываем полученный код подтверждения на компьютере.
Конечным результатом успешной авторизации, должно стать уведомление Установка сертификатов завершилась успехом.

На этом установка и настройка облачной электронной подписи закончена.
Купить Электронную Подпись для любых целей вы можете в нашей компании. Срок выдачи один рабочий день.
Установка
Для использования myDSSSSD необходимо добавить в проект:
- Фреймворк
- Ресурсы
- Корневые сертификаты
Добавление фреймворка
Swift Package Manager
Добавьте пакет myDSSSDK из репозитория:
CocoaPods
Добавьте в файл Podfile зависимости:
Ручная установка
Carthage
Т.к. Carthage не поддерживает распространение бинарных фреймворков, данный метод мы не используем.
Ресурсы
Ресурсы лежат в бандле фреймворка в папке Resources . Их необходимо прикрепить к приложению. Папку locale нужно добавить с флагом Create folder references .
При интеграции с помощью SPM/CocoaPods фреймворк можно найти в Project Navigator .
- SPM: Package Dependencies -> myDSSSDK -> Referenced Binaries -> myDSSSDK.xcframework
- CocoaPods: Pods -> Pods -> myDSSSDK -> Frameworks -> myDSSSDK.xcframework
Корневые сертификаты
Для взаимодействия с серверами в ресурсы приложения в папку root-certs нужно поместить сертификаты:
Дополнительные действия
В процесс сборки таргета необходимо добавить новую скриптовую фазу ( Build Phases -> New Run Script Phase ), которая запускает скрипт ConfigureApplication внутри бандла фреймворка. Примеры для различных способов установки:
Так же можно переместить содержимое папки myDSSSDK.xcframework/Tools в любое удобное место и указать нужный путь.
Инициализация
Инициализировать библиотеку нужно перед вызовом внутренних функций SDK. Можно выставить уровень логирования и режим работы.
При debugMode: true проверка сертификатов на отзыв отключена, при запуске приложения будет пояляться экран с напоминанием о работе в режиме разработчика.
Объекты и функции
Для работы c УКЭП можно использовать:
- DSSUsersManager: Создаёт и управляет учётными записями пользователя на устройстве
- DSSOperationsManager: Получает информацию и подписывает операции и документы
- DSSCertificatesManager: Управляет сертификатами пользователей
- DSSDevicesManager: Управляет устройствами, привязанными к учётной записи
- DSSPolicyManager: Получает информацию о сервере DSS
Для работы c УНЭП можно использовать любые объекты и функции. Есть классы, которые включают в названии NonQual , в них есть расширенный набор методов:
- DSSUsersManagerNonQual: Создаёт и управляет учётными записями пользователя на устройстве
- DSSOperationsManagerNonQual: Получает информацию и подписывает операции и документы
- DSSCertificatesManagerNonQual: Управляет сертификатами пользователей
- DSSKeysManagerNonQual: Управляет сертификатами пользователей.
Регистрация
Перед тем, как начать подписывать документы и операции, нужно создать пользователя. Есть 3 способа это сделать:
- Зарегистрировать онлайн
- Зарегистрировать с использованием QR-кода
- Привязать к другому устройству
Сценарии УКЭП
Зарегистрировать онлайн
Пользователь создан и сохранён в хранилище, его статус — .installed . Теперь нужно дождаться, когда его статус на сервере DSS сменится на .notVerified . Чтобы проверить текущий статус:
Как только статус пользователя станет .notVerified , мы сможем его верифицировать:
При верификации может потребоваться QR-код. Это зависит от настроек политики сервера.
Теперь статус пользователя .active , с ним можно работать дальше.
Зарегистрировать с использованием QR-кода
При создании пользователя данным способом потребуется отсканировать QR-код, сгенерированый сервером. После создания статус пользователя — .active , с ним можно работать дальше.
Привязать к другому устройству
Данный способ применяется, когда уже есть устройство с подтверждённым пользователем и нужно привязать новое устройство. Потребуется передать идентификатор данного пользователя на новое устройство.
Получить идентификатор можно у экземпляра пользователя:
На новом устройстве вызываем метод:
Мы создали нового пользователя, его статус — .approveRequired , требуется подтверждение с основного устройства. На экране отобразится QR-код, который нужно отсканировать основным устройством.
На основном устройстве вызываем метод processAwaitingDevice :
Далее, на новом устройстве проверяем статус:
Теперь новое устройство подтверждено, статус пользователя — .active и с ним можно работать на новом устройстве.
Сценарии УНЭП
В сценариях УНЭП интерфейс SDK не используется, применяются дополнительные методы для работы с данными и используется класс DSSUsersManagerNonQual .
Зарегистрировать онлайн
Для начала регистрации мы вызываем метод createDSSUser :
После регистрации будет создан DSSUser в статусе created . Для дальнейшей работы его нужно сохранить в хранилище.
После успешного сохранения у пользователя сменится статус на .installed . Далее, необходимо дождаться от сервера смены статуса на .notVerified . Для проверки статуса нужно вызвать DSSUsersManager.updateStatus :
После смены статуса на .notVerified необходимо вызвать метод DSSUsersManagerNonQual.acceptAccountChanges . Данный метод требует, чтобы перед выполнением user.isReadyToSign == true .
Так же, для присоединения может потребоваться QR-код: если user.verification == .qrRequired . Его необходимо отсканировать и распарсить заранее, а содержимое передать в параметре verificationQRValue .
Персональные данные клиента для присоединения можно проверить в DSSUser.profile .
Зарегистрировать с использованием QR-кода
Для начала регистрации с QR кодом его нужно получить и распарсить. После этого его можно передать в метод DSSUsersManagerNonQual.createDSSUserWithInitQR .
QR-код может требовать активации. Код активации предоставляет сервер. Длину кода активации можно узнать, вызвав DSSPolicyManager.getDSSParams , в переменной DSSParams.activationCodeLength .
После регистрации будет создан DSSUser в статусе created . Для дальнейшей работы его нужно сохранить в хранилище.
Привязать к другому устройству
Для привязки к другому устройству требуется знать uid и serviceURL уже существующего на другом устройствке пользователя. На новом устройстве нужно вызвать метод DSSUsersManagerNonQual.createDSSUserWithApproval с этими данными:
После регистрации будет создан DSSUser в статусе created . Для дальнейшей работы его нужно сохранить в хранилище.
После сохранения статус сменится на .approveRequired — присоединение данного пользователя нужно подтвердить или отклонить на основном устройстве. Для этого нужно вызвать DSSDevicesManagerNonQual.approve или DSSDevicesManagerNonQual.reject .
Если для присоединения требуется отобразить персональные данные нового пользователя, то их можно найти в unapprovedUser.qrCode . В сценарии УКЭП на новом устройстве отображается этот QR-код, старое устройство его сканирует и отображает содержимое на экране.
После этого на новом устройстве нужно проверить и обновить статус пользователя:
Устройства и пользователи
Управления пользователями на текущем устройстве осуществляется с помощью классов DSSUsersManager и DSSUsersManagerNonQual .
Управление устройствами осуществляется с помощью DSSDevicesManager и DSSDevicesManagerNonQual .
Пользователей, установленных на устройстве, можно получить в DSSUsersManager.users .
Связанные устройства (в том числе и ожидающие подтверждения) можно получить, вызвав DSSDevicesManager.listDevices :
Сертификаты
Для подтверждения операций и подписи документов нужны действующие сертификаты. Управлять сертификатами можно с помощью классов DSSCertificatesManager и DSSCertificatesManagerNonQual .
Получение списка сертификатов
Создание запроса на сертификат
Сертификат с ключами на устройстве
Для работы с ключами на устройстве необходимо сначала подписать запрос на сертификат у которого параметр isClient: true . Данный запрос создаётся на сервере.
После этого необходимо дождаться выпуска сертификата и установить его:
Теперь данный сертификат можно использовать для подтверждения операций и подписания документов.
Управление сертификатами
С остальными доступными методами можно ознакомиться в описании API DSSCertificatesManager и DSSCertificatesManagerNonQual.
Операции и документы
Получение списка операций
Подтверждение операции
Загрузка документов
Подпись документов
Дополнительная информация
Параметры подписания
Для параметров подписания нужно получить параметры сервера подписания и идентификатор сертификата:
С остальными доступными методами можно ознакомиться в описании API DSSOperationsManager и DSSOperationsManagerNonQual.
Резервное копирование
Создание и восстановление резервных копий может быть полезно при смене устройства или если пользователь забыл пароль к своему профилю. Для создания резервной копии и восстановления понадобится придумать пароль для восстановления — recovery password .
Резервная копия профиля пользователя
Резервная копия userBackupData после создания находится в памяти. Необходимо самостоятельно сохранить её на устройство любым возможным способом.
Резервая копия ключей подписи на устройстве
Резервная копия keyBackupData после создания находится в памяти. Необходимо самостоятельно сохранить её на устройство любым возможным способом.
Архивирование ключей подписи на сервере DSS
Ключи, созданные с флагом isExportable могут быть архивированы на сервере DSS. Начиная с версии 2.1.267, можно создать ключи с таким флагом:
Для создания резервной копии сертификат ключей подписи нужно передать в метод DSSCertificatesManagerNonQual.exportPfx(. ) . Метод требует ПИН-код от контейнера с ключевой информацией. Если передать nil , то будет использован пин-код по умолчанию.
После архивации ключей их можно восстановить как на том же самом устройстве, так и на другом устройстве, где есть объект DSSUser , привязанный к той же учётной записи.
Для удаления архивной копии на сервере доступен метод DSSCertificatesManagerNonQual.removePfx(user:certificate:completion:) .
Обновление профиля устройства
Для обновление профиля устройства и симметричных ключей можно воспользоваться методом DSSUsersManager.renew(user:callback:) . После использования метода старый DSSUser будет заменён новым.
Работа с NFC картами и токенами Рутокен
Настройка проекта
Для работы с картами и токенами Рутокен нужно дополнительно настроить проект по документации Рутокен.
Убедитесь, что в проект добавлены все необходимые библиотеки и указаны все идентификаторы карт.
Для работы с NFC токенами доступно 2 сценария:
Импорт сертификата с карты
Для импорта сертификата сначала нужно получить с карты все доступные сертификаты, а потом нужный загрузить на сервер.
При перечислении сертификатов будет возвращён массив [Result<DSSCertificate, Error>] . Считывание данных сертификата — отдельная операция. Поэтому возвращаются результаты всех считываний по-отдельности.
После перечисления необходимо выбрать нужный сертификат и выгрузить его в DSS. Для этого нужно передать его в метод DSSCertificateManager.setCertificate(user:certificate:) .
После выгрузки сертификата NFC-токен можно использовать для подписании документов.
Создание ключей на карте
Создание ключей происходит при вызове метода DSSCertificatesManagerNonQual.signCertificateRequest . Место для создания ключей выбирается параметром keysSource . По-умолчанию выбрано KeysSourceIdentifier.localGeneric — ключи создаются на устройстве. Для NFC-токенов необходимо выбрать KeysSourceIdentifier.rutokenNFC .
После создания ключей и подписания запроса на сертификат, нужно дождаться выпуска сертификата. Текущие сертификаты проверяем методом DSSCertificatesManager.listCertificates(user:callback:) .
Как только сертификат будет выпущен, его можно установить на устройство методом DSSCertificatesManager.install .
После установки сертификата NFC-токен можно использовать для подписания документов.
Логирование
У фреймворка есть возможность подключить внешний логгер. Для этого логгер должен наследовать протокол DSSLoggerProtocol .
После определения логгера, его нужно передать в метод myDSS.setLogger(. ) :
После этого сообщения из SDK будут передаваться в установленный логгер.
Сохранение логов в файл
В SDK нет встроенных методов для сохранения логов файл. Но можно подключить стороннюю библиотеку, например CocoaLumberjack:
Чтобы получить логи, используем API CocoaLumberjack:
Оформление интерфейса
За внешний вид интерфейса отвечают файлы экранов *.xib и ассеты myDSSSDK_Assets.xcassets .
Xib файлы
| Xib | Описание |
|---|---|
| myDSSSDK_MainNavigationController.xib | Контроллер навигации всех экранов |
| myDSSSDK_MainNavigationController.xib | Контроллер навигации всех экранов |
| myDSSSDK_CameraNavigationController.xib | Контроллер навигации экрана с камерой |
| myDSSSDK_OverlayViewController.xib | Оверлей с индикатором активности. Закрывает экран приложения при взаимодействии с фреймворком. |
| myDSSSDK_CameraViewController.xib | Экран с камерой |
| myDSSSDK_ApprovingQRViewController.xib | Экран с QR-кодом для присоединения другого устройства |
| myDSSSDK_PasswordViewController.xib | Экран с вводом и созданием ПИН-кода |
| myDSSSDK_BiometrySuggestionViewController.xib | Экран с предложением использовать биометрию |
| myDSSSDK_DocumentsListViewController.xib | Экран со списком документов |
| myDSSSDK_DocumentPreviewCell.xib | Ячейка с превью документа |
| myDSSSDK_PDFViewController.xib | Просмотр PDF документа |
| myDSSSDK_AcceptAccountActionsViewController.xib | Действия при подтверждении присоединения к УЗ |
| myDSSSDK_ProcessDeviceActionsViewController.xib | Действия при подтверждении присоединения к другому устройству |
| myDSSSDK_DocumentsActionsViewController.xib | Действия при подписании документов |
| myDSSSDK_OperationActionsViewController.xib | Действия при работе с операцией с документами |
| myDSSSDK_InfoViewController.xib | Общие экран с таблицей значений |
| myDSSSDK_KeyValueCell.xib | Ячейка с заголовком и значением |
| RndmBioViewController.xib | Генератор случайных чисел CPROCSP |
| RndmBioViewControllerIPhone.xib | Генератор случайных чисел CPROCSP для iPhone |
Ассеты
В ассетах myDSSSDK_Assets.xcassets лежат цвета и изображения по-умолчанию.
Совместимость с DSSAppearance
Для обратной совместимости созданы классы с префиксом Custom . Они применяют к элементам стили, описаные в myDSS.appearance.* :
- CustomView
- CustomImageView
- CustomLabel
- CustomButton
- CustomKeyboardButton
- CustomGradientView
- CustomPDFView
Если сбросить класс компонентов на стандартный ( UIView , UILabel , . ), то стили DSSAppearance применяться не будут.
Работа с распространёнными ошибками
DSSError
Данные ошибки возвращает SDK.
При возникновении ошибки DSSError.networkError , необходимо смотреть на параметр code :
12002
Превышено ожидание ответа от сервера.
12007
The server name could not be resolved.
Не удаётся подключиться к ендпоинту. Возможные причины: — отсутствие интернета — некорректный адрес сервера — сервер недоступен
12175
WinINet failed to perform content decoding on the response. For more information, see the Content Encoding topic.
Возникла проблема с сертификатами. Возможные причины:
- В бандле приложения нет папок root-certs/prod с корневыми сертификатами сервера
- Корневые сертификаты имеют некорректный формат. Например, у них расширение .cer , а не .crt . Либо они не в формате PEM.
- Среди сертификатов нет подходящих для работы с данным сервером
- Сервер не настроен должным образом
Работа с UI
Методы SDK в которых есть интерфейс, могут возвращать ошибку DSSError.canceled — она означает, что пользователь закрыл UI.
DSSNetworkError
Данные ошибки возвращает сервер. При обработке статуса пользователя можно наткнуться на следующие ошибки: