DWORD CAPI_EXTC UnSeal( ktls_gost_handle h, CPKTLS_HANDLE hCtx, IN OUT PSecBufferDesc Message, IN ULONG MessageSeqNo, OUT PULONG pfQOP );
Функция не может быть вызвана асинхронно (одновременно из разных нитей) над одним и тем же контекстом. Последовательность пакетов существенна для TLS.
Коды возврата | Описание |
---|---|
SEC_E_INVALID_HANDLE | Параметр phContext содержит недействительный дескриптор контекста. |
SEC_E_INVALID_TOKEN | Параметр pInput содержит неправильные входные данные. |
SEC_E_INCOMPLETE_MESSAGE | Данные во входном буфере неполны. Приложение должно прочитать остальные данные, и повторить вызов. При этом буфер с данными (SECBUFFER_DATA) и первый пустой буфер (SECBUFFER_EMPTY) будут содержать длину недостающих данных и иметь тип SECBUFFER_EMPTY. |
SEC_I_RENEGOTIATE | Другая сторона запросила renegotiate. См. заметки. |
SEC_I_CONTEXT_EXPIRED | Другая сторона закрыла соединение. |
Код возврата SEC_I_RENEGOTIATE означает, что отправитель хочет переустановить соединение. В этом случае необходимо экспортировать контекст в пользовательский процесс и там вызвать AcceptSecurityContext (для сервера) или InitializeSecurityContext (для клиента), передав пустой входной буфер. После этого первого вызова, повторяется та же цепочка действий, что и при первоначальном создании контекста.
ImportContext() ,ExportContext() ,DeleteContext() ,Seal() ,SecBuffer ,SecBufferDesc