Описание ошибки не найдена информация об алгоритме 32801

Обновлено: 28.01.2023

Обратился клиент с одной странной ошибкой. На ноутбуке установлено ПО КриптоПро, подключен токен, добавлен сертификат и все необходимые драйвера/плагины.

Тесты и проверки работают некоторое время после перезагрузки, но потом появляется ошибка: « Ошибка при получении свойства SubjectName: указан неправильный алгоритм. (0x80090008) ».

Ошибка при получении свойства SubjectName: указан неправильный алгоритм (0х80090008)
Ошибка при получении свойства SubjectName: указан неправильный алгоритм (0х80090008)

Общие моменты

Что можно сделать для исправления ошибки и на что обратить внимание.

  • На уровне ОС — временно отключите брандмауэр и антивирус , с защитной программой — вплоть до удаления с целью чистоты эксперимента.
  • В браузере — добавьте портал в «Надежные узлы» , а в части случаев — в список просмотра в режиме совместимости ; для некоторых версий требуется установка соответствующих расширений — загляните в документацию.
  • Проверьте сертификат на подлинность и отсутствие ошибок с помощью онлайн-сервисов ( ГосУслуги , Контур , КриптоПро и т. п.) — действующий, установлен в контейнер «Личное» учетной записи пользователя и имеет подтвержденную цепочку удостоверения от центров сертификации.
  • В случае провайдера КриптоПро — переустановите или обновите версию с официального сайта, в т. ч. ЭЦП Browser-plugin .
  • Перезагрузите компьютер и повторите отправку документа ещё раз. В сложных случаях помогает полная очистка от предыдущих версий криптопровайдера. Для этого разработчик, как правило, выпускает специальные утилиты.

Частный случай

В нашем случае виновником оказался антивирус — Avast. Как только поменяли его на другой, все пошло как по нотам. Выяснили это экспериментальным путем.

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

Ошибка при проверке цепочки сертификатов. Возможно на компьютере не установлены сертификаты ЦА, выдавшего ваш сертификат
Ошибка при проверке цепочки сертификатов. Возможно на компьютере не установлены сертификаты ЦА, выдавшего ваш сертификат
Ошибка при получении свойства SubjectName: указан неправильный алгоритм. (0х80090008)
Ошибка при получении свойства SubjectName: указан неправильный алгоритм. (0х80090008)

Прочие рекомендации

  1. Повторите операцию установки личного сертификата . Откройте программу КриптоПро CSP и перейдите во вкладку «Сервис». Затем нажмите на кнопки «Просмотреть сертификаты в контейнере. » и «Обзор».

Аналогично для компонента КриптоПро ЭЦП Browser plug-in — установите актуальную сборку.

В случае, если требуется полная зачистка или не получается удалить КриптоПро CSP штатными методами, через «Установка и удаление программ», воспользуйтесь утилитой CSPClean .

✅ Таким образом, если у вас установлен Avast, то удалите его для проверки, перезагрузите компьютер и повторите операцию. Либо используйте другие рекомендации. Успехов Вам!

⚡ Подписывайтесь на канал или задавайте вопрос на сайте — постараемся помочь всеми техническими силами. Безопасной и производительной работы в Windows и 1С.

вопросы

При использовании КриптоПро ЭЦП Browser plug-in могут возникать ошибки, приводящие к тому, что плагин не работает или работает некорректно, из-за чего электронная подпись не создаётся. Рассмотрим наиболее распространённые варианты ошибок и разберёмся, как их устранить.

При проверке отображается статус «Плагин загружен», но нет информации о криптопровайдере

Не удаётся построить цепочку сертификатов для доверенного корневого центра. (0x800B010A)

Картинка 2

При этой ошибке плагин не может сформировать запрос на создание ЭЦП. Она возникает, если по каким-то причинам нет возможности проверить статус сертификата. Например, если нет привязки к ключу или доступа к спискам отзыва. Также проблема может воспроизводиться, если не установлены корневые сертификаты.

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

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

Ошибки

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

Для установки корневого сертификата необходимо:

  • Кликнуть правой кнопкой мыши по файлу.
  • В контекстном меню выбрать пункт Установить сертификат.
  • После запуска Мастера установки нажать Далее.
  • Выбрать вариант Поместить все сертификаты в выбранной хранилище и нажать Обзор.
  • Выбрать в списке хранилищ Доверенные корневые центры сертификации, нажать ОК, затем Далее.
  • Нажать Готово.

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

Если вы создаёте ЭЦП таких форматов, как CAdES-T или CAdES-X Long Type 1, ошибка может возникать из-за отсутствия доверия к сертификату оператора службы предоставления штампов времени. В этой ситуации нужно установить корневой сертификат УЦ в доверенные корневые центры.

ЭЦП создаётся с ошибкой при проверке цепочки сертификатов

Создание ЭЦП с ошибкой

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

Ошибка несоответствия версии плагина

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

Ошибки 0x8007064A и 0x8007065B

Ошибки 0x8007064A и 0x8007065B

Ошибка возникает в связи с окончанием срока действия лицензий на КриптоПро CSP (КриптоПро TSP Client 2.0, Криптопро OCSP Client 2.0).

Чтобы создать электронную подпись с форматом CAdES-BES, необходима действующая лицензия на КриптоПро CSP. Создание ЭЦП с форматом CAdES-X Long Type 1 потребует наличия действующих лицензий:

  • КриптоПро CSP;
  • КриптоПро OCSP Client 2.0;
  • КриптоПро TSP Client 2.0.

После приобретения лицензии потребуется её активация.

Набор ключей не существует (0x80090016)

Набор ключей не существует

Возникает из-за того, что у браузера нет прав для выполнения операции. Для решения проблемы в настройках плагина добавьте сайт в Список доверенных узлов.

Отказано в доступе (0x80090010)

Отказано в доступе

Возникает в связи с истечением срока действия закрытого ключа. Чтобы проверить срок действия, запустите Крипто-Про CSP, затем откройте вкладку Сервис. Далее необходимо выбрать пункт Протестировать и указать контейнер с закрытым ключом. Если в результатах тестирования вы увидите, что срок действия закрытого ключа истёк, необходимо получить новый ключ.

необходимо получить новый ключ

Ошибка: Invalid algorithm specified. (0x80090008)

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

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

У вас ещё нет электронной подписи? Её можно заказать у нас на сайте. Выберите подходящий вариант ЭЦП: для участия в электронных торгах, работы с порталами или отчётности. Процедура оформления не займёт больше одного дня.

Средства криптографической защиты информации

1. Требования к средствам криптографической защиты информации
Для шифрования отправляемых и получаемых документов Вы должны определиться с выбором средства криптографической защиты информации (СКЗИ).

Криптонастройка(1).jpg

Подробную техническую информацию по перечисленным СКЗИ (версиям, совместимости с операционными системами, алгоритмам подписи и шифрования и т.п.) можно получить на официальных сайтах производителя:

2. Работа с криптопровайдером «VipNet CSP» и установка сертификатов

Криптонастройка(2).jpg

Инструкция по установке, настройке и удалению VipNet CSP доступна здесь.

2.1. Хранение контейнера закрытого ключа

