| Предыдущий | Следующий |
| XENROLL_E_RESPONSE_UNEXPECTED_KA_HASH | XENROLL_E_KEYSPEC_SMIME_MISMATCH |
XENROLL_E_RESPONSE_KA_HASH_MISMATCH
Практический смысл
XENROLL_E_RESPONSE_KA_HASH_MISMATCH (0x80095004) — код ошибки из области certificate enrollment / XEnroll. Короткий ориентир по имени: ответ / key agreement / hash / несоответствие. Для диагностики важнее определить первый API и состояние объекта в момент возврата, чем переводить символическое имя как общее сообщение.
Исходное условие в техническом описании сформулировано так: key-archival integrity binding.
. Эту формулировку следует сопоставлять с фактическим параметром, handle, файлом или state transition в trace.
Что именно нужно отделить
Разделяйте создание ключа, выбор KeySpec/провайдера, проверку ответа CA и установку сертификата. Ошибка одного шага не доказывает, что ключ, цепочка или хранилище повреждены целиком.
Для этого кода особенно полезно различать два признака из исходной документации: 2. Encrypted private-key blob and archive-key-hash attribute presence and value Check for response/request mix-up, re-encoding, proxy transformation, or incorrect CA exchange certificate.
и For key-archival integrity binding, these observations are deliberately nonsecret: identifiers, lengths, provider names, policy selections, and state transitions usually support comparison without recording private keys, passwords, PINs, or plaintext.
. Они задают более узкую границу, чем название facility.
Что сохранить до изменений
- enrollment API и стадия request/response/install
- provider, KeySpec и export policy без сохранения приватного ключа
- thumbprint/issuer/subject и назначение целевого certificate store
- полученный CA response и первый native HRESULT до UI/wrapper
- Сопоставьте trace с исходным признаком:
In the path, CertEnroll method sequence, template or extension choices, and the store targeted during installation.
- Сопоставьте trace с исходным признаком:
This is stronger than a missing attribute: both sides supplied a value, but they do not bind to the same archived key.
- Сопоставьте trace с исходным признаком:
3. CA configuration, archival certificate, hash algorithm, and client object state Treat the mismatch as an integrity failure and do not install the response automatically.
Как проверить причину
- Проверьте именно границу «ответ / key agreement / hash / несоответствие» и зафиксируйте объект, аргумент или состояние, которое её подтверждает.
- Сверьте наблюдаемое состояние с отдельным исходным признаком:
Provider and nonsecret key properties captured before request initialization in a key-archival integrity binding investigation.
.
Безопасное восстановление
Меняйте только подтверждённый enrollment prerequisite: provider/KeySpec, свойства ключа, CA response или права на store. Не пересоздавайте ключ и не импортируйте root вручную без доказательства соответствующей причины.
Регрессионная проверка должна отдельно контролировать условие CertEnroll holds state across key creation, request encoding, submission, response parsing, and installation.
. Положительный тест обязан проходить после узкого исправления, а отрицательный — по-прежнему воспроизводить ожидаемый отказ на заведомо неверном состоянии.
Технические ссылки
- Microsoft Open Specifications: HRESULT values
- Microsoft: CMC Key Archival Request
- Microsoft: IX509AttributeArchiveKeyHash
- RFC 5652: Cryptographic Message Syntax
Нужно найти другой код? Найти другой код состояния или ошибки.