Что означает код HRESULT 0x80091008 (CRYPT_E_INVALID_INDEX)?

 
Предыдущий Следующий
CRYPT_E_HASH_VALUE CRYPT_E_ALREADY_DECRYPTED

CRYPT_E_INVALID_INDEX

Что означает CRYPT_E_INVALID_INDEX

CRYPT_E_INVALID_INDEX: Запрошен signer, recipient, certificate, CRL или attribute по индексу, который не существует в текущем состоянии сообщения.

Что проверить

  • Сначала получите актуальный count через соответствующий CryptMsgGetParam и проверьте границы.
  • После удаления signer/certificate/CRL или unauthenticated attribute заново вычисляйте индексы: последующие элементы могут сместиться.
  • Не переносите cached index между разными message handles или новым циклом decode.

Что делать

Исправление должно привязать индекс к конкретному message state. Проверка только на отрицательное значение недостаточна: верхняя граница зависит от реально декодированного содержимого и может меняться во время обработки.

Технические ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.