Хранение контейнера ключа для криптопровайдера VipNet CSP возможно, как в папке на жестком диске компьютера, так и на внешних носителях информации (flesh-носитель, E-токен). Тестовая ЭП предоставляется в файловом режиме, в виде файла, которой нужно скопировать на компьютер, а затем добавить в интерфейс криптопровайдера.­­­­

2.2. Установка сертификата из контейнера

2.3. Загрузка и установка корневого сертификата Удостоверяющего Центра и списка отзыва сертификатов

На вкладке «Состав» открытого сертификата организации Вы можете получить информацию и ссылку на скачивание корневого сертификата Удостоверяющего Центра и Списка отзывов сертификатов.

Для получения ссылки на скачивание корневого сертификата Удостоверяющего Центра перейдите в поле «Доступ к информации о центрах сертификации» и выделите его курсором мыши.

В открывшейся информации ниже ссылка на скачивание корневого сертификата Удостоверяющего Центра будет отображена в разделе «Доступ к сведениям центра сертификации Метод доступа=Поставщик центра сертификации» в пункте «Дополнительное имя»

Для скачивания файла корневого сертификата скопируйте после «URL=» ссылку в адресную строку браузера и нажмите на клавиатуре кнопку ENTER, а затем сохраните файл в любой каталог

Для получения ссылки на скачивание списка отозванных сертификатов необходимо перейти на вкладку «Состав» и выбрать из списка поле «Точки распространения списков отзыва»

В открывшейся информации в разделе «Имя точки распространения» скопируйте ссылку на загрузку списков отзыва

Для скачивания файла списка отзыва сертификатов скопируйте после «URL=» ссылку в адресную строку браузера и нажмите на клавиатуре кнопку ENTER, а затем сохраните файл в любой каталог

2.4. Установка корневого сертификата Удостоверяющего Центра

2.5. Установка списка отзывов сертификатов

После скачивания файла списка отзывов сертификата и сохранения его в нужный каталог, откройте его правой кнопкой мыши через меню «Установить список отзыва (CRL)»

Перед Вами откроется «Мастер импорта сертификатов». Следуйте указаниям «Мастера импорта сертификатов». На этапе импорта необходимо убедиться, что пункт «Автоматически выбрать хранилище на основе типа сертификата» выбран и нажать Далее

После успешного импорта сертификата нажмите Готово.

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

Закройте окно криптопровайдера «VipNet CSP», нажав кнопку ОК

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

2.6. Копирование контейнера закрытого ключа электронной подписи

Откройте программу ViPNet CSP. Для этого перейдите в меню «Пуск» — «Все программы» — «ViPNet» — «ViPNet CSP»

В открывшемся окне перейдите на вкладку Контейнеры, выделите нужный контейнер одним нажатием левой кнопки мыши и нажмите кнопку Копировать

Выберите путь сохранения копии контейнера ключа. Для этого нажмите кнопку Обзор

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

Пароль должен содержать в себе не менее 6 символов.

На вкладке «Контейнеры» появится копия Вашего контейнера с указанием места хранения.

Магазин

Войти

Текст ошибки:

Произошла ошибка при сохранении данных

Ошибка загрузки данных

Указан неправильный алгоритм. (0x80090008)

Как выглядит ошибка:

В большинстве случаев ошибка Указан неправильный алгоритм (0x80090008) решается переустановкой сертификата подписи. Переустановить сертификат можно несколькими способами:

В программе КриптоАРМ так, как показано в видео инструкции.

В личном хранилище сертификатов КриптоАРМа найдите ваш сертификат, выделите нажав на него курсором мыши. Нажмите на кнопку Экспорт , в открывшемся окне мастера нажмите Далее, в следующем окне обязательно укажите НЕТ НЕ ЭКСПОРТИРОВАТЬ ЗАКРЫТЫЙ КЛЮЧ , в мастере экспорта выберите кодировку DER , нажав кнопку Обзор поместите его на рабочий стол под любым именем. Удалять сертификат из личного хранилища при этом не нужно. Затем снова импортируйте его в личное хранилище, используя кнопку Импорт на панели инструментов, в мастере импорта сертификатов установите чекбоксы Установить личный сертификат и Поместить сертификат в контейнер . Далее понадобится выбрать криптопровайдер и контейнер вручную. После успешного импорта сертификата повторите подписание.

Также переустановку сертификата можно выполнить через КриптоПро CSP. Для этого откройте программу КриптоПро CSP и перейдите во вкладку Сервис . Затем нажмите на кнопки Просмотреть сертификаты в контейнере и Обзор . Выберите нужный контейнер и нажмите кнопку Ok , а после Установить . Снова повторите подписание.

После выполненных переустановок сертификата, если ошибка возникнет снова, войдите в КриптоАРМ в меню Профили , далее Управление профилями , откройте профиль по умолчанию (он помечен зеленой галочкой в списке), перейдите на вкладку Общие . Здесь в поле Владелец сертификата добавьте этот сертификат, нажмите Применить и ОК . После этого повторите подписание.

Читайте также:

  • По какому алгоритму вводимые в компьютер десятичные числа можно перевести
  • Как настроить на планшете кнопку домой
  • Самые выгодные наборы raid
  • Не работает exe файл python
  • Как установить многодисковую игру на xbox 360 freeboot

Обновлено: 10.04.2023

Обратился клиент с одной странной ошибкой. На ноутбуке установлено ПО КриптоПро, подключен токен, добавлен сертификат и все необходимые драйвера/плагины.

Тесты и проверки работают некоторое время после перезагрузки, но потом появляется ошибка: « Ошибка при получении свойства SubjectName: указан неправильный алгоритм. (0x80090008) ».

Ошибка при получении свойства SubjectName: указан неправильный алгоритм (0х80090008)
Ошибка при получении свойства SubjectName: указан неправильный алгоритм (0х80090008)

Общие моменты

Что можно сделать для исправления ошибки и на что обратить внимание.

  • На уровне ОС — временно отключите брандмауэр и антивирус , с защитной программой — вплоть до удаления с целью чистоты эксперимента.
  • В браузере — добавьте портал в «Надежные узлы» , а в части случаев — в список просмотра в режиме совместимости ; для некоторых версий требуется установка соответствующих расширений — загляните в документацию.
  • Проверьте сертификат на подлинность и отсутствие ошибок с помощью онлайн-сервисов ( ГосУслуги , Контур , КриптоПро и т. п.) — действующий, установлен в контейнер «Личное» учетной записи пользователя и имеет подтвержденную цепочку удостоверения от центров сертификации.
  • В случае провайдера КриптоПро — переустановите или обновите версию с официального сайта, в т. ч. ЭЦП Browser-plugin .
  • Перезагрузите компьютер и повторите отправку документа ещё раз. В сложных случаях помогает полная очистка от предыдущих версий криптопровайдера. Для этого разработчик, как правило, выпускает специальные утилиты.

Частный случай

В нашем случае виновником оказался антивирус — Avast. Как только поменяли его на другой, все пошло как по нотам. Выяснили это экспериментальным путем.

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

