| Предыдущий | Следующий |
| SEC_I_ASYNC_CALL_PENDING | NS_S_CALLPENDING |
CRYPT_I_NEW_PROTECTION_REQUIRED
Как расследовать HRESULT CRYPT_I_NEW_PROTECTION_REQUIRED
Код CRYPT_I_NEW_PROTECTION_REQUIRED, числовое значение 0x00091012, фиксирует конкретный результат операции. Защищённые данные необходимо защитить повторно.
Старший бит HRESULT делает значение успешным или информационным результатом. Эта константа объявлена в winerror.h и относится к области «CryptoAPI и обработка криптографических сообщений».
Почему важен контекст вызова
HRESULT относится к CryptoAPI: кодированию ASN.1, подписи, хэшированию, ключевому контейнеру, сертификату или проверке криптографического сообщения. Необходимо сохранить первичные байты и параметры алгоритма, потому что повторное кодирование может уничтожить признаки исходного дефекта.
Минимальный набор свидетельств
- Для сравнения с исправным случаем нужно получить расширенную ошибку провайдера до выполнения следующего криптографического вызова.
- До повторной попытки нужно записать этап: decode, verify, sign, encrypt, decrypt или chain build.
Как локализовать причину
- Определить первый CryptoAPI-вызов, вернувший этот HRESULT; все остальные условия оставьте неизменными.
- Проверить структуру входных данных независимым ASN.1/CMS-анализатором без их изменения; не удаляйте исходные данные до завершения сравнения.
- Сопоставить OID, тип ключа, размер ключа и допустимые алгоритмы политики; повторите шаг на исправном контрольном примере.
- Проверить доступ к ключу в том же пользовательском и машинном контексте; сохраните первый hresult и точное время результата.
- Повторить операцию на сохранённом входе и убедиться, что результат воспроизводим; отдельно отметьте изменение состояния объекта.
Как доказать исправление
Корректирующее действие для него должно устранять условие «Защищённые данные необходимо защитить повторно» на уровне транзакция.
Полезные материалы
- Microsoft: CryptProtectData
- Microsoft: HRESULT structure
- Microsoft: значения HRESULT
- Портал криптографии Windows
Нужно найти другой код? Найти другой код состояния или ошибки.