МенеджерКриптографии.ИнициализироватьАсинх

Методы · InitializeAsync

Асинхронная функция. Начинает инициализацию объекта МенеджерКриптографии с переданными параметрами.

Синтаксис

ИнициализироватьАсинх(<ИспользованиеИнтерактивногоРежима>)
ИнициализироватьАсинх(<ИмяМодуляКриптографии>, <ПутьМодуляКриптографии>, <ТипМодуляКриптографии>, <ИспользованиеИнтерактивногоРежима>)
Полное описание, параметры и ограничения

МенеджерКриптографии.ИнициализироватьАсинх (CryptoManager.InitializeAsync)

МенеджерКриптографии (CryptoManager)

ИнициализироватьАсинх (InitializeAsync)

Доступен, начиная с версии 8.3.18.

Вариант синтаксиса: Без инициализации модуля криптографии

Синтаксис:
ИнициализироватьАсинх(<ИспользованиеИнтерактивногоРежима>)
Параметры:

<ИспользованиеИнтерактивногоРежима> (обязательный)
Тип: ИспользованиеИнтерактивногоРежимаКриптографии.
Определяет использование интерактивного режима работы модуля криптографии.
Значение по умолчанию: НеИспользовать.
Вариант синтаксиса: С инициализацией модуля криптографии

Синтаксис:
ИнициализироватьАсинх(<ИмяМодуляКриптографии>, <ПутьМодуляКриптографии>, <ТипМодуляКриптографии>, <ИспользованиеИнтерактивногоРежима>)
Параметры:

<ИмяМодуляКриптографии> (обязательный)
Тип: Строка.
Имя модуля криптографии.
Параметр используется, если менеджер создается для операционной системы MS Windows.

<ПутьМодуляКриптографии> (обязательный)
Тип: Строка.
Путь к файлу-библиотеке, реализующей требуемый набор функций.
Параметр используется при создании менеджера в Linux и macOS.

<ТипМодуляКриптографии> (обязательный)
Тип: Число.
Тип модуля криптографии.

<ИспользованиеИнтерактивногоРежима> (необязательный)
Тип: ИспользованиеИнтерактивногоРежимаКриптографии.
Определяет использование интерактивного режима работы модуля криптографии.
Значение по умолчанию: НеИспользовать.
Возвращаемое значение:
Тип: Обещание.
Результат выполнения обещания - объект МенеджерКриптографии.
Описание:

Асинхронная функция. Начинает инициализацию объекта МенеджерКриптографии с переданными параметрами.

Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Примечание:
В мобильной платформе параметры <ИмяМодуляКриптографии>, <ПутьМодуляКриптографии>, <ТипМодуляКриптографии> игнорируются.
См. также:
МенеджерКриптографии, метод НачатьИнициализацию

Использование в версии:

Доступен, начиная с версии 8.3.18.

Описание изменено в версии 8.3.24.

Методическая информация

Практические примеры

Добавить и убрать только свой публичный учебный сертификат через Ждать

Полный изолированный опыт с реальным DER: исходное отсутствие → импорт → точное присутствие → удаление найденного объекта → подтверждённое отсутствие. При ошибке не удаляем существовавший заранее сертификат и не объявляем неподтверждённую очистку успешной.

Где и как запускать

Полный клиентский модуль управляемой формы на отдельной собственной Windows-учётной записи и пустой учебной конфигурации 8.5.1.1343. Меняет только заранее отсутствовавший встроенный публичный DER в Личном; здесь не запускался, в ОС ничего не добавлялось/удалялось.