Ошибка при проверке цепочки сертификатов. Возможно на компьютере не установлены сертификаты ЦА, выдавшего ваш сертификат
Ошибка при проверке цепочки сертификатов. Возможно на компьютере не установлены сертификаты ЦА, выдавшего ваш сертификат
Ошибка при получении свойства SubjectName: указан неправильный алгоритм. (0х80090008)
Ошибка при получении свойства SubjectName: указан неправильный алгоритм. (0х80090008)

Прочие рекомендации

  1. Повторите операцию установки личного сертификата . Откройте программу КриптоПро CSP и перейдите во вкладку «Сервис». Затем нажмите на кнопки «Просмотреть сертификаты в контейнере. » и «Обзор».

Аналогично для компонента КриптоПро ЭЦП Browser plug-in — установите актуальную сборку.

В случае, если требуется полная зачистка или не получается удалить КриптоПро CSP штатными методами, через «Установка и удаление программ», воспользуйтесь утилитой CSPClean .

✅ Таким образом, если у вас установлен Avast, то удалите его для проверки, перезагрузите компьютер и повторите операцию. Либо используйте другие рекомендации. Успехов Вам!

⚡ Подписывайтесь на канал или задавайте вопрос на сайте — постараемся помочь всеми техническими силами. Безопасной и производительной работы в Windows и 1С.

вопросы

При использовании КриптоПро ЭЦП Browser plug-in могут возникать ошибки, приводящие к тому, что плагин не работает или работает некорректно, из-за чего электронная подпись не создаётся. Рассмотрим наиболее распространённые варианты ошибок и разберёмся, как их устранить.

При проверке отображается статус «Плагин загружен», но нет информации о криптопровайдере

Не удаётся построить цепочку сертификатов для доверенного корневого центра. (0x800B010A)

Картинка 2

При этой ошибке плагин не может сформировать запрос на создание ЭЦП. Она возникает, если по каким-то причинам нет возможности проверить статус сертификата. Например, если нет привязки к ключу или доступа к спискам отзыва. Также проблема может воспроизводиться, если не установлены корневые сертификаты.

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

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

Ошибки

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

Для установки корневого сертификата необходимо:

  • Кликнуть правой кнопкой мыши по файлу.
  • В контекстном меню выбрать пункт Установить сертификат.
  • После запуска Мастера установки нажать Далее.
  • Выбрать вариант Поместить все сертификаты в выбранной хранилище и нажать Обзор.
  • Выбрать в списке хранилищ Доверенные корневые центры сертификации, нажать ОК, затем Далее.
  • Нажать Готово.

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

Если вы создаёте ЭЦП таких форматов, как CAdES-T или CAdES-X Long Type 1, ошибка может возникать из-за отсутствия доверия к сертификату оператора службы предоставления штампов времени. В этой ситуации нужно установить корневой сертификат УЦ в доверенные корневые центры.

ЭЦП создаётся с ошибкой при проверке цепочки сертификатов

Создание ЭЦП с ошибкой

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

Ошибка несоответствия версии плагина

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

Ошибки 0x8007064A и 0x8007065B

Ошибки 0x8007064A и 0x8007065B

Ошибка возникает в связи с окончанием срока действия лицензий на КриптоПро CSP (КриптоПро TSP Client 2.0, Криптопро OCSP Client 2.0).

Чтобы создать электронную подпись с форматом CAdES-BES, необходима действующая лицензия на КриптоПро CSP. Создание ЭЦП с форматом CAdES-X Long Type 1 потребует наличия действующих лицензий:

  • КриптоПро CSP;
  • КриптоПро OCSP Client 2.0;
  • КриптоПро TSP Client 2.0.

После приобретения лицензии потребуется её активация.

Набор ключей не существует (0x80090016)

Набор ключей не существует

Возникает из-за того, что у браузера нет прав для выполнения операции. Для решения проблемы в настройках плагина добавьте сайт в Список доверенных узлов.

Отказано в доступе (0x80090010)

Отказано в доступе

Возникает в связи с истечением срока действия закрытого ключа. Чтобы проверить срок действия, запустите Крипто-Про CSP, затем откройте вкладку Сервис. Далее необходимо выбрать пункт Протестировать и указать контейнер с закрытым ключом. Если в результатах тестирования вы увидите, что срок действия закрытого ключа истёк, необходимо получить новый ключ.

необходимо получить новый ключ

Ошибка: Invalid algorithm specified. (0x80090008)

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

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

У вас ещё нет электронной подписи? Её можно заказать у нас на сайте. Выберите подходящий вариант ЭЦП: для участия в электронных торгах, работы с порталами или отчётности. Процедура оформления не займёт больше одного дня.

Средства криптографической защиты информации

1. Требования к средствам криптографической защиты информации
Для шифрования отправляемых и получаемых документов Вы должны определиться с выбором средства криптографической защиты информации (СКЗИ).

Криптонастройка(1).jpg

Подробную техническую информацию по перечисленным СКЗИ (версиям, совместимости с операционными системами, алгоритмам подписи и шифрования и т.п.) можно получить на официальных сайтах производителя:

2. Работа с криптопровайдером «VipNet CSP» и установка сертификатов

Криптонастройка(2).jpg

Инструкция по установке, настройке и удалению VipNet CSP доступна здесь.

2.1. Хранение контейнера закрытого ключа

Хранение контейнера ключа для криптопровайдера VipNet CSP возможно, как в папке на жестком диске компьютера, так и на внешних носителях информации (flesh-носитель, E-токен). Тестовая ЭП предоставляется в файловом режиме, в виде файла, которой нужно скопировать на компьютер, а затем добавить в интерфейс криптопровайдера.­­­­

2.2. Установка сертификата из контейнера

2.3. Загрузка и установка корневого сертификата Удостоверяющего Центра и списка отзыва сертификатов

На вкладке «Состав» открытого сертификата организации Вы можете получить информацию и ссылку на скачивание корневого сертификата Удостоверяющего Центра и Списка отзывов сертификатов.

Для получения ссылки на скачивание корневого сертификата Удостоверяющего Центра перейдите в поле «Доступ к информации о центрах сертификации» и выделите его курсором мыши.

В открывшейся информации ниже ссылка на скачивание корневого сертификата Удостоверяющего Центра будет отображена в разделе «Доступ к сведениям центра сертификации Метод доступа=Поставщик центра сертификации» в пункте «Дополнительное имя»

Для скачивания файла корневого сертификата скопируйте после «URL=» ссылку в адресную строку браузера и нажмите на клавиатуре кнопку ENTER, а затем сохраните файл в любой каталог

Для получения ссылки на скачивание списка отозванных сертификатов необходимо перейти на вкладку «Состав» и выбрать из списка поле «Точки распространения списков отзыва»

В открывшейся информации в разделе «Имя точки распространения» скопируйте ссылку на загрузку списков отзыва

Для скачивания файла списка отзыва сертификатов скопируйте после «URL=» ссылку в адресную строку браузера и нажмите на клавиатуре кнопку ENTER, а затем сохраните файл в любой каталог

2.4. Установка корневого сертификата Удостоверяющего Центра

2.5. Установка списка отзывов сертификатов

После скачивания файла списка отзывов сертификата и сохранения его в нужный каталог, откройте его правой кнопкой мыши через меню «Установить список отзыва (CRL)»

