| Предыдущий | Следующий |
| XENROLL_E_RESPONSE_KA_HASH_MISMATCH | TRUST_E_SYSTEM_ERROR |
XENROLL_E_KEYSPEC_SMIME_MISMATCH
Практический смысл
XENROLL_E_KEYSPEC_SMIME_MISMATCH — код ошибки из области certificate enrollment / XEnroll. Короткий ориентир по имени: key spec / S/MIME / несоответствие. Для диагностики важнее определить первый API и состояние объекта в момент возврата, чем переводить символическое имя как общее сообщение.
Исходное условие в техническом описании сформулировано так: key usage versus S/MIME extension.
. Эту формулировку следует сопоставлять с фактическим параметром, handle, файлом или state transition в trace.
Что именно нужно отделить
Разделяйте создание ключа, выбор KeySpec/провайдера, проверку ответа CA и установку сертификата. Ошибка одного шага не доказывает, что ключ, цепочка или хранилище повреждены целиком.
Для этого кода особенно полезно различать два признака из исходной документации: key usage versus S/MIME extension.
и Changing the display name or certificate store will not resolve a semantic mismatch between key purpose and extension content., marking a replacement key exportable or changing KeySpec only to pass enrollment can violate the original protection and usage requirements.
. Они задают более узкую границу, чем название facility.
Что сохранить до изменений
- enrollment API и стадия request/response/install
- provider, KeySpec и export policy без сохранения приватного ключа
- thumbprint/issuer/subject и назначение целевого certificate store
- полученный CA response и первый native HRESULT до UI/wrapper
- Сопоставьте trace с исходным признаком:
Provider, key name, algorithm, key specification, export policy, and hardware backing Record KeySpec, key usage, EKU, SMIME capabilities extension, provider type, and template. Shows how client request state is bound to key or CA response state.
- Сопоставьте trace с исходным признаком:
CertEnroll is coordinating request construction with a private key owned by a CSP, KSP, or hardware device in a key usage versus S/MIME extension investigation. Exportability, key specification, intended usage, and provider policy are established before or during key creation and cannot always be changed after the key exists.
- Сопоставьте trace с исходным признаком:
Template or extension values describing signing, encryption, or S/MIME use Check whether the certificate is intended for signing, key exchange/encryption, or both. Separates local key policy from certificate and trust-store decisions.
Как проверить причину
- Проверьте именно границу «key spec / S/MIME / несоответствие» и зафиксируйте объект, аргумент или состояние, которое её подтверждает.
- Сверьте наблюдаемое состояние с отдельным исходным признаком:
In the path, CertEnroll method sequence, template or extension choices, and the store targeted during installation.
.
Безопасное восстановление
Меняйте только подтверждённый enrollment prerequisite: provider/KeySpec, свойства ключа, CA response или права на store. Не пересоздавайте ключ и не импортируйте root вручную без доказательства соответствующей причины.
Регрессионная проверка должна отдельно контролировать условие Provider and nonsecret key properties captured before request initialization in a key usage versus S/MIME extension investigation.
. Положительный тест обязан проходить после узкого исправления, а отрицательный — по-прежнему воспроизводить ожидаемый отказ на заведомо неверном состоянии.
Технические ссылки
- Microsoft Open Specifications: HRESULT values
- Microsoft: IX509CertificateRequestCmc
- Microsoft: CNG Key Storage Providers
- RFC 5280: Internet X.509 PKI profile
Нужно найти другой код? Найти другой код состояния или ошибки.