Избавляемся от ошибки 0x80090016 "неправильный зарегистрированный набор ключей"
Ошибка 0x80090016 «Недопустимый набор зарегистрированных клавиш» или ошибка доступа к контейнеру для закрытого ключа «набор клавиш« Не существует »может появиться по разным причинам. У нас есть новая версия CryptoPro для MacOS 4 по 5. В этой статье мы расскажем вам, как исправить эту ошибку. В нашем руководстве мы видим, что есть много общих правил для пользователей MacOS и Windows. Если вы не можете исправить эту ошибку, обратитесь к нашим экспертам за помощью.
- Извлеките подставку EDS из устройства. Это необходимо для того, чтобы подставка ЭЦП и контейнер закрытого ключа не влияли на работу КриптоПро.
- Удалите установленный проблемный сертификат ЭЦП из личного хранилища сертификатов.
- Вставьте носитель EDS в устройство. Иногда может возникнуть проблема с отображением контейнера в КриптоПро. В этом случае извлеките подставку EDS и вставьте ее в другой порт устройства.
- Переустановите сертификат электронной подписи.
Инструкции по применению электронной подписи.
Если сертификат ЭЦП удалили, а установить повторно не получается.
Наиболее распространенными ошибками при обращении к контейнеру закрытого ключа являются ошибка 0x80090016, «Неправильный набор зарегистрированных клавиш», или «Набор ключей не существует». Вы можете полностью удалить CryptoPro и установить новый, если ошибка продолжает вас беспокоить.
Удалите КриптоПро из реестра Windows: Как
Если ошибка 0x80090016 продолжает появляться и ничего не помогло.
Коды ошибок из библиотек tspcli и ocspcli
Библиотеки tspcli.dll (libtrsl) и ocspcly.so могут возвращать собственные коды ошибок, связанные с работой библиотек. Коды ошибок введены для более быстрой и качественной локализации возникшей ошибки.
Все перечисленные ошибки доступны в библиотеках TSPCLI и OCPPCC. Здесь показано, как найти текстовое описание ошибки с помощью кода.
C/C
if (! /* Вызов функции библиотеки */ )
{
DWORD dwErr = GetLastError();
wchar_t buf [1024];
DWORD dwFlagsMod = FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_HMODULE;
BOOL dwRet = CadesFormatMessage(dwFlagsMod, 0, dwErr, 0, buf, sizeof(buf), NULL);
DWORD dwFlagsSys = FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM;
if (!dwRet)
{
dwRet = FormatMessage(dwFlagsSys, 0, dwErr, 0, buf, sizeof(buf), NULL);
}
if (dwRet)
std::cout << buf << std::endl;
}