Перед Вами откроется «Мастер импорта сертификатов». Следуйте указаниям «Мастера импорта сертификатов». На этапе импорта необходимо убедиться, что пункт «Автоматически выбрать хранилище на основе типа сертификата» выбран и нажать Далее

После успешного импорта сертификата нажмите Готово.

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

Закройте окно криптопровайдера «VipNet CSP», нажав кнопку ОК

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

2.6. Копирование контейнера закрытого ключа электронной подписи

Откройте программу ViPNet CSP. Для этого перейдите в меню «Пуск» — «Все программы» — «ViPNet» — «ViPNet CSP»

В открывшемся окне перейдите на вкладку Контейнеры, выделите нужный контейнер одним нажатием левой кнопки мыши и нажмите кнопку Копировать

Выберите путь сохранения копии контейнера ключа. Для этого нажмите кнопку Обзор

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

Пароль должен содержать в себе не менее 6 символов.

На вкладке «Контейнеры» появится копия Вашего контейнера с указанием места хранения.

Магазин

Войти

Текст ошибки:

Произошла ошибка при сохранении данных

Ошибка загрузки данных

Указан неправильный алгоритм. (0x80090008)

Как выглядит ошибка:

В большинстве случаев ошибка Указан неправильный алгоритм (0x80090008) решается переустановкой сертификата подписи. Переустановить сертификат можно несколькими способами:

В программе КриптоАРМ так, как показано в видео инструкции.

В личном хранилище сертификатов КриптоАРМа найдите ваш сертификат, выделите нажав на него курсором мыши. Нажмите на кнопку Экспорт , в открывшемся окне мастера нажмите Далее, в следующем окне обязательно укажите НЕТ НЕ ЭКСПОРТИРОВАТЬ ЗАКРЫТЫЙ КЛЮЧ , в мастере экспорта выберите кодировку DER , нажав кнопку Обзор поместите его на рабочий стол под любым именем. Удалять сертификат из личного хранилища при этом не нужно. Затем снова импортируйте его в личное хранилище, используя кнопку Импорт на панели инструментов, в мастере импорта сертификатов установите чекбоксы Установить личный сертификат и Поместить сертификат в контейнер . Далее понадобится выбрать криптопровайдер и контейнер вручную. После успешного импорта сертификата повторите подписание.

Также переустановку сертификата можно выполнить через КриптоПро CSP. Для этого откройте программу КриптоПро CSP и перейдите во вкладку Сервис . Затем нажмите на кнопки Просмотреть сертификаты в контейнере и Обзор . Выберите нужный контейнер и нажмите кнопку Ok , а после Установить . Снова повторите подписание.

После выполненных переустановок сертификата, если ошибка возникнет снова, войдите в КриптоАРМ в меню Профили , далее Управление профилями , откройте профиль по умолчанию (он помечен зеленой галочкой в списке), перейдите на вкладку Общие . Здесь в поле Владелец сертификата добавьте этот сертификат, нажмите Применить и ОК . После этого повторите подписание.

Читайте также:

  • По какому алгоритму вводимые в компьютер десятичные числа можно перевести
  • Как настроить на планшете кнопку домой
  • Самые выгодные наборы raid
  • Не работает exe файл python
  • Как установить многодисковую игру на xbox 360 freeboot

I have to maintain an old VB 6 ActiveX DLL called by another third-party program for which I have no sources. This DLL works and compiles fine against the API of said program for about 6 years and 3 major versions.

But now when I try to compile the DLL against a new major version the mentioned error occurs. It seems the error occurs before «my» code is called so there´s no use debugging or logging. The only remedy was to compile w/o binary compatibility which is no real option. My Google search turned up quite some people with the same problem but no solution.

Does anybody here know how to fix this issue ?

TAbdiukov's user avatar

TAbdiukov

1,1853 gold badges12 silver badges25 bronze badges

asked Mar 8, 2010 at 14:37

banzai's user avatar

I finally figure out how to diagnose VB6 error 32801 in a systemic way.

My theory is When the VB6 compiler is creating a project or binary compatible library, the compiler decompiles the type information from the referenced library. Error 32801 occurs the source code’s type information is not the same as the referenced library.

There is a tool called OLEView. This tool can decompile the COM type information into an IDL text. What I do is decompile the referenced library in to IDL and take the last good build of the failing library. Most times it is a build server version but the build does not work on a developer workstation. Decompile the last good build. Use a text comparison tool, like WINMerge, and find the differences between the type libraries. The differences make it easy to track down the problem.

Depending on the difference will determine how to correct. Mitigation can be done by either correcting the reference DLL, or by source code correction, or source code references.

answered Oct 3, 2012 at 11:57

Robert Livermore's user avatar

It sounds like one of the types in the interfaces defined in your new DLL is different from one in the previous DLL. I’m deducing you use types defined in the third party program in your public interfaces of your DLL. It sounds to me like the third party has changed the definition of one of the types but kept the name and GUIDs the same. You could use something like OLE/COM Object viewer to check whether that’s true. If it is true then you can complain to the publisher of the 3rd party program. Do you have enough political power to succeed?

Bruce McKinney, the guru who wrote Hardcore Visual Basic 6, ran into the same issue with a structure in a type library, where he changed some of the member types. The only fix he could find was (essentially) to break binary compatibility — and that’s after some correspondence with the VB6 compiler team, who he knew fairly well. I don’t think anyone else could do better.

answered Mar 8, 2010 at 20:56

MarkJ's user avatar

MarkJMarkJ

30.1k5 gold badges69 silver badges111 bronze badges

3

There is a discussion about this error on devx.com that seems to indicate that the problem stemmed from Microsoft’s Scripting Runtime (scrrun.dll).

FileSystemObject compatibility Unexpected error (32810)

Does your DLL reference that library? If so, can you remove the reference (e.g., replace FileSystemObject functionality with intrinsic VB file handling functions and/or API calls).

answered Mar 8, 2010 at 15:22

raven's user avatar

ravenraven

18k16 gold badges81 silver badges112 bronze badges

3

Are any of the files associated with the core project being compiled marked as Read-Only (i.e. not checked out of SourceSafe or similar repository)?

*.exp
*.vbw
*.lib

answered Mar 8, 2010 at 17:05

jasonk's user avatar

jasonkjasonk

1,5804 gold badges25 silver badges33 bronze badges

1

---------------------------
Microsoft Visual Basic
---------------------------
Unexpected error (32810)
---------------------------
OK   Помощ   
---------------------------

This the message I was getting trying to reference in VBIDE an old OCX that has been recompiled recently.

After somewhat long research the offending lines of code causing this error appeared to be

Property Get MouseActivate() As BookmarkEnum

Just changed this to

Property Get MouseActivate() As Boolean

. . . and the error was gone.

BookmarkEnum is an enum from ADO. Our build server is Server 2003 and my dev machine is Win10. The project references ADO 2.8 but apparently this typelib has some differences on Server 2003 vs Win10

answered Jan 31, 2019 at 19:00

wqw's user avatar

wqwwqw

11.8k1 gold badge33 silver badges41 bronze badges

