Введите пароль к сертификату ЭП где взять?

Введите пароль к сертификату ЭП где взять? Сертификаты

1с-эдо

Решение:связать сертификат с закрытом ключом. 

Для этого необходимо: 

1. Сохранить сертификат, указав директорию компьютера, где его можно будет найти. Сделать это можно из программы 1С открыв сертификат в настройках электронной подписи и шифрования и нажать кнопку “Сохранить в файл” и указать директорию операционной системы для сохранения файла.

!4.jpg

2. Запустить криптопровайдер и выполнить установку сертификата.

Для VIPNet CSP

В окне VIPNet CSP нажать “Установить сертификат” 

!5.jpg

В открывшемся окне необходимо выбрать директорию, куда был сохранен сертификат, выбрать сохраненный ранее сертификат и нажать “Открыть”.

!6.jpg

В открывшемся мастере установки сертификатов, нажать “Далее”

!7.jpg

При выборе хранилища необходимо выбрать “Текущий пользователь” и нажать “Далее”

!8.jpg

В следующем окне необходимо выбрать “Найти контейнер с закрытым ключом” и нажать “Далее”.

!9.jpg

Контейнер с закрытым ключом оперделиться автоматический. В том случае, когда контейнер не определился необходимо нажать “Обзор” и выбрать контейнер вручную, а затем нажать “Ок” и завершить установку.

!10.jpg

Для КриптоПро CSP

Запустить КриптоПро CSP. Для этого необходимо перейти в Пуск – Панель управления – КриптоПро CSP

!11.jpg

В открывшемся окне криптопровайдера перейти на вкладку “Сервис” и нажать “Установить личный сертификат”.

!12.jpg

В следующем окне необходимо выбрать директорию расположения файла сертификата нажав кнопку “Обзор”

!13.jpg

Указать директорию, в которую ранее был сохранён сертификат и нажать “Открыть”.

!14.jpg

В следующем окне мастера установки сертификатов поставить галочку “Найти контейнер автоматический”. Контейнер должен определиться в окне ниже. Если автоматический не удалось найти контейнер необходимо нажать “Обзор” и самостоятельно указать контейнер. Затем нажать Далее.

!15.jpg

Затем необходимо поставить галочку “Установить сертификат (цепочку сертификатов) в контейнер”, нажать “Далее” и завершить установку.

!16.jpg

После установки связи между сертификатом и закрытой частью ключа ошибка не воспроизводится.

!17.jpg

Вопрос-ответ 1с эдо

1. Какой криптопровайдер использовать для 1С-ЭДО?

          Для успешной работы с электронными подписями рекомендуем использовать криптопровайдеры следующих версий:
КриптоПро CSP 
ViPNet CSP версии 4.2*
*ОС Windows 10 работает корректно только с ViPNet CSP версии 4.2.11. 

2. Стоимость сервиса?

          Любой пользователь 1С, чья программа (программы) зарегистрирована в личном кабинете на Портале ИТС, а установленные релизы конфигурации и платформы 1С:Предприятие используются правомерно, может стать абонентом 1С-ЭДО без предварительной покупки тарифа 1С:ИТС.
Регистрация в сервисе 1С-ЭДО и получение входящих документов от контрагентов – бесплатно. 
Пользователям с действующими тарифами 1С:ИТС предоставляется право на отправку определенного количества пакетов электронных документов без дополнительной оплаты.

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

  • Каждый отправленный электронный счет-фактура плюс два электронных документа, не являющихся счетами-фактурами составляют один пакет;
  • Отправленные электронные документы, не являющиеся счетами-фактурами и не включенные вместе со счетами-фактурами в электронный пакет в соответствии с предыдущим абзацем, формируют пакет по правилу: 2 электронных документа составляют один пакет.

          Таким образом, оплата взимается не за каждый отправленный электронный документ, а за комплект документов по сделке. При большом объёме исходящих электронных документов возможны льготы по тарификации. Для уточнения информации о льготах, необходимо обратиться в обслуживающую организацию (к партнёру 1С). 

3. Какова стоимость подключения к ЭДО?

          Подключиться к сервису ЭДО из программы 1С можно самостоятельно и бесплатно.
Если нужна помощь партнера в настройке и подключении ЭДО, партнер по соглашению с клиентом может взимать дополнительную плату за эту работу.
Оплата за использование ЭДО взимается с клиентов, отправляющих электронные документы своим контрагентам. Подробнее о расчетах за ЭДО – см. «Тарифы» 