Подготовка

  1. Создайте отдельную собственную учётную запись Windows только для обучения. Используйте новую пустую конфигурацию УчебнаяКонфигурацияСинтаксиса и Windows-клиент ровно 8.5.1.1343. В рабочей базе или рабочей Windows-учётной записи этот опыт запрещён.

  2. Создайте обработку с управляемой формой: Занято — Булево, начально Ложь; ПодтверждаюОтдельныйСтенд — Булево, начально Ложь; Отчёт — Строка длиной 0, многострочное поле только для просмотра.

  3. Команду ПроверитьУчебныйЦикл свяжите с одноимённым клиентским обработчиком. Вставьте весь модуль одного урока, не исключая функции проверки и обработчики ошибок.

  4. Перед запуском вручную подтвердите свою отдельную учётную запись и единственного оператора: никто другой не должен добавлять или удалять этот учебный образец параллельно. ПодтверждаюОтдельныйСтенд — подтверждение оператора, не проверка личности пользователя ОС.

  5. В коде встроен публичный сертификат Syntax Guide Training Only. Он не содержит закрытого ключа, не является доверенным и не предназначен для реальной подписи. Первый вызов проверяет, что его точных DER-данных в Личном ещё нет.

  6. Если вы ранее вручную установили этот образец для урока поиска, данный опыт остановится до записи. Он не удаляет уже существовавший сертификат, даже если имя и отпечаток совпали.

  7. Область выбрана явно: ПерсональныеСертификаты + ДанныеПользователяОС. Платформа обращается к системному хранилищу; это не временный массив в форме. Ни ДанныеКомпьютера, ни КорневыеСертификаты не открываются.

  8. Проверьте на своём стенде наличие Microsoft Enhanced RSA and AES Cryptographic Provider с типом 24. Не используйте чужой DLL-путь и не угадывайте числовой тип. Для полного Windows-модуля разрешите режим синхронных вызовов: разбор/выгрузка публичных DER в памяти остаются синхронными и в уроке с Ждать.

  9. Код сам добавляет только свой публичный образец, проверяет его присутствие, удаляет только найденный точный образец и проверяет отсутствие. Изменение хранилища не является транзакцией базы 1С.

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

  11. При нескольких точных совпадениях, несовпадении DER или ошибке очистки автоматическое удаление прекращается. Отчёт явно требует ручной проверки только своего учебного образца в Личном своего отдельного Windows-пользователя; нельзя чистить всё хранилище.

  12. Не закрывайте форму и клиент между стартом и итогом. При аварийном завершении процесса callback/обработка исключения не гарантированы: проверьте свой учебный сертификат вручную. Успех объявляется лишь после последнего чтения, которое подтвердило отсутствие.

  13. Сертификаты, подписи, ключевые контейнеры, PIN, OCSP/CRL и сетевые серверы не используются. Удаление из Личного не отзывает сертификат и не удаляет чужой закрытый ключ.

  14. Здесь уроки не запускались в 1С и сертификаты в ОС не добавлялись/удалялись. Проверены структура модулей и точные сигнатуры установленной справки. Эти проверки не подтверждают runtime-успех.