Я должен поддерживать старую VB 6 ActiveX DLL, вызываемую другой сторонней программой, для которой у меня нет источников и т. Д. Эта DLL работает и прекрасно компилируется с API указанной программы в течение примерно 6 лет и 3 основных версий.

Но теперь, когда я пытаюсь скомпилировать DLL для новой основной версии, возникает упомянутая ошибка. Кажется, ошибка возникает до вызова «моего» кода, поэтому нет никакой необходимости в отладке или ведении журнала. Единственным выходом было компилировать без двоичной совместимости, что нереально. Мой поиск в Google обнаружил довольно много людей с той же проблемой, но без решения.

Кто-нибудь здесь знает, как решить эту проблему?

заранее спасибо

банзай

2010-03-08 14:37

5
ответов

Решение

Похоже, что один из типов в интерфейсах, определенных в вашей новой DLL, отличается от типа в предыдущей DLL. Я делаю вывод, что вы используете типы, определенные в сторонней программе, в ваших открытых интерфейсах вашей DLL. Мне кажется, что третье лицо изменило определение одного из типов, но сохранило имя и GUID одинаковыми. Вы можете использовать что-то вроде OLE/COM Object viewer, чтобы проверить, правда ли это. Если это правда, то вы можете пожаловаться издателю сторонней программы. Достаточно ли у вас политической власти, чтобы добиться успеха?

Брюс МакКинни, гуру, который написал Hardcore Visual Basic 6, столкнулся с той же проблемой со структурой в библиотеке типов, где он изменил некоторые типы элементов. Единственное исправление, которое он мог найти, — это (по сути) нарушение бинарной совместимости — и это после некоторой переписки с командой компиляторов VB6, которую он знал довольно хорошо. Я не думаю, что кто-то еще мог бы сделать лучше.


user15639

08 мар ’10 в 20:56
2010-03-08 20:56

2010-03-08 20:56

Я наконец выясняю, как диагностировать ошибку VB6 32801 системным способом.

Моя теория такова: когда компилятор VB6 создает проект или двоичную совместимую библиотеку, компилятор декомпилирует информацию о типах из указанной библиотеки. Произошла ошибка 32801. Информация о типе исходного кода не совпадает с указанной библиотекой.

Существует инструмент под названием OLEView. Этот инструмент может декомпилировать информацию о типе COM в текст IDL. Что я делаю, так это декомпилирую указанную библиотеку в IDL и получаю последнюю хорошую сборку неисправной библиотеки. В большинстве случаев это версия сервера сборки, но сборка не работает на рабочей станции разработчика. Декомпилируйте последнюю хорошую сборку. Используйте инструмент сравнения текста, такой как WINMerge, и найдите различия между библиотеками типов. Различия позволяют легко отследить проблему.

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

2012-10-03 11:57

---------------------------
Microsoft Visual Basic
---------------------------
Unexpected error (32810)
---------------------------
OK   Помощ   
---------------------------

Это сообщение, которое я получал, пытаясь сослаться в VBIDE на старый OCX, который был недавно перекомпилирован.

После нескольких долгих исследований ошибочные строки кода, вызвавшие эту ошибку, оказались

Property Get MouseActivate() As BookmarkEnum

Просто изменил это на

Property Get MouseActivate() As Boolean

,,, и ошибка исчезла.

BookmarkEnum перечисление от ADO. Наш сервер сборки — Server 2003, а моя машина разработки — Win10. Проект ссылается на ADO 2.8, но, очевидно, эта библиотека типов имеет некоторые отличия на Server 2003 и Win10


user40691

31 янв ’19 в 19:00
2019-01-31 19:00

2019-01-31 19:00

Помечены ли какие-либо файлы, связанные с компилируемым основным проектом, как доступные только для чтения (т.е. не извлечены из SourceSafe или аналогичного репозитория)?

*.exp *.vbw *.lib

2010-03-08 17:05

На devx.com обсуждается эта ошибка, которая, по-видимому, указывает на то, что проблема связана с Microsoft Scripting Runtime (scrrun.dll).

Совместимость FileSystemObject Неожиданная ошибка (32810)

Ваша DLL ссылается на эту библиотеку? Если это так, вы можете удалить ссылку (например, заменить функциональность FileSystemObject встроенными функциями обработки файлов VB и / или вызовами API).


user4228

08 мар ’10 в 15:22
2010-03-08 15:22

2010-03-08 15:22

Похоже, что один из типов в интерфейсах, определенных в вашей новой DLL, отличается от типа в предыдущей DLL. Я делаю вывод, что вы используете типы, определенные в сторонней программе, в публичных интерфейсах вашей DLL. Мне кажется, что сторонняя программа изменила определение одного из типов, но имя и GUID остались прежними. Вы можете использовать что-то вроде OLE/COM Object viewer, чтобы проверить, так ли это. Если это так, то вы можете пожаловаться издателю сторонней программы. Достаточно ли у вас политической силы, чтобы добиться успеха?

Брюс МакКинни, гуру, написавший Hardcore Visual Basic 6, столкнулся с такой же проблемой со структурой в библиотеке типов, где он изменил некоторые типы-члены. Единственным решением, которое он смог найти, было (по сути) нарушение бинарной совместимости — и это после некоторой переписки с командой компиляторов VB6, которую он знал достаточно хорошо. Я не думаю, что кто-то другой смог бы сделать лучше.


Offline

miser

 


#1
Оставлено
:

8 апреля 2016 г. 13:48:00(UTC)

miser

Статус: Активный участник

Группы: Участники

Зарегистрирован: 14.03.2011(UTC)
Сообщений: 152
Мужчина
Откуда: Санкт-Петербург

Сказал «Спасибо»: 1 раз
Поблагодарили: 7 раз в 5 постах

Добрый день.
Стоит сборки 4.0.9708 Nechaev. 64 разрядная.

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

Код:


provider index:0, name:Crypto-Pro GOST R 34.10-2001 KC1 CSP type:75
provider index:1, name:Crypto-Pro GOST R 34.10-2012 KC1 CSP type:80
provider index:2, name:Crypto-Pro GOST R 34.10-2012 KC1 Strong CSP type:81

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

Код:

PROV_ENUMALGS_EX data;
DWORD dataLen = sizeof(PROV_ENUMALGS_EX);

for( DWORD flags = CRYPT_FIRST;
   CryptGetProvParam(hProv, PP_ENUMALGS_EX, (BYTE*)&data, &dataLen, flags);
   flags = CRYPT_NEXT) { ... }

В теле цикла выдаем все идентификаторы и OID алгоритмов.

name:GOST 28147-89 longName:GOST 28147-89 algId:26142(661E) OID:1.2.643.2.2.21 type:isCipher
name:GOST R 34.11-94 longName:GOST R 34.11-1994 256 algId:32798(801E) OID:1.2.643.2.2.3 type:isHash
name:GOST R 34.10-2001 longName:GOST R 34.10-2001 256 algId:11811(2E23) OID:1.2.643.2.2.19 type:isSignature
name:DH 34.10-2001 longName:GOST R 34.10-2001 256 DH algId:43556(AA24) OID:1.2.643.2.2.98 type:isKeyExchange
name:DH 34.10-2001 longName:GOST R 34.10-2001 256 DH algId:43557(AA25) OID:(null) type:isKeyExchange
name:HMAC GOST 28147-89 longName:HMAC GOST 28147-89 algId:32799(801F) OID:(null) type:isHash