4. Порядок подключения пользователя к ЭДО?

          Для подключения пользователей к 1С-ЭДО в программных продуктах 1С необходимо соблюдение нескольких условий:

          Для работы с электронным документооборотом в программных продуктах 1С поддерживается работа с двумя криптопровайдерами: КриптоПро CSP и VIPNet CSP.

            Внимание! Обращаем Ваше внимание, что на одном рабочем месте не рекомендуется одновременная установка двух криптопровайдеров (КриптоПро и VIPNet). Также дополнительно сообщаем, что сертификаты, выпущенные под КриптоПро, не будут работать с VIPNet, так же как и сертификаты, выпущенные под VIPNet, не будут работать с КриптоПро. Также информируем, что программа КриптоПро CSP предоставляется на платной основе, необходимо приобретение лицензии.

  • Сертификат электронной подписи.
  • Наличие доступа в интернет.

5. Создание профиля ЭДО.

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

  • Из общего списка справочника организаций.
  • Из карточки организации.

          После выполнения команды Подключить организацию, пользователю предстоит указать: сертификат ключа электронной подписи, принадлежащий организации;

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

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

6. Отправка приглашения при работе с электронными документами.

          После создания и проведения документов можно в списке документов реализации выделить все документы, которые необходимо отправить контрагентам, нажать на кнопку «ЭДО» и выбрать пункт «Отправить электронный документ».

          Программа проверит наличие настроек ЭДО с контрагентами и, если их нет, предложит создать приглашение для таких контрагентов
В открывшемся окне в столбце «Настройки отправки», напротив каждой записи, отображается состояние настройки обмена. При нажатии на ссылку состояния откроется Мастер настройки обмена, в котором можно ввести идентификатор контрагента или выбрать учетную запись контрагента, а также есть возможность отправить приглашение на почту:

          а). При нажатии кнопки «Ввести идентификатор вручную» появится поле для ввода или выбора идентификатора. Если выбор учетных записей контрагента недоступен, это значит, что контрагент не подключен к сервису 1С-ЭДО. 
б). Если идентификатор заранее неизвестен, то можно воспользоваться возможностью отправки приглашения на e-mail контрагента. Для этого в Мастере настройки обмена нужно нажать кнопку «Отправить приглашение». В открывшемся окне заполняются поля «Электронная почта» и «Текст приглашения».

          После заполнения нужно нажать кнопку «Отправить». В отправленном приглашении будут содержаться ссылки на инструкции по настройке ЭДО. После того, как контрагент получит приглашение на e-mail и выполнит настройку обмена со своей стороны, электронные документы автоматически отправятся контрагенту. 

Про сертификаты:  Акции Хозмакс Балашихи на сегодня -

7. Отправка приглашения из справочника «Контрагенты».

          Для настройки обмена необходимо перейти в справочник Контрагенты, выбрать контрагента (ов), выделив их мышкой, и выполнить команду Пригласить к обмену электронными документами меню ЭДО.
Перед отправкой приглашения для настройки обмена с контрагентами, пользователю необходимо выбрать учетную запись организации которой будет настраиваться обмен документами.

          При массовой отправке приглашений, программа проверит всех контрагентов на возможность отправки приглашений для настройки обмена и выдаст предупреждения, если есть затруднения с настройкой.

          Если идентификатор контрагента не удалось найти автоматически, пользователь может указать имейл контрагента, куда придет приглашение.
Далее необходимо выполнить команду Отправить и дождаться окончания отправки приглашений.

          Отслеживать состояние по отправленным и полученным приглашениям можно в Текущих делах ЭДО в соответствующей вкладке.
Приглашения, по которым получено согласие на обмен по ЭДО, будут попадать в папку «Ознакомиться». 

8. Не удается подписать акт/счет-фактуру (При попытке подписать появляется сообщение: «Обработанных документов 0»).

          При возникновении данной ошибки, необходимо проверить следующие настройки:

  • Действительный ли сертификат ЭП указан в «Профиле настроек ЭДО» (не закончился ли срок действия);
  • Выбран ли нужный вид документов в настройках сертификата, профиле настроек ЭДО и настройке ЭДО;
  • Нет ли задвоения контрагента/организации в справочниках;
  • Если в соответствующей «Настройке ЭДО» выбран договор с контрагентом, убедиться, что в документе ИБ указан тот же договор;
  • Проверить права доступа к сертификату (например, доступ к сертификату разрешен одному пользователю 1С, а вход выполнен под другим)

9. Добавление нового сертификата электронной подписи в учетную запись ЭДО.

          В случае, когда сертификат электронной подписи стал недействительным по сроку действия, нет необходимости в создании новой учетной записи и получении нового идентификатора, достаточно в существующей учетной записи заменить сертификат на актуальный. Для этого необходимо перейти в справочник “Организации”.
