| Предыдущий | Следующий |
| NTE_UI_REQUIRED | NTE_DEVICE_NOT_READY |
NTE_HMAC_NOT_SUPPORTED
NTE_HMAC_NOT_SUPPORTED следует интерпретировать на границе поддержки HMAC. Активный поставщик или тип ключа не может выполнить запрошенную конструкцию keyed-hash, хотя другие операции хэширования или подписи могут быть доступны. Полезный диагностический вопрос — какой конкретный объект и операция заставили Windows выбрать именно этот HRESULT, а не работает ли в целом некий ключ, сертификат, учётная запись, файл или устройство.
Что именно устанавливает этот код
Для этого результата возможность определяется выбранным поставщиком, типом ключа, реализацией алгоритма, режимом операции и политикой использования ключа. Наличие имени алгоритма в Windows не гарантирует, что каждый CSP, KSP, аппаратный токен или сохранённый ключ поддерживает все связанные операции HMAC.
Что сохранить до изменения состояния
| Запишите | Почему это важно для данного кода |
|---|---|
| поставщик и тип ключа, идентификатор алгоритма, режим операции, padding и запрошенное свойство | При этом результате это отделяет возможности платформы от ограничения конкретного поставщика или ключа. |
| перечисленные возможности поставщика и уровень функций аппаратуры или прошивки | При этом результате это связывает сбой с конкретным алгоритмом и режимом операции. |
| ограничения использования ключа и результат той же операции с программным ключом | При этом результате это не позволяет незаметно изменить требования протокола. |
Проверки, специфичные для кода:
- Убедитесь, что приложение запросило HMAC, а не обычный hash или асимметричную подпись.
- Перечислите алгоритмы поставщика и проверьте, предоставляется ли требуемый hash для использования в HMAC.
- Не подменяйте HMAC неключевым hash; используйте поставщика и объект ключа, которые явно поддерживают требуемый MAC.
Что включать в пакет для эскалации
Сопоставьте последнюю успешную операцию с установкой или обновлением поставщика, созданием или обновлением ключа, изменениями профиля или сеанса, подключением и отключением устройства, обновлением политик и первым неудачным вызовом. При исследовании HMAC порядок важен: ошибка сразу после миграции ключа указывает на другую границу, чем сбой после смены учётной записи службы.
- Для этого результата подготовьте минимальный пример с именем API, поставщика, ключа или контейнера, флагами и размерами нечувствительных входных данных.
- Для этого пути сохраните события поставщика, устройства, профиля и ОС за период от последнего успеха до первого сбоя.
- Для этого пути сохраните заведомо исправный контрольный результат с той же идентичностью, архитектурой и выбором поставщика.
Процедура локализации
Проверьте нужный примитив с документированным программным поставщиком и временным ключом того же алгоритма и размера, затем выполните минимальную поддерживаемую операцию у производственного поставщика. Эти два контроля отделяют отсутствие возможности платформы от ограничения конкретного ключа или устройства.
- Сохраните исходный ввод, идентичность, выбор поставщика или протокола и первое возвращённое значение для этого результата.
- Используйте один заведомо исправный контроль, меняющий только подозреваемую часть пути HMAC.
- Где это безопасно, выполните обратное сравнение с заведомо исправным вводом на том же сбойном слое.
- Фиксируйте место первого расхождения в пути HMAC, а не оценивайте только итоговое сообщение приложения.
Типичные ошибочные действия
Этот результат уже, чем NTE_NOT_SUPPORTED, и должен вести прямо к проверке возможностей поставщика и алгоритма. Переход на другой алгоритм только ради исчезновения ошибки может нарушить требования протокола, шаблона сертификата или совместимости. Сначала установите, какая именно обязательная возможность отсутствует и где.
Для поддержки HMAC также сохраняйте исходное числовое значение: соседние константы могут требовать существенно разного восстановления, даже если приложение показывает их все как ошибку аутентификации, сертификата или безопасности.
Как доказать работоспособность нужного пути
Для этого результата предназначенные поставщик и ключ должны выполнять требуемый примитив с нужными параметрами; резервный алгоритм или другой ключ не подтверждают исходный проект. Сохраните регрессионный тест с нечувствительными идентификаторами и ожидаемыми результатами, включая один отрицательный контроль, который должен по-прежнему завершаться ошибкой.
Технические ссылки
Эти источники определяют HRESULT и соответствующий интерфейс, протокол или формат данных поддержки HMAC.
- Открытые спецификации Microsoft: значения HRESULT.
- Microsoft: функции примитивной криптографии CNG.
- NIST FIPS 198-1: код аутентификации сообщений на основе ключевого хэша.
Нужно найти другой код? Найти другой код состояния или ошибки.