А вопрос вот в чем. В ваших примерах, файл /opt/cprocsp/src/CadesSamples/SimplifiedSignCadesBes/SimplifiedSignCadesBes.cpp

Код:

// Задаем параметры
CRYPT_SIGN_MESSAGE_PARA signPara = { sizeof(signPara) };
signPara.dwMsgEncodingType = X509_ASN_ENCODING | PKCS_7_ASN_ENCODING;
signPara.pSigningCert = context;
signPara.HashAlgorithm.pszObjId = (LPSTR) szOID_CP_GOST_R3411; // Хэш считается по ГОСТ Р 34.11-94

/* CRYPT_HASH_ALG_OID_GROUP_ID */
#define szOID_CP_GOST_R3411 "1.2.643.2.2.9"

Но такой алгоритм не реализуется вашим провайдером.
Как они работают?

Попытка указать реализуемый идентификатор OID:1.2.643.2.2.3, приводит к ошибке работы функции CryptSignMessage.


Вверх


Offline

cross

 


#2
Оставлено
:

8 апреля 2016 г. 14:08:54(UTC)

Анатолий Беляев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах

«1.2.643.2.2.9» — Функция хэширования ГОСТ Р 34.11-94
«1.2.643.2.2.3» — Алгоритм цифровой подписи ГОСТ Р 34.10-2001 см список
Они имеют одинаковый AlgId, но находятся в разных группах ( Если говорить в терминах функции CryptFindOIDInfo()). Первый в CRYPT_HASH_ALG_OID_GROUP_ID второй в CRYPT_SIGN_ALG_OID_GROUP_ID

Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.


Вверх


Offline

miser

 


#3
Оставлено
:

8 апреля 2016 г. 15:43:21(UTC)

miser

Статус: Активный участник

Группы: Участники

Зарегистрирован: 14.03.2011(UTC)
Сообщений: 152
Мужчина
Откуда: Санкт-Петербург

Сказал «Спасибо»: 1 раз
Поблагодарили: 7 раз в 5 постах

Извините, не совсем понял вашу мысль про группы.
Вот, получил я идентификатор алгоритма

Код:

PROV_ENUMALGS_EX *alg;
ALG_ID  algID = alg->aiAlgid;
ALG_ID  algClass   = GET_ALG_CLASS(algID);
BOOL isHash        = algClass == ALG_CLASS_HASH;
BOOL isSignature   = algClass == ALG_CLASS_SIGNATURE;
BOOL isKeyExchange = algClass == ALG_CLASS_KEY_EXCHANGE;
BOOL isCipher      = algClass == ALG_CLASS_DATA_ENCRYPT;

// печатаю
printf("... type:%s\n", ...
 (isHash ? "isHash" :
 isSignature ? "isSignature" :
 isKeyExchange ? "isKeyExchange" :
 isCipher ? "isCipher" : "other"));

Если бы алгоритм попадал в обе группы, я бы получил «other», а не

Код:

name:GOST R 34.11-94 longName:GOST R 34.11-1994 256 algId:32798(801E) OID:1.2.643.2.2.3 type:isHash

Где еще указывать группу, в примере, указанном в предыдущем сообщении?

Да, я вижу, описание

Код:

/* CRYPT_SIGN_ALG_OID_GROUP_ID */
...
#define szOID_CP_GOST_R3411_R3410EL "1.2.643.2.2.3"

Обращаю ваше внимание, что
alg->szName = GOST R 34.11-94
alg->szLongName = GOST R 34.11-1994 256

а функция возвращает нам OID
PCCRYPT_OID_INFO pOidInf = CryptFindOIDInfo(CRYPT_OID_INFO_ALGID_KEY, &algID, 0);

И этот OID, отнюдь не то, что вы написали.
Должно было написать «1.2.643.2.2.9», а написало «1.2.643.2.2.3».

Отредактировано пользователем 8 апреля 2016 г. 15:58:23(UTC)
 | Причина: обратите внимание на OID и название алгоритма


Вверх


Offline

Максим Коллегин

 


#4
Оставлено
:

8 апреля 2016 г. 16:49:24(UTC)

Максим Коллегин

Статус: Сотрудник

Группы: Администраторы

Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,332
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 21 раз
Поблагодарили: 682 раз в 601 постах

Вы путаете оиды и алгоритмы. Связь между ними весьма слабая и неочевидная — нужно долго читать и курить wincrypt.h
Оид подписи имеет алгидом алгоритм хэша, так написано в wincrypt.h

Знания в базе знаний, поддержка в техподдержке


Вверх

WWW


Offline

miser

 


#5
Оставлено
:

8 апреля 2016 г. 17:39:14(UTC)

miser

Статус: Активный участник

Группы: Участники

Зарегистрирован: 14.03.2011(UTC)
Сообщений: 152
Мужчина
Откуда: Санкт-Петербург

Сказал «Спасибо»: 1 раз
Поблагодарили: 7 раз в 5 постах

Извините, я стараюсь ничего не путать.
Начнем всё по порядку.

В цикле я опрашиваю список алгоритмов, доступных провайдеру.

Код:

void EnumAlgs(HCRYPTPROV hProv) {
	PROV_ENUMALGS_EX data;
	DWORD dataLen = sizeof(PROV_ENUMALGS_EX);

	for( DWORD flags = CRYPT_FIRST;
	     CryptGetProvParam(hProv, PP_ENUMALGS_EX, (BYTE*)&data, &dataLen, flags);
	     flags = CRYPT_NEXT)
		FindOIDs(&data);
}
void FindOIDs(PROV_ENUMALGS_EX *alg) {
	ALG_ID  algID = alg->aiAlgid;
    PCCRYPT_OID_INFO pOidInf = CryptFindOIDInfo(CRYPT_OID_INFO_ALGID_KEY, &algID, 0);

    ALG_ID  algClass   = GET_ALG_CLASS(algID);
    BOOL isHash        = algClass == ALG_CLASS_HASH;
    BOOL isSignature   = algClass == ALG_CLASS_SIGNATURE;
    BOOL isKeyExchange = algClass == ALG_CLASS_KEY_EXCHANGE;
    BOOL isCipher      = algClass == ALG_CLASS_DATA_ENCRYPT;
    char* type = 
    	isHash ? "Hash" :
    	isSignature ? "Signature" :
        isKeyExchange ? "KeyExchange" :
        isCipher ? "Cipher" : "other";

	printf("name:%s longName:%s algId:%d(%X) OID:%s type:%s\n", 
		alg->szName, 
		alg->szLongName, 
		alg->aiAlgid, 
		alg->aiAlgid,
		(pOidInf == NULL ? NULL : pOidInf->pszOID),
		type);		
}

Ничего сложного тут нет. Разве, что метод CryptFindOIDInfo.
Последний параметр выставлен в 0.

Цитата:

Setting this parameter to zero searches all groups according to the dwKeyType parameter.

Я показываю, что
1) название алгоритма — ГОСТ хеш функция.
2) группа алгоритма — хеш функция.
А вот, OID — это алгоритм подписи.