В представленном списке необходимо выбрать Вашу организацию и нажать ЭДО – Учетные записи
В открывшемся окне представлены учетные записи ЭДО выбранной организации. Предупреждение указывает, что в учетной записи отсутствуют действующие сертификаты, об этом же свидетельствует красный индикатор в начале наименования.
Необходимо открыть выбранную учетную запись и перейти на вкладку “Сертификаты”. В представленном списке имеется возможность удалить сертификаты, срок действия которых истек. Для удаления необходимо правой кнопкой мыши нажать на истекший сертификат и выбрать “Удалить”.
Для добавления нового сертификата необходимо нажать “Добавить”.
В открывшемся окне “Сертификаты ключей электронной подписи и шифрования” необходимо выбрать актуальный сертификат электронной подписи. При отсутствии нужного сертификата необходимо нажать “Добавить” и выбрать сертификат из хранилища сертификатов “Личные” операционной системы.
После добавления актуального сертификата в список сертификатов учетной записи ЭДО необходимо нажать “Записать и закрыть”.
В открывшемся окне “Подписание регистрационных данных на подключение к сервису 1С-ЭДО” требуется ознакомиться с пользовательским соглашением на подключение к сервису 1С-ЭДО, после чего ввести пароль закрытой части ключа электронной подписи и нажать “Подписать”. Если при выпуске сертификата пароль не был задан, то данной поле нужно оставить пустым.

10. Как получить 1С:Подпись?

          Для того, чтобы получить 1С:Подпись необходимо:

  • Использовать программный продукт, в котором реализован сервис 1С-Подпись.
  • Установить криптопровайдер (VIPNet  или КриптоПро CSP).
  • Иметь действующий договор информационно-технологического сопровождения (1С:ИТС) с партнером 1С или приобрести один из пакетов сервисов: СтартЭДО или 1С:Подпись.
  • Оформить заявление на получение электронной подписи.

11. Печать электронного документа.

          Необходимо перейти в Архив ЭДО. Это можно сделать из Текущих дел ЭДО, перейдя по соответствующей ссылке, а также из раздела Администрирование – Архив ЭДО. Он предназначен для хранения всех входящих и исходящих электронных документов.
В Архиве ЭДО необходимо открыть соответствующий документ, нажать Ещё – Печать.

12. Состояние ЭДО в 1С.

          Работая в программном продукте 1С посмотреть состояние по электронному документообороту можно несколькими способами:

  • В списке документов учета в столбце “Состояние ЭДО”
  • Открыв необходимый документ учёта. 
  • В Архиве ЭДО перейдя в соответствующую вкладку (Входящие / Исходящие) в столбце Состояние ЭДО. 
  • Открыв электронный документ.

          Состояние ЭДО напрямую зависит от выполнения регламента ЭДО. Для того, чтобы посмотреть регламент ЭДО в электронном документе необходимо нажать на кнопку “Скрыть / показать панель регламента ЭДО”.

После чего слева появится панель регламента ЭДО, в которой отображаются этапы обработки электронного документа участниками ЭДО.

13. Изменение регистрационных данных (1С-ЭДО).

          Крайне важно обеспечивать актуальность сведений и своевременно информировать оператора ЭДО об их изменении.

          Для изменения регистрационных данных на сервере оператора ЭДО необходимо:

  • Изменить информацию в карточке организации 1С.
  • Предоставить актуальные данные оператору ЭДО, путем нажатия на гиперссылку “обновить” рядом с соответствующим реквизитом в Учетной записи ЭДО.

          Для этого необходимо перейти в справочник “Организации”. В представленном списке необходимо выбрать Вашу организацию и нажать ЭДО – Учетные записи.

          В открывшемся окне представлены учетные записи ЭДО выбранной организации.

          Необходимо открыть учетную запись и напротив соответствующего реквизита организации нажать гиперссылку “Обновить”.

          После чего нажать “Записать и закрыть”.

          Автоматически будет сформирован регистрационный пакет с актуальными данными организации. Необходимо ввести пароль от сертификата и нажать “Подписать”. Соответствующие реквизиты будут обновлены со стороны оператора ЭДО после получения данных.

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

14. Получение и принятие приглашения от контрагента.

          Если Ваша организация планирует получать электронные документы от контрагентов отсутствующих в информационной базе, то перед началом обмена рекомендуется установить флаг “Создавать контрагентов автоматически”. Контрагенты будут создаваться при получении документов и приглашений.