&НаКлиенте
Асинх Процедура ПроверитьУчебныйЦикл(Команда)
    Если Занято Тогда
        Возврат;
    КонецЕсли;
    Занято = Истина;
    НужнаОчистка = Ложь;
    Хранилище = Неопределено;
    Образец = Неопределено;
    Попытка
        ПроверитьОтдельныйСтенд();
        Образец = ПолучитьСвойПубличныйОбразец();
        Менеджер = Новый МенеджерКриптографии(ИспользованиеИнтерактивногоРежимаКриптографии.НеИспользовать);
        Менеджер = Ждать Менеджер.ИнициализироватьАсинх("Microsoft Enhanced RSA and AES Cryptographic Provider", "", 24, ИспользованиеИнтерактивногоРежимаКриптографии.НеИспользовать);
        Если ТипЗнч(Менеджер) <> Тип("МенеджерКриптографии") Тогда
            ВызватьИсключение "Инициализация не вернула менеджер";
        КонецЕсли;
        Хранилище = Ждать Менеджер.ПолучитьХранилищеСертификатовАсинх(ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты, РасположениеХранилищаСертификатовКриптографии.ДанныеПользователяОС);
        ПроверитьСвоёХранилище(Хранилище);
        Кандидаты = Ждать Хранилище.ПолучитьВсеАсинх();
        Если НайтиТочныйСвойОбразец(Кандидаты, Образец) <> Неопределено Тогда
            ВызватьИсключение "Образец существовал заранее: импорт и удаление запрещены";
        КонецЕсли;
        НужнаОчистка = Истина;
        РезультатДобавления = Ждать Хранилище.ДобавитьАсинх(Образец);
        Если РезультатДобавления <> Неопределено Тогда
            ВызватьИсключение "Обещание добавления должно завершиться Неопределено";
        КонецЕсли;
        Кандидаты = Ждать Хранилище.ПолучитьВсеАсинх();
        СвойСертификат = НайтиТочныйСвойОбразец(Кандидаты, Образец);
        Если СвойСертификат = Неопределено Тогда
            ВызватьИсключение "Добавление не подтверждено повторным чтением";
        КонецЕсли;
        РезультатУдаления = Ждать Хранилище.УдалитьАсинх(СвойСертификат);
        Если РезультатУдаления <> Неопределено Тогда
            ВызватьИсключение "Обещание удаления должно завершиться Неопределено";
        КонецЕсли;
        Кандидаты = Ждать Хранилище.ПолучитьВсеАсинх();
        Если НайтиТочныйСвойОбразец(Кандидаты, Образец) <> Неопределено Тогда
            ВызватьИсключение "Удаление собственного образца не подтверждено";
        КонецЕсли;
        НужнаОчистка = Ложь;
        Отчёт = "Цикл подтверждён: до опыта собственного DER не было, добавление подтверждено, после удаления его снова нет. Доверие и закрытые ключи не менялись.";
    Исключение
        Отчёт = "Основной опыт не подтверждён.";
        Если НужнаОчистка Тогда
            Попытка
                Кандидаты = Ждать Хранилище.ПолучитьВсеАсинх();
                СвойСертификат = НайтиТочныйСвойОбразец(Кандидаты, Образец);
                Если СвойСертификат <> Неопределено Тогда
                    РезультатОчистки = Ждать Хранилище.УдалитьАсинх(СвойСертификат);
                    Если РезультатОчистки <> Неопределено Тогда
                        ВызватьИсключение "Очистка вернула неожиданный результат";
                    КонецЕсли;
                КонецЕсли;
                Кандидаты = Ждать Хранилище.ПолучитьВсеАсинх();
                Если НайтиТочныйСвойОбразец(Кандидаты, Образец) <> Неопределено Тогда
                    ВызватьИсключение "Отсутствие после отдельной очистки не подтверждено";
                КонецЕсли;
                НужнаОчистка = Ложь;
                Отчёт = Отчёт + " Отдельная очистка подтвердила отсутствие собственного образца.";
            Исключение
                Отчёт = Отчёт + " ОЧИСТКА НЕ ПОДТВЕРЖДЕНА. Проверьте только свой Syntax Guide Training Only в Личном своего отдельного учебного пользователя; не удаляйте чужие сертификаты.";
            КонецПопытки;
        Иначе
            Отчёт = Отчёт + " Импорт не был начат; уже существовавшие сертификаты не удалялись.";
        КонецЕсли;
    КонецПопытки;
    Занято = Ложь;
КонецПроцедуры

&НаКлиенте
Процедура ПроверитьУчебнуюПлатформу()
    Система = Новый СистемнаяИнформация;
    Если Система.ТипПлатформы <> ТипПлатформы.Windows_x86
        И Система.ТипПлатформы <> ТипПлатформы.Windows_x86_64 Тогда
        ВызватьИсключение "Этот пример использует Windows CryptoAPI";
    КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПроверитьОтдельныйСтенд()
    ПроверитьУчебнуюПлатформу();
    Если НЕ ПодтверждаюОтдельныйСтенд Тогда
        ВызватьИсключение "Сначала подтвердите свою отдельную учебную учётную запись Windows";
    КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПроверитьСвоёХранилище(Хранилище)
    Если ТипЗнч(Хранилище) <> Тип("ХранилищеСертификатовКриптографии") Тогда
        ВызватьИсключение "Ожидалось собственное хранилище заданной области";
    КонецЕсли;
КонецПроцедуры