Гдето, глубоко в коде своей программы, эти идентификаторы запомнил.
Надо подписать документ. Беру OID ключа из сертификата. Примерно так же, как делает ваш пример, /opt/cprocsp/src/doxygen/CSP/SignUtility/SignUtility.c

Код:

stSignMessagePara.HashAlgorithm.pszObjId = GetHashOidByKeyOid(pCertCtx->pCertInfo->SubjectPublicKeyInfo.Algorithm.pszObjId);

Но вместо жестко пробитых OID, идет поиск алгоритма по названию «GOST R 34.11-94».
И естественно, моя система возвращает тот OID, который был получен ранее — «1.2.643.2.2.3».

Да, на текущем этапе, сделал отдачу OID так же, как сделано в вашем примере. Подпись заработала.

Можно было бы поступить еще хитрее. Можно было бы расковырять сертификат или полное описание алгоритма и получить OID нужной функции.

Да, обратите внимание, какой OID возвращает наш алгоритм подписи.

Цитата:

name:GOST R 34.10-2001 longName:GOST R 34.10-2001 256 algId:11811(2E23) OID:1.2.643.2.2.19 type:isSignature

OID соответствует «Алгоритм ГОСТ Р 34.10-2001, используемый при экспорте/импорте ключей».
А должен был выдать OID «»1.2.643.2.2.3″» «Алгоритм цифровой подписи ГОСТ Р 34.10-2001». Потому, как это подпись. А «1.2.643.2.2.19» — это, кажется, KeyExchange.
Буду рад, если это глюки моей машины.

Отредактировано пользователем 8 апреля 2016 г. 17:54:08(UTC)
 | Причина: маленькое дополнение


Вверх


Offline

Максим Коллегин

 


#6
Оставлено
:

8 апреля 2016 г. 18:50:53(UTC)

Максим Коллегин

Статус: Сотрудник

Группы: Администраторы

Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,332
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 21 раз
Поблагодарили: 682 раз в 601 постах

В третий раз повторяю — алгид 0x801E зарегистрирован у оида подписи и хэша. Если укажите класс при поиске — небудет неоднозначности.

Знания в базе знаний, поддержка в техподдержке


Вверх

WWW


Offline

miser

 


#7
Оставлено
:

11 апреля 2016 г. 11:06:15(UTC)

miser

Статус: Активный участник

Группы: Участники

Зарегистрирован: 14.03.2011(UTC)
Сообщений: 152
Мужчина
Откуда: Санкт-Петербург

Сказал «Спасибо»: 1 раз
Поблагодарили: 7 раз в 5 постах

Извините, я вашу мысль прекрасно понимаю.
Немного изменил механизм вызова функции CryptFindOIDInfo

Код:

ALG_ID algClass = GET_ALG_CLASS(algID);
const char* type =
    algClass == ALG_CLASS_HASH         ? "Hash" :
    algClass == ALG_CLASS_SIGNATURE    ? "Signature" :
    algClass == ALG_CLASS_KEY_EXCHANGE ? "KeyExchange" :
    algClass == ALG_CLASS_DATA_ENCRYPT ? "Cipher" : "other";

for(DWORD groupId = CRYPT_FIRST_ALG_OID_GROUP_ID; groupId <= CRYPT_LAST_ALG_OID_GROUP_ID; groupId++) {
    PCCRYPT_OID_INFO pOid = CryptFindOIDInfo(CRYPT_OID_INFO_ALGID_KEY, &algID, groupId);

    if(pOid != NULL) {
        const char* oidGroupId =
            groupId == CRYPT_HASH_ALG_OID_GROUP_ID     ? "HASH_ALG" :
            groupId == CRYPT_HASH_ALG_OID_GROUP_ID     ? "HASH_ALG" :
            groupId == CRYPT_ENCRYPT_ALG_OID_GROUP_ID  ? "ENCRYPT_ALG" :
            groupId == CRYPT_PUBKEY_ALG_OID_GROUP_ID   ? "PUBKEY_ALG" :
            groupId == CRYPT_SIGN_ALG_OID_GROUP_ID     ? "SIGN_ALG" :
            groupId == CRYPT_RDN_ATTR_OID_GROUP_ID     ? "RDN_ATTR" :
            groupId == CRYPT_EXT_OR_ATTR_OID_GROUP_ID  ? "EXT_OR_ATTR" :
            groupId == CRYPT_ENHKEY_USAGE_OID_GROUP_ID ? "ENHKEY_USAGE" :
            groupId == CRYPT_POLICY_OID_GROUP_ID       ? "POLICY" :
            groupId == CRYPT_TEMPLATE_OID_GROUP_ID     ? "TEMPLATE" : "N/A";

        // печатаем OID алгоритма и тип алгоритма
        fprintf(stderr, "algInfo name:%s longName:%s algId:%d(%X) type:%s OID:%s OID.alg=%d(%X) OID_groupId:%d:%s \n",
            alg->szName, alg->szLongName,
            alg->aiAlgid, alg->aiAlgid,
            type,
            pOidInf->pszOID,
            pOidInf->Algid,
            pOidInf->Algid,
            pOidInf->dwGroupId,
            oidGroupId);
    }
}

Получаем список алгоритмов и неких OID.

Код:

Crypto-Pro GOST R 34.10-2001 KC1 CSP
algInfo name:GOST 28147-89     longName:GOST 28147-89            algId:26142(661E) type:Cipher      OID:1.2.643.2.2.21 OID.alg=26142(661E) OID_groupId:2:ENCRYPT_ALG 
algInfo name:GOST R 34.11-94   longName:GOST R 34.11-1994 256    algId:32798(801E) type:Hash        OID:1.2.643.2.2.3  OID.alg=32798(801E) OID_groupId:4:HASH_ALG 
algInfo name:GOST R 34.11-94   longName:GOST R 34.11-1994 256    algId:32798(801E) type:Hash        OID:1.2.643.2.2.3  OID.alg=32798(801E) OID_groupId:4:SIGN_ALG 
algInfo name:GOST R 34.10-2001 longName:GOST R 34.10-2001 256    algId:11811(2E23) type:Signature   OID:1.2.643.2.2.19 OID.alg=11811(2E23) OID_groupId:3:PUBKEY_ALG 
algInfo name:DH 34.10-2001     longName:GOST R 34.10-2001 256 DH algId:43556(AA24) type:KeyExchange OID:1.2.643.2.2.98 OID.alg=43556(AA24) OID_groupId:3:PUBKEY_ALG 


Crypto-Pro GOST R 34.10-2012 KC1 CSP
algInfo name:GOST 28147-89 longName:GOST 28147-89                algId:26142(661E) type:Cipher      OID:1.2.643.2.2.21 OID.alg=26142(661E)    OID_groupId:2:ENCRYPT_ALG 
algInfo name:GR 34.11-2012 256 longName:GOST R 34.11-2012 256    algId:32801(8021) type:Hash        OID:1.2.643.7.1.1.2.2 OID.alg=32801(8021) OID_groupId:1:HASH_ALG 
algInfo name:GR 34.11-2012 256 longName:GOST R 34.11-2012 256    algId:32801(8021) type:Hash        OID:1.2.643.7.1.1.2.2 OID.alg=32801(8021) OID_groupId:1:SIGN_ALG 
algInfo name:GR 34.10-2012 256 longName:GOST R 34.10-2012 256    algId:11849(2E49) type:Signature   OID:1.2.643.7.1.1.1.1 OID.alg=11849(2E49) OID_groupId:3:PUBKEY_ALG 
algInfo name:DH 34.10-2012 256 longName:GOST R 34.10-2012 256 DH algId:43590(AA46) type:KeyExchange OID:1.2.643.7.1.1.6.1 OID.alg=43590(AA46) OID_groupId:3:PUBKEY_ALG 