(Администрирование – Обмен электронными документами – Обмен с контрагентами).

          Для того чтобы получить входящее приглашение от контрагента необходимо перейти в Текущие дела ЭДО и нажать “Отправить и получить”.
Входящая настройка отобразится в группе “Приглашения”.

Для последующей работы с данным контрагентом необходимо согласиться с приглашением, нажав кнопку “Принять”.
После этого соответствующая настройка появится в Настройках ЭДО.

          Теперь организация может получать документы от данного контрагента.

15. Убрать из Текущих дел ЭДО неактуальные документы. Закрыть принудительно.

          При невозможности завершить ЭДО, имеется техническая возможность изъять документ из активного документооборота.
Для этого необходимо перейти в Текущие дела ЭДО, нажать правой кнопкой мыши по необходимому документу и выбрать “Закрыть принудительно”.
В появившемся окне необходимо указать причину закрытия документооборота и нажать “Закрыть документооборот”. Иные участники обмена не получат уведомлений, свидетельствующих о том, что по данному документу не требуется действий.

Про сертификаты:  Порядок подключения

          Состояние ЭДО по данному документу будет изменено на “Закрыт принудительно”.  Документ будет изъят из Текущих дел ЭДО и помещен в Архив ЭДО.

          В том случае, если контрагент обработает документ после закрытия документооборота, состояние ЭДО изменится на актуальное.
Возможность закрыть документ принудительно имеется на каждой стадии активного документооборота.

16. Сертификат не найден на компьютере.

          При возникновении ошибки “Сертификат не имеет связи с закрытым ключом” необходимо выполнить проверку сертификата электронной подписи.
Перейти в раздел “Администрирование” – “Обмен электронными документами” –  “Настройка электронной подписи и шифрования” –  На вкладке “Сертификаты” открыть используемый сертификат -. Нажать на кнопку “Проверить”-Ввести пароль закрытой части ключа и нажать “Проверить”.

17. Как отправить электронный документ?

          Отправка электронных документов может производиться:

  • При выполнении команды Отправить электронный документ меню ЭДО в таблице списка документов реализаций
  • При выполнении команды Отправить электронный документ меню ЭДО в карточке документа информационной базы
  • При выполнении команды Подписать и отправить из карточки электронного документа
  • При выполнении команды Подписать и отправить из папки Исходящие страницы Текущие дела ЭДО, открываемой по гиперссылке панели команд Текущие дела ЭДО (раздел Администрирование – подраздел Сервис или раздел Руководителю – подраздел Сервис, или раздел Покупки – подраздел Сервис).

18. Как получить электронный документ?

          Получение электронных документов производится при выполнении команды Отправить и получить из формы списка документов “Текущие дела ЭДО”, открываемого по гиперссылке панели команд Текущие дела ЭДО (раздел Продажи – подраздел Сервис или раздел Покупки – подраздел Сервис).

19. Привязка сертификата к учетной записи 1С-ЭДО.

          В некоторых случаях пользователям может потребоваться привязка нового сертификата к старой учетной записи, полученной в сервисе 1С-ЭДО.
При этом доступ к этой учетной записи у пользователя отсутствует – в программе 1С нет Профиля ЭДО со старым уникальным идентификатором.
Для привязки необходимо выслать по адресу edo@1c.ru заявление по шаблону.
Отпечаток можно скопировать из файла сертификата:
Screenshot_5.png

20. Работа в 1С-ЭДО (1С-Такском) с сертификатом электронной подписи ГОСТ Р 34.10-2021.

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

  • Обновить конфигурацию 1С до актуального релиза.
  • Обновить средства криптозащиты*

          ViPNet CSP до версии 4.2

          КриптоПро CSP до версии 4.0

* – до обновления рекомендуем сохранить контейнеры ключей электронной подписи на внешний носитель (флешку) во избежании их возможного удаления в процессе установки новой версии криптопровайдера.

21. Аннулирование электронного УПД.

          Аннулирование электронного УПД, подписанного обеими сторонами, можно провести, используя шаблон письма «Предложение об аннулировании».

          «Предложение об аннулировании» направляется стороной-инициатором аннулирования в виде произвольного электронного документа с признаком обязательности ответной подписи.
Если получатель “Предложения об аннулировании” утвердил полученный документ (поставил ответную подпись), исходный электронный документ является аннулированным по соглашению сторон.
После этого необходимо отменить проведение документа учетной системы, соответствующий аннулированному первичному документу, и/или пометить его на удаление.

