| Предыдущий | Следующий |
| NTE_BAD_PUBLIC_KEY | NTE_PROV_TYPE_NOT_DEF |
NTE_BAD_KEYSET
NTE_BAD_KEYSET (0x80090016) — классическая ошибка CryptoAPI, означающая, что запрошенный контейнер ключей не удалось открыть. Контейнер может отсутствовать, быть недоступен текущему удостоверению либо запрашиваться с неправильным поставщиком или областью хранилища ключей.
Постоянные и временные контексты ключей
Контейнер ключей определяется сочетанием поставщика и имени контейнера. Код, который только хеширует данные, шифрует временными ключами или проверяет подписи, обычно не нуждается в постоянном контейнере закрытого ключа и может получить контекст с помощью CRYPT_VERIFYCONTEXT. Код, которому нужен постоянный закрытый ключ, должен открыть нужный контейнер от имени и в области, где этот ключ был создан.
Полезные проверки
- Проверьте имя и тип поставщика, имя контейнера и то, ожидает ли приложение пользовательский или машинный набор ключей.
- Для служб проверяйте учётную запись службы и выбор профиля либо машинного набора ключей, а не только работу из интерактивной учётной записи администратора.
- Создавайте контейнер с помощью
CRYPT_NEWKEYSETтолько когда приложение формирует собственный новый ключевой материал. Отсутствующий контейнер также может означать недоступность существующего ключа или использование неправильного удостоверения. - Сохраняйте стабильную схему имён контейнеров: смена поставщика или области заставит существующий контейнер выглядеть отсутствующим.
См. документацию Microsoft по CryptAcquireContext.
Нужно найти другой код? Найти другой код состояния или ошибки.