&НаКлиенте
Функция ПолучитьСвойПубличныйОбразец()
    Данные = Base64Значение("MIIC+jCCAeKgAwIBAgIBVTANBgkqhkiG9w0BAQsFADAlMSMwIQYDVQQDDBpTeW50YXggR3VpZGUgVHJhaW5pbmcgT25seTAeFw0yMDAxMDEwMDAwMDBaFw0zNTEyMzEwMDAwMDBaMCUxIzAhBgNVBAMMGlN5bnRheCBHdWlkZSBUcmFpbmluZyBPbmx5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkraGtF6mSMHQWI0lIdDxzNjLTB0VHmtLUYEIxXFFJepQtyMGWZ9rfpbTglFp8wpsw+Wc09FQyDFuKsNz3cBcBBx7fTmJVuYzfrXjhDECNqEoKMEf+Qrim3WsVKA/Qr8IMnzq1qdnA1pLgaaKyscfCJkw9W1yoTlLV3PmGs6h6gP1/KXwe+zKN5r3Jl0IVk8RXTLAeyqN01lCuyzaeSYm/v2YS88LdaJ/nkdFqy5QjRXfm7EOCW7eCZlCBwW0EvGhUarZxWlq04lPs9qu3aC3/6gY/scE2vY1jeZV2VpV0lLQpU5gVdjVGI4YQmfgkb8jYtV5U7FQ1KQ6Poji/ort6wIDAQABozUwMzAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUEDDAKBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOCAQEARoo1FJJKKkaZXyFl1tlYj8K7xvryXwhb+tCaFvdXuON27YC3/YIHLUT9sCF9o76VIT8dsVMpK0Qo+VV0FIvqRcB+u6SmyJ+Y7590mzd5P1CSt8Y/4BNV2LosYxhcdVczs26PWHL5GXyBMWRxtBjNsnTeMKh4/WIMrplAr0IOJCmjIeKhv0JbQacsNqhmpe7JdgtBYC4Rrn3ajdD99HZREmyLR/iJrh6W4IGqSN0MGT0xL/mLI0GsTp9JhHDF3o8bmC1yMDlLOoAZp7M072bzfDsKFPg4ATQp/hhbtsTdS/LXrd9cLehZ7ThH6ljL8y2JbALD+6HPnT6Sv+Mg0Wq0MA==");
    Образец = Новый СертификатКриптографии(Данные);
    Если Base64Строка(Образец.Отпечаток) <> "tRDNiwoaiFssHhQqwyjWVlPLdns=" Тогда
        ВызватьИсключение "Встроенный публичный образец не совпадает с ожидаемыми DER-данными";
    КонецЕсли;
    Возврат Образец;
КонецФункции

&НаКлиенте
Функция НайтиТочныйСвойОбразец(Кандидаты, Образец)
    Если ТипЗнч(Кандидаты) <> Тип("Массив") Тогда
        ВызватьИсключение "Ожидался массив сертификатов выбранной области";
    КонецЕсли;
    СвойСертификат = Неопределено;
    Для Каждого Кандидат Из Кандидаты Цикл
        Если ТипЗнч(Кандидат) <> Тип("СертификатКриптографии") Тогда
            ВызватьИсключение "В массиве ожидался сертификат";
        КонецЕсли;
        Если Base64Строка(Кандидат.Отпечаток) <> Base64Строка(Образец.Отпечаток) Тогда
            Продолжить;
        КонецЕсли;
        ДанныеКандидата = Кандидат.Выгрузить();
        Если ТипЗнч(ДанныеКандидата) <> Тип("ДвоичныеДанные") Тогда
            ВызватьИсключение "Публичная выгрузка должна вернуть DER-байты";
        КонецЕсли;
        Если Base64Строка(ДанныеКандидата) <> "MIIC+jCCAeKgAwIBAgIBVTANBgkqhkiG9w0BAQsFADAlMSMwIQYDVQQDDBpTeW50YXggR3VpZGUgVHJhaW5pbmcgT25seTAeFw0yMDAxMDEwMDAwMDBaFw0zNTEyMzEwMDAwMDBaMCUxIzAhBgNVBAMMGlN5bnRheCBHdWlkZSBUcmFpbmluZyBPbmx5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkraGtF6mSMHQWI0lIdDxzNjLTB0VHmtLUYEIxXFFJepQtyMGWZ9rfpbTglFp8wpsw+Wc09FQyDFuKsNz3cBcBBx7fTmJVuYzfrXjhDECNqEoKMEf+Qrim3WsVKA/Qr8IMnzq1qdnA1pLgaaKyscfCJkw9W1yoTlLV3PmGs6h6gP1/KXwe+zKN5r3Jl0IVk8RXTLAeyqN01lCuyzaeSYm/v2YS88LdaJ/nkdFqy5QjRXfm7EOCW7eCZlCBwW0EvGhUarZxWlq04lPs9qu3aC3/6gY/scE2vY1jeZV2VpV0lLQpU5gVdjVGI4YQmfgkb8jYtV5U7FQ1KQ6Poji/ort6wIDAQABozUwMzAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUEDDAKBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOCAQEARoo1FJJKKkaZXyFl1tlYj8K7xvryXwhb+tCaFvdXuON27YC3/YIHLUT9sCF9o76VIT8dsVMpK0Qo+VV0FIvqRcB+u6SmyJ+Y7590mzd5P1CSt8Y/4BNV2LosYxhcdVczs26PWHL5GXyBMWRxtBjNsnTeMKh4/WIMrplAr0IOJCmjIeKhv0JbQacsNqhmpe7JdgtBYC4Rrn3ajdD99HZREmyLR/iJrh6W4IGqSN0MGT0xL/mLI0GsTp9JhHDF3o8bmC1yMDlLOoAZp7M072bzfDsKFPg4ATQp/hhbtsTdS/LXrd9cLehZ7ThH6ljL8y2JbALD+6HPnT6Sv+Mg0Wq0MA==" Тогда
            ВызватьИсключение "Совпадение отпечатка без совпадения собственного DER не разрешает удаление";
        КонецЕсли;
        Если СвойСертификат <> Неопределено Тогда
            ВызватьИсключение "Несколько точных совпадений: автоматическое удаление запрещено";
        КонецЕсли;
        СвойСертификат = Кандидат;
    КонецЦикла;
    Возврат СвойСертификат;