22. Как подготовить заявление на выпуск сертификата с помощью 1С:Подпись?

  • Войдите в программе 1С  в раздел «Общие настройки»,
  • Перейдите по ссылке «Настройки электронной подписи и шифрования», 
  • Нажмите кнопку «Добавить»,
  • Выберите «Заявление на выпуск сертификата,
  • Поставьте «галку» в строке с текстом «Подтверждаю, что принимаю условия соглашения о присоединении к регламенту удостоверяющего центра»,
  • Потом нажмите кнопку «Далее», выберите свою Организацию (заявление заполнится реквизитами вашей Организации), 
  • Потом снова кнопку «Далее» – «Далее» – «Далее». 
  • Нажмите кнопку «печать» – Проверьте корректность отображения Заявления и распечатайте его. 
  • Кликните на надпись «Комплект документов», чтобы посмотреть подробности. 
  • Снова «Далее» и потом «Закрыть» Ваше заявление в статусе «Отправлено». 
  • Ожидайте обработки заявления. Потом можно будет нажать кнопку «Обновить состояние».

23. Программа 1С показывает, что мой контрагент подключен к ЭДО. Как начать с ним обмен электронными документами?

          Непосредственно в программах 1С в справочнике “Контрагенты” можно проверить, подключен ли ваш контрагент к 1С-ЭДО. 
Информация о том, что контрагент подключен к ЭДО, не является гарантией готовности этой фирмы вести ЭДО с Вашей организацией. Необходимо отправить контрагенту приглашение к обмену и дождаться его принятия.

24. Как подключиться к 1С-Такском из конфигурации, в которой нет или отключена Интернет-поддержка пользователей 1С?

          Для подключения к сервису “1С-Такском” из конфигураций, в которых нет или отключена Библиотека Интернет Поддержки пользователей, необходимо:

25. Поддержка ЭДО в конфигурациях «1С:Предприятие».

          С ЭДО в решениях 1С можно работать в следующих программах “1С:Предприятия”:

  • 1C:Управление нашей фирмой
  • 1С:Розница, ред. 2 (в т.ч. базовая)
  • 1С:Бухгалтерия, ред. 2.0 и 3.0  (в т.ч. базовые)
  • 1C:Управление холдингом
  • 1С:Управление торговлей, ред. 10.3 и 11 (в т.ч. базовые)
  • 1С:Комплексная автоматизация, ред. 2.0
  • 1С:Бухгалтерия государственного учреждения ред. 1.0 и 2.0
  • 1С:Бухгалтерия некоммерческой организации
  • 1С:Налоговый мониторинг. Бухгалтерия КОРП МСФО
  • 1С:Управление производственным предприятием
  • 1C:ERP Управление предприятием 2.0
  • 1С:ERP. Управление холдингом
  • 1С:Садовод (в т.ч. базовая)
  • 1С:Клиент ЭДО, ред. 2

Состав прикладных решений, включающих “1С-ЭДО”, планируется расширять.

Для пользоватей “1С:Предприятие 7.7” для работы в сервисе “1С-ЭДО” можно настроить правила обмена с программой “1С:Клиент ЭДО”.

26. При смене организации нужно ли получать новый идентификатор ЭДО?

          Идентификатор выдается на определенную организацию. У каждой организации должен быть свой Идентификатор участника обмена. Поэтому да, на новую организацию нужно получить новый Идентификатор.

27. Можно ли в базовых версиях программных продуктов 1С настроить ЭДО?

          Можно, для использования сервиса необходимо наличие квалифицированной электронной подписи. Приобретение тарифа СтартЭДО, 1С:ИТС не является обязательным для работы с 1С-ЭДО.

28. Как получить и установить сертификат электронной подписи?

          Сертификат электронной подписи можно получить используя сервис 1С:Подпись или в любом удостоверяющем центре (УЦ), имеющем аккредитацию Минкомсвязи либо использовать имеющийся сертификат, например, от системы электронной отчетности в ФНС.

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

29. Как осуществить привязку нового сертификата в профиль настроек ЭДО?

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

          Для нетиповых ПП (только для «1С-Такском») помимо добавления сертификата в список «Сертификаты организации», как описано выше, необходимо так же выслать электронным письмом на адрес edo@1c.ru новый сертификат(ы) в виде файла *.cer и идентификатор организации (идентификатор участника электронного документооборота).

Про сертификаты:  Купить АБС-пластик (ABS). Цена, характеристики.

30. Можно ли подключить несколько организаций по одному договору 1С:ИТС (тарифу СтартЭДО)?

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

31. Если у принимающей стороны закончился срок действия договора ИТС или тарифа СтартЭДО, может ли она принимать/отправлять электронные документы?

          Вне зависимости от срока действия договора ИТС или тарифа “Старт ЭДО” обмен электронными документами продолжает работать.
