Что означает код HRESULT 0x80090318 (SEC_E_INCOMPLETE_MESSAGE)?

 
Предыдущий Следующий
SEC_E_CONTEXT_EXPIRED SEC_E_INCOMPLETE_CREDENTIALS

SEC_E_INCOMPLETE_MESSAGE

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

SEC_E_INCOMPLETE_MESSAGE (0x80090318) — Получен не весь защищённый протоколом пакет; для обработки нужны дополнительные байты.

Код возникает на границе защищённого сетевого протокола и SSPI/Schannel. Сохраняйте первый HRESULT вместе с функцией, пакетом безопасности, target name, атрибутами контекста и фактическим состоянием TLS/транспорта; верхнеуровневое сообщение приложения часто теряет эту информацию.

Этот код не означает плохую подпись. Он говорит, что буфер закончился раньше полного security record/token; сетевой код должен сохранить хвост и дочитать данные, а не начинать новую аутентификацию.

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

  • Сохраните размер входного SecBuffer и значение SECBUFFER_MISSING/EXTRA, если package его возвращает.
  • Дочитайте недостающие bytes и повторите обработку полного record/token; не теряйте уже полученный prefix.
  • Если transport фреймит данные отдельно, проверьте, что границы recv/read не принимаются за границы TLS/SSPI message.

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


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