КонецФункции

Разбор по шагам

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

  2. Инициализировать своего менеджера по подтверждённым имени провайдера и типу 24; получить только Личное текущего пользователя ОС.

  3. Прочитать выбранную область и подтвердить отсутствие точного DER-образца. Если он существовал заранее, остановиться без импорта и удаления.

  4. Установить НужнаОчистка до попытки импорта, а не после её успеха. Добавить только свой публичный Образец.

  5. Повторным чтением найти единственный точный публичный DER; отсутствие после добавления и несколько совпадений считать неподтверждённым результатом.

  6. Удалить найденный объект сертификата, а не строку CN/отпечатка и не случайный первый элемент массива.

  7. Новым чтением подтвердить отсутствие, только затем снять НужнаОчистка и вывести окончательный успех.

  8. При ошибке после намерения импорта один раз отдельно проверить/убрать только собственный добавленный образец. Если очистка не подтверждена, сообщить об этом прямо; не выдавать основной опыт за успешный.

  9. Один общий Попытка содержит проверки до/после изменения. В обработчике ошибки очистка находится в отдельном Попытка и не маскирует отсутствие подтверждения.

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

  11. Ждать используется внутри Асинх Процедура. Результаты ДобавитьАсинх/УдалитьАсинх сравниваются с Неопределено, не с Истина; после каждого обещания состояние хранилища читается заново.

Как проверить результат

  1. На чистом собственном стенде финальный отчёт подтверждает весь цикл только после последнего чтения. Личное не содержит учебный образец после окончания.

  2. Если образец установили заранее вручную, импорт/удаление запрещены; сертификат остаётся на месте. Это обязательный отрицательный опыт, а не повод удалить его автоматически.

  3. Отсутствие после добавления, несколько точных совпадений и неверный тип останавливают основной опыт; автоматическое удаление неоднозначных совпадений не выполняется.

  4. При ошибке очистки видно ОЧИСТКА НЕ ПОДТВЕРЖДЕНА; основной опыт не объявлен успешным. Ручная проверка относится только к своему образцу на своём стенде.

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

Ожидаемый результат

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

На что обратить внимание

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

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

  3. У синхронных Добавить/Удалить нет результата Булево. У обещаний результат Неопределено; у callback добавления/удаления только один аргумент Состояние. Подтверждение изменения получают новым чтением.

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

  5. Очистка собственного образца — отдельная операция с ОС, не ОтменитьТранзакцию. Автоматически убрать результат после аварийного закрытия клиента этот модуль не обещает.

  6. Если точный образец неожиданно встречается несколько раз, код не выбирает первый наугад и не удаляет все совпадения. Требуется разбор своего изолированного стенда.

  7. Не переносите Windows-клиентский урок в веб-/мобильный клиент: там инициализация, расширения и ограничения удаления отличаются. Мобильное ограничение удаления истёкших персональных сертификатов не является правилом этого Windows-опыта.

  8. Установка публичного самоподписанного сертификата в Личное не делает его доверенным, не создаёт закрытый ключ и не разрешает реальную подпись документов.

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