Для использования сервиса 1С-ЭДО наличие действующего договора ИТС или тарифа “Старт ЭДО” не обязательно.

32. Отправка произвольного документа.

          Для того, чтобы отправить неформализованный электронный документ в программном продукте 1С необходимо перейти в раздел “Продажи” – “Произвольные электронные документы”, затем перейти во вкладку “Исходящие” и нажать на кнопку “Создать”
В открывшейся форме необходимо выбрать организацию – отправителя электронного документа, контрагента – получателя электронного документа, тип документа (при необходимости).
После заполнения необходимых реквизитов необходимо нажать “Добавить файл” и выбрать неформализованный документ из соответствующей директории Вашего компьютера.

          Внимание! Обращаем Ваше внимание, что требуемый размер файла вложения от 100 байт до 50 Мб.

Добавив необходимый документ необходимо нажать на кнопку “Записать” (кнопка имеет вид дискеты), после чего станет доступна кнопка “Подписать и отправить”.

Убедившись, что все данные введены корректно необходимо нажать “Подписать и отправить”, после чего в произвольном документе будет установлена Ваша подпись и данный документ будет направлен на сервер Вашего оператора для дальнейшей передачи его контрагенту.

          Внимание! Обращаем Ваше внимание, что имя присоединяемого файла автоматический преобразуется в транслит. Этот функционал создан с целью корректного переноса между различными операционными системами. Если по какой-либо причине произвольный документ должен быть отправлен без транслита, то перед добавлением файла документа Вам необходимо зайти в “Ещё” и снять галочку с “Транслировать имя присоединяемого файла”.

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

Читаем закрытый ключ и конвертируем

Файл privkey.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <openssl/pem.h>
#include <openssl/cms.h>
#include <openssl/err.h>
#include "gost_lcl.h"

/* Convert little-endian byte array into bignum */
BIGNUM *reverse32bn(char *b, BN_CTX *ctx)
{
	BIGNUM *res;
	char buf[32];
	BUF_reverse(buf, b, 32);
	res = BN_bin2bn(buf, 32, BN_CTX_get(ctx));
	OPENSSL_cleanse(buf, sizeof(buf));
	return res;
}

void xor_material(char *buf36, char *buf5C, char *src)
{
	int i;
	for(i = 0; i < 32; i  )
	{
		buf36[i] = src[i] ^ 0x36;
		buf5C[i] = src[i] ^ 0x5C;
	}
}

int make_pwd_key(char *result_key, char *start12, int start12_len, char *passw)
{
	int result;
	int i;
	char pincode4[1024];
	int pin_len;
	char current[32];
	char material36[32];
	char material5C[32];
	char hash_result[32];
	gost_hash_ctx ctx;
	init_gost_hash_ctx(&ctx, &GostR3411_94_CryptoProParamSet);
	memset(pincode4, 0, sizeof(pincode4));
	pin_len = strlen(passw);
	if (pin_len*4 > sizeof(pincode4)) {	result = 1;	goto err; }
	for(i = 0; i < pin_len; i  )
		pincode4[i*4] = passw[i];

	start_hash(&ctx);
	hash_block(&ctx, start12, start12_len);
	if (pin_len) 
		hash_block(&ctx, pincode4, pin_len * 4);
	finish_hash(&ctx, hash_result);

	memcpy(current, (char*)"DENEFH028.760246785.IUEFHWUIO.EF", 32);

	for(i = 0; i < (pin_len?2000:2); i  )
	{
		xor_material(material36, material5C, current);
		start_hash(&ctx);
		hash_block(&ctx, material36, 32);
		hash_block(&ctx, hash_result, 32);
		hash_block(&ctx, material5C, 32);
		hash_block(&ctx, hash_result, 32);
		finish_hash(&ctx, current);
	}

	xor_material(material36, material5C, current);

	start_hash(&ctx);
	hash_block(&ctx, material36, 32);
	hash_block(&ctx, start12, start12_len);
	hash_block(&ctx, material5C, 32);
	if (pin_len) 
		hash_block(&ctx, pincode4, pin_len * 4);
	finish_hash(&ctx, current);

	start_hash(&ctx);
	hash_block(&ctx, current, 32);
	finish_hash(&ctx, result_key);

	result = 0; //ok
err:
	return result;
}

BIGNUM *decode_primary_key(char *pwd_key, char *primary_key, BN_CTX *bn_ctx)
{
	BIGNUM *res;
	char buf[32];
	gost_ctx ctx;
	gost_init(&ctx, gost_cipher_list->sblock);
	gost_key(&ctx, pwd_key);
	gost_dec(&ctx, primary_key, buf, 4);
	res = reverse32bn(buf, bn_ctx);
	OPENSSL_cleanse(buf, sizeof(buf));
	return res;
}