Crypto-Pro GOST R 34.10-2012 KC1 Strong CSP
algInfo name:GOST 28147-89 longName:GOST 28147-89                algId:26142(661E) type:Cipher      OID:1.2.643.2.2.21 OID.alg=26142(661E)    OID_groupId:2:ENCRYPT_ALG 
algInfo name:GR 34.11-2012 512 longName:GOST R 34.11-2012 512    algId:32802(8022) type:Hash        OID:1.2.643.7.1.1.2.3 OID.alg=32802(8022) OID_groupId:1:HASH_ALG 
algInfo name:GR 34.11-2012 512 longName:GOST R 34.11-2012 512    algId:32802(8022) type:Hash        OID:1.2.643.7.1.1.2.3 OID.alg=32802(8022) OID_groupId:1:SIGN_ALG 
algInfo name:GR 34.10-2012 512 longName:GOST R 34.10-2012 512    algId:11837(2E3D) type:Signature   OID:1.2.643.7.1.1.1.2 OID.alg=11837(2E3D) OID_groupId:3:PUBKEY_ALG 
algInfo name:DH 34.10-2012 512 longName:GOST R 34.10-2012 512 DH algId:43586(AA42) type:KeyExchange OID:1.2.643.7.1.1.6.2 OID.alg=43586(AA42) OID_groupId:3:PUBKEY_ALG 

Подскажите, как надо правильно сделать, чтобы алгоритм «GOST R 34.11-94» отдал свой OID «1.2.643.2.2.9», а алгоритм «GOST R 34.10-2001» отдал свой OID «1.2.643.2.2.3» ?


Вверх


Offline

Максим Коллегин

 


#8
Оставлено
:

11 апреля 2016 г. 11:39:05(UTC)

Максим Коллегин

Статус: Сотрудник

Группы: Администраторы

Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,332
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 21 раз
Поблагодарили: 682 раз в 601 постах

У алгоритма подписи нет algidа, но он может идтенифицировать парой — алгидом ключа и хэша, для получения оида для алгоритма хэширования укажите CRYPT_HASH_ALG_OID_GROUP_ID в CryptFindOIDInfo.

У Вас ошибка в выводе, вот для 0x801E:

Код:


    ALG_ID algID = 0x801E;

    for (DWORD groupId = CRYPT_FIRST_ALG_OID_GROUP_ID; groupId <= CRYPT_LAST_ALG_OID_GROUP_ID; groupId++) {
	PCCRYPT_OID_INFO pOid = CryptFindOIDInfo( CRYPT_OID_INFO_ALGID_KEY, &algID, groupId );

	if (pOid != NULL) {
	    const char* oidGroupId =
		groupId == CRYPT_HASH_ALG_OID_GROUP_ID ? "HASH_ALG" :
		groupId == CRYPT_ENCRYPT_ALG_OID_GROUP_ID ? "ENCRYPT_ALG" :
		groupId == CRYPT_PUBKEY_ALG_OID_GROUP_ID ? "PUBKEY_ALG" :
		groupId == CRYPT_SIGN_ALG_OID_GROUP_ID ? "SIGN_ALG" :
		groupId == CRYPT_RDN_ATTR_OID_GROUP_ID ? "RDN_ATTR" :
		groupId == CRYPT_EXT_OR_ATTR_OID_GROUP_ID ? "EXT_OR_ATTR" :
		groupId == CRYPT_ENHKEY_USAGE_OID_GROUP_ID ? "ENHKEY_USAGE" :
		groupId == CRYPT_POLICY_OID_GROUP_ID ? "POLICY" :
		groupId == CRYPT_TEMPLATE_OID_GROUP_ID ? "TEMPLATE" : "N/A";

	    // печатаем OID алгоритма и тип алгоритма
	    fprintf( stderr, "%S, OID:%s OID.alg=%d(%X) OID_groupId:%d:%s \n",
		pOid->pwszName,
		pOid->pszOID,
		pOid->Algid,
		pOid->Algid,
		pOid->dwGroupId,
		oidGroupId );
	}
    }

Код:

GOST R 34.11-94, OID:1.2.643.2.2.9 OID.alg=32798(801E) OID_groupId:1:HASH_ALG
GOST R 34.11/34.10-2001, OID:1.2.643.2.2.3 OID.alg=32798(801E) OID_groupId:4:SIGN_ALG

Знания в базе знаний, поддержка в техподдержке


Вверх

WWW


Offline

Максим Коллегин

 


#9
Оставлено
:

11 апреля 2016 г. 11:42:21(UTC)

Максим Коллегин

Статус: Сотрудник

Группы: Администраторы

Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,332
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 21 раз
Поблагодарили: 682 раз в 601 постах

Получение оида подписи:

Код:


ALG_ID algID[2] = { 0x801E, 0x2e23 };
DWORD groupId = CRYPT_SIGN_ALG_OID_GROUP_ID;
PCCRYPT_OID_INFO pOid = CryptFindOIDInfo( CRYPT_OID_INFO_ALGID_KEY, &algID, groupId );

Отредактировано пользователем 11 апреля 2016 г. 11:42:58(UTC)
 | Причина: Не указана

Знания в базе знаний, поддержка в техподдержке


Вверх

WWW


Offline

miser

 


#10
Оставлено
:

11 апреля 2016 г. 13:34:13(UTC)

miser

Статус: Активный участник

Группы: Участники

Зарегистрирован: 14.03.2011(UTC)
Сообщений: 152
Мужчина
Откуда: Санкт-Петербург

Сказал «Спасибо»: 1 раз
Поблагодарили: 7 раз в 5 постах

Перепроверил свой код. Нашел пропавший OID хеш функции. Ох, как всё сложно и не похоже на старый Win CSP 3.6. Вроде, всё то же самое, а проверок надо делать значительно больше.


Вверх

Пользователи, просматривающие эту тему

Guest

Быстрый переход
 

Вы не можете создавать новые темы в этом форуме.

Вы не можете отвечать в этом форуме.

Вы не можете удалять Ваши сообщения в этом форуме.

Вы не можете редактировать Ваши сообщения в этом форуме.

Вы не можете создавать опросы в этом форуме.

Вы не можете голосовать в этом форуме.

Понравилась статья? Поделить с друзьями:

Интересное по теме:

  • Описание феномена фундаментальная ошибка атрибуции принадлежит кому
  • Оплата не произведена ошибка сервера 101
  • Определение типовых ошибок конфигурации stp практическая работа
  • Описание сериала врачебная ошибка
  • Описание ошибки контрольная марка не проверена

  • Добавить комментарий

    ;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: