Содержит информацию о модуле криптографии.
Полное описание, параметры и ограничения
ИнформацияМодуляКриптографии (CryptoModuleInformation)
ИнформацияМодуляКриптографии (CryptoModuleInformation)
Доступен, начиная с версии 8.2.
Свойства:
АлгоритмыПодписи (SignAlgorithms)
АлгоритмыХеширования (HashAlgorithms)
АлгоритмыШифрования (EncryptAlgorithms)
Имя (Name)
ТипМодуляКриптографии (CryptoModuleType)
Описание:
Содержит информацию о модуле криптографии.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.2.
Описание изменено в версии 8.3.24.
Методическая информация
Практические примеры
Инициализировать собственный менеджер через Ждать перед чтением его информации
В установленной справке две метки конструктора имеют одинаковый синтаксис с интерактивным режимом и не загружают модуль. Поэтому сначала ждём инициализацию, затем сведения.
Где и как запускать
Полный модуль управляемой формы своей пустой учебной конфигурации; Windows тонкий/толстый клиент 8.5.1.1343, только чтение сведений своего CryptoAPI-провайдера. Здесь в 1С не запускался.
Подготовка
Создайте отдельную пустую учебную конфигурацию УчебнаяКонфигурацияСинтаксиса. Запускайте пример в её Windows-клиенте 1С 8.5.1.1343, не в рабочей базе и не под сервисной учётной записью чужого сервера.
Создайте свою учебную обработку с управляемой формой. Реквизиты: Занято — Булево, начально Ложь; Отчёт — Строка длиной 0. Поле Отчёт многострочное, только для просмотра. Команду ПолучитьУчебнуюИнформацию свяжите с одноимённым клиентским обработчиком.
Вставьте весь модуль выбранного урока, включая ПроверитьУчебнуюПлатформу и СформироватьУчебныйОтчёт. Обработчики оповещений, если есть, должны оставаться экспортными клиентскими процедурами.
Используется стандартный Microsoft Enhanced RSA and AES Cryptographic Provider, тип 24. Его наличие и Type=24 подтверждены чтением конкретной записи Windows Defaults/Provider при подготовке справочника. Это не доказательство успешной загрузки провайдера платформой 1С на любой другой машине.
На своём Windows-стенде проверьте фактическое наличие этой записи и тип у своего администратора. Если провайдер отсутствует/не поддерживается, СредстваКриптографии возвращает Неопределено, а создание инициализированного менеджера может дать ошибку. Не подставляйте наугад число типа или чужой DLL-путь.
ПутьМодуляКриптографии здесь пуст: в Windows используется имя провайдера. Не переносите этот опыт на Linux/macOS, где библиотека и способ выбора отличаются.
В веб-клиенте поддержка зависит от расширения и синхронного/асинхронного режима. Этот набор намеренно ограничен Windows тонким/толстым клиентом и не обещает работу в браузере или мобильном приложении.
Включать пароль/PIN закрытого ключа не нужно. Сертификаты и ключевые контейнеры не открываются, хранилища ОС не меняются, криптографическая подпись и шифрование не выполняются.
Полученные названия алгоритмов — сведения провайдера, а не юридическая или техническая рекомендация применять конкретный алгоритм. Пустой список или незаполненный выбранный алгоритм показывается как фактическое состояние.
Все отчёты формируются в памяти своей формы. Нет файла, HTTP, OCSP/CRL, сервера меток времени или установки расширения.
Для синхронного урока в конфигурации разрешите соответствующий режим синхронных вызовов. Асинхронный урок с Ждать выполняется только в Асинх Процедура; оповещения нельзя считать завершившимися сразу после Начать… .
Здесь криптографические методы в 1С не запускались. Проверены исходники и точные сигнатуры установленной справки; наличие провайдера в реестре не является runtimeVerifiedScenarios.
&НаКлиенте
Асинх Процедура ПолучитьУчебнуюИнформацию(Команда)
Если Занято Тогда
Возврат;
КонецЕсли;
Занято = Истина;
Попытка
ПроверитьУчебнуюПлатформу();
Менеджер = Новый МенеджерКриптографии(ИспользованиеИнтерактивногоРежимаКриптографии.НеИспользовать);
Менеджер = Ждать Менеджер.ИнициализироватьАсинх("Microsoft Enhanced RSA and AES Cryptographic Provider", "", 24, ИспользованиеИнтерактивногоРежимаКриптографии.НеИспользовать);
Если ТипЗнч(Менеджер) <> Тип("МенеджерКриптографии") Тогда
ВызватьИсключение "Инициализация не вернула менеджер";
КонецЕсли;
Информация = Ждать Менеджер.ПолучитьИнформациюМодуляКриптографииАсинх();
Отчёт = СформироватьУчебныйОтчёт(Информация);
Исключение
Отчёт = "Информация не получена. Проверьте собственную Windows-платформу, установленный провайдер и допустимый режим вызова; это не успешная инициализация.";
КонецПопытки;
Занято = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьУчебнуюПлатформу()
Система = Новый СистемнаяИнформация;
Если Система.ТипПлатформы <> ТипПлатформы.Windows_x86
И Система.ТипПлатформы <> ТипПлатформы.Windows_x86_64 Тогда
ВызватьИсключение "Этот пример использует Windows CryptoAPI";
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция СформироватьУчебныйОтчёт(Информация)
Если Информация = Неопределено Тогда
Возврат "Указанный провайдер не найден или не поддерживается. Это не успешная инициализация криптографии.";
КонецЕсли;
Если ТипЗнч(Информация) <> Тип("ИнформацияМодуляКриптографии") Тогда
ВызватьИсключение "Ожидалась информация модуля криптографии";
КонецЕсли;
Строки = Новый Массив;
Строки.Добавить("Фактическое имя: " + Информация.Имя);
Строки.Добавить("Фактический числовой тип: " + Строка(Информация.ТипМодуляКриптографии));
Строки.Добавить("Алгоритмы подписи: " + Строка(Информация.АлгоритмыПодписи.Количество()));
Для Каждого Алгоритм Из Информация.АлгоритмыПодписи Цикл
Строки.Добавить(" Подпись: " + Алгоритм);
КонецЦикла;
Строки.Добавить("Алгоритмы хеширования: " + Строка(Информация.АлгоритмыХеширования.Количество()));
Для Каждого Алгоритм Из Информация.АлгоритмыХеширования Цикл
Строки.Добавить(" Хеширование: " + Алгоритм);
КонецЦикла;
Строки.Добавить("Алгоритмы шифрования: " + Строка(Информация.АлгоритмыШифрования.Количество()));
Для Каждого Алгоритм Из Информация.АлгоритмыШифрования Цикл
Строки.Добавить(" Шифрование: " + Алгоритм);
КонецЦикла;
Возврат СтрСоединить(Строки, Символы.ПС);
КонецФункции
Разбор по шагам
Проверить собственную конфигурацию, Windows-контекст до обращения к провайдеру.
Использовать действительные имя провайдера и тип 24; пустая строка пути относится к Windows-опыту, а не к отсутствующей Linux-библиотеке.
Отличить Неопределено от полученной ИнформацияМодуляКриптографии до доступа к её полям.
Показать фактическое имя и числовой тип отдельно от трёх неизменяемых массивов поддерживаемых алгоритмов.
Перечислить фактические строки алгоритмов без фиктивного SHA/GOST и без присваивания readonly-коллекциям.
Флаг Занято запрещает повторный запуск; после результата или ошибки он снимается. Ничего не сохранено на диск.
Конструктор с режимом не является инициализацией провайдера. Две метки в справке не объявляем двумя разными успешно загруженными объектами.
Использовать провайдерную перегрузку ИнициализироватьАсинх с четырьмя аргументами, отличную от перегрузки только с режимом.
Результат обещания инициализации — МенеджерКриптографии. Проверить его и только потом ждать информацию этого менеджера.
Как проверить результат
Порядок: создать без модуля → дождаться инициализации → дождаться информации → показать отчёт.
Информация не читается до успешной инициализации. Неопределено/ошибка не выдается за готовый менеджер.
Флаг Занято снят при любом исходе общего блока.
Ожидаемый результат
Полная последовательность асинхронной инициализации и чтения сведений с конкретным установленным провайдером.
На что обратить внимание
Имя провайдера, путь библиотеки и числовой тип — разные параметры. Тип 24 выбран по фактической Windows-регистрации, не по порядковому номеру списка алгоритмов.
Сведения СредстваКриптографии не создают и не инициализируют МенеджерКриптографии автоматически.
Список поддерживаемых алгоритмов и три выбранных алгоритма менеджера — разные сведения. Нельзя считать пустое поле выбранным первым алгоритмом списка.
Разбор сведений не доказывает доступность закрытого ключа, доверие сертификату, пригодность для электронной подписи или соответствие требованиям организации.
Ни один пример здесь не вводит PIN/пароль, не подписывает, не шифрует и не обращается к серверу меток времени.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Связать два оповещения: инициализацию менеджера и получение его сведений
Первый callback возвращает МенеджерКриптографии, второй — ИнформацияМодуляКриптографии. Собственный объект сохраняется в состоянии до окончания цепочки.
Где и как запускать
Полный модуль управляемой формы своей пустой учебной конфигурации; Windows тонкий/толстый клиент 8.5.1.1343, только чтение сведений своего CryptoAPI-провайдера. Здесь в 1С не запускался.
Подготовка
Создайте отдельную пустую учебную конфигурацию УчебнаяКонфигурацияСинтаксиса. Запускайте пример в её Windows-клиенте 1С 8.5.1.1343, не в рабочей базе и не под сервисной учётной записью чужого сервера.
Создайте свою учебную обработку с управляемой формой. Реквизиты: Занято — Булево, начально Ложь; Отчёт — Строка длиной 0. Поле Отчёт многострочное, только для просмотра. Команду ПолучитьУчебнуюИнформацию свяжите с одноимённым клиентским обработчиком.
Вставьте весь модуль выбранного урока, включая ПроверитьУчебнуюПлатформу и СформироватьУчебныйОтчёт. Обработчики оповещений, если есть, должны оставаться экспортными клиентскими процедурами.
Используется стандартный Microsoft Enhanced RSA and AES Cryptographic Provider, тип 24. Его наличие и Type=24 подтверждены чтением конкретной записи Windows Defaults/Provider при подготовке справочника. Это не доказательство успешной загрузки провайдера платформой 1С на любой другой машине.
На своём Windows-стенде проверьте фактическое наличие этой записи и тип у своего администратора. Если провайдер отсутствует/не поддерживается, СредстваКриптографии возвращает Неопределено, а создание инициализированного менеджера может дать ошибку. Не подставляйте наугад число типа или чужой DLL-путь.
ПутьМодуляКриптографии здесь пуст: в Windows используется имя провайдера. Не переносите этот опыт на Linux/macOS, где библиотека и способ выбора отличаются.
В веб-клиенте поддержка зависит от расширения и синхронного/асинхронного режима. Этот набор намеренно ограничен Windows тонким/толстым клиентом и не обещает работу в браузере или мобильном приложении.
Включать пароль/PIN закрытого ключа не нужно. Сертификаты и ключевые контейнеры не открываются, хранилища ОС не меняются, криптографическая подпись и шифрование не выполняются.
Полученные названия алгоритмов — сведения провайдера, а не юридическая или техническая рекомендация применять конкретный алгоритм. Пустой список или незаполненный выбранный алгоритм показывается как фактическое состояние.
Все отчёты формируются в памяти своей формы. Нет файла, HTTP, OCSP/CRL, сервера меток времени или установки расширения.
Для синхронного урока в конфигурации разрешите соответствующий режим синхронных вызовов. Асинхронный урок с Ждать выполняется только в Асинх Процедура; оповещения нельзя считать завершившимися сразу после Начать… .
Здесь криптографические методы в 1С не запускались. Проверены исходники и точные сигнатуры установленной справки; наличие провайдера в реестре не является runtimeVerifiedScenarios.
&НаКлиенте
Процедура ПолучитьУчебнуюИнформацию(Команда)
Если Занято Тогда
Возврат;
КонецЕсли;
Занято = Истина;
Попытка
ПроверитьУчебнуюПлатформу();
Менеджер = Новый МенеджерКриптографии(ИспользованиеИнтерактивногоРежимаКриптографии.НеИспользовать);
Состояние = Новый Структура("Менеджер", Менеджер);
Оповещение = Новый ОписаниеОповещения("ПослеУчебнойИнициализации", ЭтотОбъект, Состояние, "ОшибкаМенеджера", ЭтотОбъект);
Менеджер.НачатьИнициализацию(Оповещение, "Microsoft Enhanced RSA and AES Cryptographic Provider", "", 24, ИспользованиеИнтерактивногоРежимаКриптографии.НеИспользовать);
Исключение
Занято = Ложь;
Отчёт = "Инициализация своего провайдера не начата";
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура ПослеУчебнойИнициализации(ИнициализированныйМенеджер, Состояние) Экспорт
Попытка
Если ТипЗнч(ИнициализированныйМенеджер) <> Тип("МенеджерКриптографии") Тогда
ВызватьИсключение "Оповещение должно вернуть менеджер";
КонецЕсли;
Состояние.Менеджер = ИнициализированныйМенеджер;
Оповещение = Новый ОписаниеОповещения("ПослеИнформацииМенеджера", ЭтотОбъект, Состояние, "ОшибкаМенеджера", ЭтотОбъект);
Состояние.Менеджер.НачатьПолучениеИнформацииМодуляКриптографии(Оповещение);
Исключение
Занято = Ложь;
Отчёт = "Инициализация или начало чтения своего менеджера не подтверждены";
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура ПослеИнформацииМенеджера(Информация, Состояние) Экспорт
Попытка
Отчёт = СформироватьУчебныйОтчёт(Информация) + Символы.ПС + ПоказатьПараметрыСвоегоМенеджера(Состояние.Менеджер);
Исключение
Отчёт = "Сведения собственного менеджера не обработаны";
КонецПопытки;
Занято = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ОшибкаМенеджера(Ошибка, СтандартнаяОбработка, Состояние) Экспорт
Занято = Ложь;
Отчёт = "Операция своего менеджера завершилась ошибкой; успешного результата нет";
СтандартнаяОбработка = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьУчебнуюПлатформу()
Система = Новый СистемнаяИнформация;
Если Система.ТипПлатформы <> ТипПлатформы.Windows_x86
И Система.ТипПлатформы <> ТипПлатформы.Windows_x86_64 Тогда
ВызватьИсключение "Этот пример использует Windows CryptoAPI";
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция СформироватьУчебныйОтчёт(Информация)
Если Информация = Неопределено Тогда
Возврат "Указанный провайдер не найден или не поддерживается. Это не успешная инициализация криптографии.";
КонецЕсли;
Если ТипЗнч(Информация) <> Тип("ИнформацияМодуляКриптографии") Тогда
ВызватьИсключение "Ожидалась информация модуля криптографии";
КонецЕсли;
Строки = Новый Массив;
Строки.Добавить("Фактическое имя: " + Информация.Имя);
Строки.Добавить("Фактический числовой тип: " + Строка(Информация.ТипМодуляКриптографии));
Строки.Добавить("Алгоритмы подписи: " + Строка(Информация.АлгоритмыПодписи.Количество()));
Для Каждого Алгоритм Из Информация.АлгоритмыПодписи Цикл
Строки.Добавить(" Подпись: " + Алгоритм);
КонецЦикла;
Строки.Добавить("Алгоритмы хеширования: " + Строка(Информация.АлгоритмыХеширования.Количество()));
Для Каждого Алгоритм Из Информация.АлгоритмыХеширования Цикл
Строки.Добавить(" Хеширование: " + Алгоритм);
КонецЦикла;
Строки.Добавить("Алгоритмы шифрования: " + Строка(Информация.АлгоритмыШифрования.Количество()));
Для Каждого Алгоритм Из Информация.АлгоритмыШифрования Цикл
Строки.Добавить(" Шифрование: " + Алгоритм);
КонецЦикла;
Возврат СтрСоединить(Строки, Символы.ПС);
КонецФункции
&НаКлиенте
Функция ПоказатьПараметрыСвоегоМенеджера(Менеджер)
Если ТипЗнч(Менеджер) <> Тип("МенеджерКриптографии") Тогда
ВызватьИсключение "Ожидался собственный инициализированный менеджер";
КонецЕсли;
Строки = Новый Массив;
Строки.Добавить("Выбранный алгоритм подписи: " + Менеджер.АлгоритмПодписи);
Строки.Добавить("Выбранный алгоритм хеширования: " + Менеджер.АлгоритмХеширования);
Строки.Добавить("Выбранный алгоритм шифрования: " + Менеджер.АлгоритмШифрования);
Строки.Добавить("Включать данные в будущую подпись: " + Строка(Менеджер.ВключениеДанныхВПодпись));
Строки.Добавить("Режим включения сертификатов: " + Строка(Менеджер.ВключениеСертификатовВПодпись));
Строки.Добавить("Интерактивный режим: " + Строка(Менеджер.ИспользованиеИнтерактивногоРежима));
Строки.Добавить("Адресов TSA в параметрах: " + Строка(Менеджер.АдресаСерверовМетокВремени.Количество()));
Для Каждого Адрес Из Менеджер.АдресаСерверовМетокВремени Цикл
Строки.Добавить(" Только текст адреса TSA: " + Адрес);
КонецЦикла;
Для Каждого Связь Из Менеджер.ОпределениеАлгоритмаХеширования Цикл
Строки.Добавить("Ключевой OID для хеширования: " + Связь.Ключ);
Для Каждого OID Из Связь.Значение Цикл
Строки.Добавить(" Приоритетный OID хеширования: " + OID);
КонецЦикла;
КонецЦикла;
Для Каждого Связь Из Менеджер.ОпределениеАлгоритмаШифрования Цикл
Строки.Добавить("Ключевой OID для шифрования: " + Связь.Ключ);
Для Каждого OID Из Связь.Значение Цикл
Строки.Добавить(" Приоритетный OID шифрования: " + OID);
КонецЦикла;
КонецЦикла;
Возврат СтрСоединить(Строки, Символы.ПС);
КонецФункции
Разбор по шагам
Проверить собственную конфигурацию, Windows-контекст до обращения к провайдеру.
Использовать действительные имя провайдера и тип 24; пустая строка пути относится к Windows-опыту, а не к отсутствующей Linux-библиотеке.
Отличить Неопределено от полученной ИнформацияМодуляКриптографии до доступа к её полям.
Показать фактическое имя и числовой тип отдельно от трёх неизменяемых массивов поддерживаемых алгоритмов.
Перечислить фактические строки алгоритмов без фиктивного SHA/GOST и без присваивания readonly-коллекциям.
Флаг Занято запрещает повторный запуск; после результата или ошибки он снимается. Ничего не сохранено на диск.
Создать менеджер без загрузки модуля и удержать его в собственной структуре Состояние, переданной через ДополнительныеПараметры.
НачатьИнициализацию получает оповещение и провайдерные параметры. В ПослеУчебнойИнициализации первым аргументом приходит инициализированный менеджер.
Только после проверки первого результата начать получение информации через возвращённый менеджер.
В ПослеИнформацииМенеджера обработать информацию и параметры сохранённого менеджера. Занято не снимается между двумя этапами.
Ошибка начала или следующего этапа снимает флаг и не выдаёт успешный результат; стандартная обработка асинхронной ошибки остаётся включённой.
Как проверить результат
Два экспортных callback имеют документированные первые аргументы и структуру состояния вторым.
Объект удерживается в Состояние до завершения получения информации. Нет чтения модуля сразу после НачатьИнициализацию.
Флаг снимается только после окончания цепочки/ошибки; сертификаты, ключи и TSP не используются.
Ожидаемый результат
Полный двухэтапный callback-модуль с корректной жизнью собственного менеджера и обработкой ошибок.
На что обратить внимание
Имя провайдера, путь библиотеки и числовой тип — разные параметры. Тип 24 выбран по фактической Windows-регистрации, не по порядковому номеру списка алгоритмов.
Сведения СредстваКриптографии не создают и не инициализируют МенеджерКриптографии автоматически.
Список поддерживаемых алгоритмов и три выбранных алгоритма менеджера — разные сведения. Нельзя считать пустое поле выбранным первым алгоритмом списка.
Разбор сведений не доказывает доступность закрытого ключа, доверие сертификату, пригодность для электронной подписи или соответствие требованиям организации.
Ни один пример здесь не вводит PIN/пароль, не подписывает, не шифрует и не обращается к серверу меток времени.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.