BIGNUM *remove_mask_and_check_public(char *oid_param_set8, BIGNUM *key_with_mask, BIGNUM *mask, char *public8, BN_CTX *ctx)
{
	int result;
	EC_KEY *eckey = NULL;
	const EC_POINT *pubkey;
	const EC_GROUP *group;
	BIGNUM *X, *Y, *order, *raw_secret, *mask_inv;
	char outbuf[32], public_X[32];
	ASN1_OBJECT *obj;
	int nid;

	order = BN_CTX_get(ctx);
	mask_inv = BN_CTX_get(ctx);
	raw_secret = BN_CTX_get(ctx);
	X = BN_CTX_get(ctx);
	Y = BN_CTX_get(ctx);
	if (!order || !mask_inv || !raw_secret || !X || !Y) { result = 1; goto err; }

	obj = ASN1_OBJECT_create(0, oid_param_set8 1, *oid_param_set8, NULL, NULL);
	nid = OBJ_obj2nid(obj);
	ASN1_OBJECT_free(obj);

	if (!(eckey = EC_KEY_new())) { result = 1; goto err; }
	if (!fill_GOST2001_params(eckey, nid)) { result = 1; goto err; }
	if (!(group = EC_KEY_get0_group(eckey))) { result = 1; goto err; }
	if (!EC_GROUP_get_order(group, order, ctx)) { result = 1; goto err; }

	if (!BN_mod_inverse(mask_inv, mask, order, ctx)) { result = 1; goto err; }
	if (!BN_mod_mul(raw_secret, key_with_mask, mask_inv, order, ctx)) { result = 1; goto err; }

	if (!EC_KEY_set_private_key(eckey, raw_secret)) { result = 1; goto err; }
	if (!gost2001_compute_public(eckey)) { result = 1; goto err; }
	if (!(pubkey = EC_KEY_get0_public_key(eckey))) { result = 1; goto err; }
	if (!EC_POINT_get_affine_coordinates_GFp(group, pubkey, X, Y, ctx)) { result = 1; goto err; }

	store_bignum(X, outbuf, sizeof(outbuf));
	BUF_reverse(public_X, outbuf, sizeof(outbuf));
	if (memcmp(public_X, public8, 8) != 0) { result = 1; goto err; }

	result = 0; //ok
err:
	if (eckey) EC_KEY_free(eckey);
	if (result == 0) return raw_secret;
	return NULL;
}

int file_length(char *fname)
{
	int len;
	FILE *f = fopen(fname, "rb");
	if (f == NULL) return -1;
	fseek(f, 0, SEEK_END);
	len = ftell(f);
	fclose(f);
	return len;
}

int read_file(char *fname, int start_pos, char *buf, int len)
{
	int read_len;
	FILE *f = fopen(fname, "rb");
	if (f == NULL) return 1;
	if (start_pos) fseek(f, start_pos, SEEK_SET);
	read_len = fread(buf, 1, len, f);
	fclose(f);
	if (read_len != len) return 1;
	return 0; //ok
}

int get_asn1_len(unsigned char *buf, int *size_hdr)
{
	int n, i, res;
	int pos = 0;
	if ((buf[pos]&0x80) == 0) {
		*size_hdr = 1;
		return buf[pos];
	}
	n = buf[pos  ]&0x7f;
	res = 0;
	for(i = 0; i < n; i  ) {
		res = res*256   buf[pos  ];
	}
	*size_hdr = n 1;
	return res;
}