Инициализировать собственный менеджер через Ждать перед чтением его информации

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

Где и как запускать

Полный модуль управляемой формы своей пустой учебной конфигурации; Windows тонкий/толстый клиент 8.5.1.1343, только чтение сведений своего CryptoAPI-провайдера. Здесь в 1С не запускался.

Подготовка

  1. Создайте отдельную пустую учебную конфигурацию УчебнаяКонфигурацияСинтаксиса. Запускайте пример в её Windows-клиенте 1С 8.5.1.1343, не в рабочей базе и не под сервисной учётной записью чужого сервера.

  2. Создайте свою учебную обработку с управляемой формой. Реквизиты: Занято — Булево, начально Ложь; Отчёт — Строка длиной 0. Поле Отчёт многострочное, только для просмотра. Команду ПолучитьУчебнуюИнформацию свяжите с одноимённым клиентским обработчиком.

  3. Вставьте весь модуль выбранного урока, включая ПроверитьУчебнуюПлатформу и СформироватьУчебныйОтчёт. Обработчики оповещений, если есть, должны оставаться экспортными клиентскими процедурами.

  4. Используется стандартный Microsoft Enhanced RSA and AES Cryptographic Provider, тип 24. Его наличие и Type=24 подтверждены чтением конкретной записи Windows Defaults/Provider при подготовке справочника. Это не доказательство успешной загрузки провайдера платформой 1С на любой другой машине.

  5. На своём Windows-стенде проверьте фактическое наличие этой записи и тип у своего администратора. Если провайдер отсутствует/не поддерживается, СредстваКриптографии возвращает Неопределено, а создание инициализированного менеджера может дать ошибку. Не подставляйте наугад число типа или чужой DLL-путь.

  6. ПутьМодуляКриптографии здесь пуст: в Windows используется имя провайдера. Не переносите этот опыт на Linux/macOS, где библиотека и способ выбора отличаются.

  7. В веб-клиенте поддержка зависит от расширения и синхронного/асинхронного режима. Этот набор намеренно ограничен Windows тонким/толстым клиентом и не обещает работу в браузере или мобильном приложении.

  8. Включать пароль/PIN закрытого ключа не нужно. Сертификаты и ключевые контейнеры не открываются, хранилища ОС не меняются, криптографическая подпись и шифрование не выполняются.

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

  10. Все отчёты формируются в памяти своей формы. Нет файла, HTTP, OCSP/CRL, сервера меток времени или установки расширения.

  11. Для синхронного урока в конфигурации разрешите соответствующий режим синхронных вызовов. Асинхронный урок с Ждать выполняется только в Асинх Процедура; оповещения нельзя считать завершившимися сразу после Начать… .

  12. Здесь криптографические методы в 1С не запускались. Проверены исходники и точные сигнатуры установленной справки; наличие провайдера в реестре не является runtimeVerifiedScenarios.

&НаКлиенте
Асинх Процедура ПолучитьУчебнуюИнформацию(Команда)
    Если Занято Тогда
        Возврат;
    КонецЕсли;
    Занято = Истина;
    Попытка
        ПроверитьУчебнуюПлатформу();
        Менеджер = Новый МенеджерКриптографии(ИспользованиеИнтерактивногоРежимаКриптографии.НеИспользовать);
        Менеджер = Ждать Менеджер.ИнициализироватьАсинх("Microsoft Enhanced RSA and AES Cryptographic Provider", "", 24, ИспользованиеИнтерактивногоРежимаКриптографии.НеИспользовать);
        Если ТипЗнч(Менеджер) <> Тип("МенеджерКриптографии") Тогда
            ВызватьИсключение "Инициализация не вернула менеджер";
        КонецЕсли;
        Информация = Ждать Менеджер.ПолучитьИнформациюМодуляКриптографииАсинх();
        Отчёт = СформироватьУчебныйОтчёт(Информация);
    Исключение
        Отчёт = "Информация не получена. Проверьте собственную Windows-платформу, установленный провайдер и допустимый режим вызова; это не успешная инициализация.";
    КонецПопытки;
    Занято = Ложь;