#define MAX_HEADER 20000
int read_container(char *fpath, int flag2, char *salt12, char *primary_key, char *masks_key, char *public8, char *oid_param_set8)
{
	int result;
	char primary_path[1024 30];
	char masks_path[1024 30];
	char header_path[1024 30];
	char header_buf[MAX_HEADER];
	int header_len;
	int i, len, pos, size_hdr;

	if (strlen(fpath)>1024) { result = 1; goto err; }

	sprintf(header_path, "%s/header.key", fpath);
	if (flag2 == 0)
	{
		sprintf(primary_path, "%s/primary.key", fpath);
		sprintf(masks_path, "%s/masks.key", fpath);
	}
	else
	{
		sprintf(primary_path, "%s/primary2.key", fpath);
		sprintf(masks_path, "%s/masks2.key", fpath);
	}

	if (read_file(primary_path, 4, primary_key, 32)) { result = 1; goto err; }
	if (read_file(masks_path, 4, masks_key, 32)) { result = 1; goto err; }
	if (read_file(masks_path, 0x26, salt12, 12)) { result = 1; goto err; }

	header_len = file_length(header_path);
	if (header_len < 0x42 || header_len > MAX_HEADER) { result = 1; goto err; }
	if (read_file(header_path, 0, header_buf, header_len)) { result = 1; goto err; }

//------------- skip certificate ---------------------------
	pos = 0;
	for(i = 0; i < 2; i  )
	{
		get_asn1_len(header_buf pos 1, &size_hdr);
		pos  = size_hdr 1;
		if (pos > header_len-8) { result = 2; goto err; }
	}

//------------------ get oid_param_set8 -----------------------
#define PARAM_SET_POS 34
	if (memcmp(header_buf pos PARAM_SET_POS, "x6x7", 2) != 0) { result = 2; goto err; }
	memcpy(oid_param_set8, header_buf pos PARAM_SET_POS 1, 8);

//------------------ get public8 -----------------------
	result = 2; //not found
	pos  = 52;
	for(i = 0; i < 3; i  )
	{
		len = get_asn1_len(header_buf pos 1, &size_hdr);
		if (len == 8 && memcmp(header_buf pos, "x8ax8", 2) == 0)
		{
			memcpy(public8,header_buf pos 2,8);
			result = 0; //ok
			break;
		}
		pos  = len size_hdr 1;
		if (pos > header_len-8) { result = 2; goto err; }
	}
err:
	OPENSSL_cleanse(header_buf, sizeof(header_buf));
	return result;
}

#define START_OID 0x12
#define START_KEY 0x28
unsigned char asn1_private_key[72] = {
	0x30,0x46,2,1,0,0x30,0x1c,6,6,0x2a,0x85,3,2,2,0x13,0x30,0x12,6,7,0x11,
	0x11,0x11,0x11,0x11,0x11,0x11,6,7,0x2a,0x85,3,2,2,0x1e,1,4,0x23,2,0x21,0
};

int main(int argc, char **argv)
{
	int result;
	char *container_path;
	char *passw;
	char salt12[12];
	char primary_key[32];
	char masks_key[32];
	char public8[8];
	char oid_param_set8[8];
	BN_CTX *ctx;
	BIGNUM *key_with_mask;
	BIGNUM *mask;
	BIGNUM *raw_key;
	char pwd_key[32];
	char outbuf[32];

	ctx = BN_CTX_new();

	if (argc == 2)
	{
		container_path = argv[1];
		passw = "";
	}
	else
	if (argc == 3)
	{
		container_path = argv[1];
		passw = argv[2];
	}
	else
	{
		printf("get_private container_path [passw]n");
		result = 1;
		goto err;
	}

	if (read_container(container_path, 0, salt12, primary_key, masks_key, public8, oid_param_set8) != 0 &&
		read_container(container_path, 1, salt12, primary_key, masks_key, public8, oid_param_set8) != 0)
	{
		printf("can not read container from %sn", container_path);
		result = 2;
		goto err;
	}

	make_pwd_key(pwd_key, salt12, 12, passw);
	key_with_mask = decode_primary_key(pwd_key, primary_key, ctx);
	OPENSSL_cleanse(pwd_key, sizeof(pwd_key));
	mask = reverse32bn(masks_key, ctx);
	raw_key = remove_mask_and_check_public(oid_param_set8, key_with_mask, mask, public8, ctx);

	if (raw_key)
	{
		BIO *bio;
		store_bignum(raw_key, outbuf, sizeof(outbuf));
		memcpy(asn1_private_key START_OID, oid_param_set8, 8);
		memcpy(asn1_private_key START_KEY, outbuf, 32);
		//bio = BIO_new_file("private.key", "w");
		bio = BIO_new_fp(stdout, BIO_NOCLOSE | BIO_FP_TEXT);
		PEM_write_bio(bio, "PRIVATE KEY", "", asn1_private_key, sizeof(asn1_private_key));
		BIO_free(bio);
		OPENSSL_cleanse(outbuf, sizeof(outbuf));
		OPENSSL_cleanse(asn1_private_key, sizeof(asn1_private_key));
		result = 0; //ok
	}
	else
	{
		printf("Error check public keyn");
		result = 3;
	}

err:
	BN_CTX_free(ctx);
	OPENSSL_cleanse(salt12, sizeof(salt12));
	OPENSSL_cleanse(primary_key, sizeof(primary_key));
	OPENSSL_cleanse(masks_key, sizeof(masks_key));
	return result;
}

Оцените статью
Мой сертификат
Добавить комментарий