КонецПроцедуры

&НаКлиенте
Процедура ПроверитьУчебнуюПлатформу()
    Система = Новый СистемнаяИнформация;
    Если Система.ТипПлатформы <> ТипПлатформы.Windows_x86
        И Система.ТипПлатформы <> ТипПлатформы.Windows_x86_64 Тогда
        ВызватьИсключение "Этот пример использует Windows CryptoAPI";
    КонецЕсли;
КонецПроцедуры

&НаКлиенте
Функция СформироватьУчебныйОтчёт(Информация)
    Если Информация = Неопределено Тогда
        Возврат "Указанный провайдер не найден или не поддерживается. Это не успешная инициализация криптографии.";
    КонецЕсли;
    Если ТипЗнч(Информация) <> Тип("ИнформацияМодуляКриптографии") Тогда
        ВызватьИсключение "Ожидалась информация модуля криптографии";
    КонецЕсли;
    Строки = Новый Массив;
    Строки.Добавить("Фактическое имя: " + Информация.Имя);
    Строки.Добавить("Фактический числовой тип: " + Строка(Информация.ТипМодуляКриптографии));
    Строки.Добавить("Алгоритмы подписи: " + Строка(Информация.АлгоритмыПодписи.Количество()));
    Для Каждого Алгоритм Из Информация.АлгоритмыПодписи Цикл
        Строки.Добавить("  Подпись: " + Алгоритм);
    КонецЦикла;
    Строки.Добавить("Алгоритмы хеширования: " + Строка(Информация.АлгоритмыХеширования.Количество()));
    Для Каждого Алгоритм Из Информация.АлгоритмыХеширования Цикл
        Строки.Добавить("  Хеширование: " + Алгоритм);
    КонецЦикла;
    Строки.Добавить("Алгоритмы шифрования: " + Строка(Информация.АлгоритмыШифрования.Количество()));
    Для Каждого Алгоритм Из Информация.АлгоритмыШифрования Цикл
        Строки.Добавить("  Шифрование: " + Алгоритм);
    КонецЦикла;
    Возврат СтрСоединить(Строки, Символы.ПС);
КонецФункции

Разбор по шагам

  1. Проверить собственную конфигурацию, Windows-контекст до обращения к провайдеру.

  2. Использовать действительные имя провайдера и тип 24; пустая строка пути относится к Windows-опыту, а не к отсутствующей Linux-библиотеке.

  3. Отличить Неопределено от полученной ИнформацияМодуляКриптографии до доступа к её полям.

  4. Показать фактическое имя и числовой тип отдельно от трёх неизменяемых массивов поддерживаемых алгоритмов.

  5. Перечислить фактические строки алгоритмов без фиктивного SHA/GOST и без присваивания readonly-коллекциям.

  6. Флаг Занято запрещает повторный запуск; после результата или ошибки он снимается. Ничего не сохранено на диск.

  7. Конструктор с режимом не является инициализацией провайдера. Две метки в справке не объявляем двумя разными успешно загруженными объектами.

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

  9. Результат обещания инициализации — МенеджерКриптографии. Проверить его и только потом ждать информацию этого менеджера.

Как проверить результат

  1. Порядок: создать без модуля → дождаться инициализации → дождаться информации → показать отчёт.

  2. Информация не читается до успешной инициализации. Неопределено/ошибка не выдается за готовый менеджер.

  3. Флаг Занято снят при любом исходе общего блока.

Ожидаемый результат

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

На что обратить внимание

  1. Имя провайдера, путь библиотеки и числовой тип — разные параметры. Тип 24 выбран по фактической Windows-регистрации, не по порядковому номеру списка алгоритмов.

  2. Сведения СредстваКриптографии не создают и не инициализируют МенеджерКриптографии автоматически.

  3. Список поддерживаемых алгоритмов и три выбранных алгоритма менеджера — разные сведения. Нельзя считать пустое поле выбранным первым алгоритмом списка.

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

  5. Ни один пример здесь не вводит PIN/пароль, не подписывает, не шифрует и не обращается к серверу меток времени.

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

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.