Крипто-Про SSPI |
Она обрабатывает входящие handshake-сообщения, и возвращает ответные handshake-сообщения, которые сервер должен передать клиенту.
SECURITY_STATUS AcceptSecurityContext( PCredHandle phCredential, PCtxtHandle phContext, PSecBufferDesc pInput, ULONG fContextReq, ULONG TargetDataRep, PCtxtHandle phNewContext, PSecBufferDesc pOutput, PULONG pfContextAttr, PTimeStamp ptsExpiry );
Флаг | Описание |
---|---|
ASC_REQ_REPLAY_DETECT | Защита от навязывания повторных пакетов |
ASC_REQ_SEQUENCE_DETECT | Защита от навязывания перестановок пакетов |
ASC_REQ_CONFIDENTIALITY | Конциденциальность (шифрование) |
ASC_REQ_STREAM | Соединение потокового типа |
ASC_REQ_ALLOCATE_MEMORY | SSP отводит память для буферов. Ее необходимо освободить вызовом FreeContextBuffer |
ASC_REQ_EXTENDED_ERROR | Уведомлять другую сторону об ошибках (SSL alerts) |
ASC_REQ_CONNECTION | Неформатированные сообщения |
ASC_REQ_MUTUAL_AUTH | Взаимная аутентификация |
ASC_REQ_USE_SUPPLIED_CREDS | SSP не будет пытаться искать удостоверение, если оно не предоставлено приложением |
ASC_REQ_MANUAL_CRED_VALIDATION | SSP не будет проверять удостоверение другой стороны |
Коды возврата | Описание |
---|---|
SEC_E_OK | Контекст безопасности был успешно установлен. Дальнейших вызовов к этой функции не требуется. Если функция вернула данные в pOutput, их следует переслать клиенту. |
SEC_E_INCOMPLETE_MESSAGE | Данные во входном буфере неполны. Приложение должно прочитать остальные данные, и снова вызвать AcceptSecurityContext . |
SEC_I_CONTINUE_NEEDED | Сервер должен послать выходные данные клиенту и ждать ответа от клиента. Полученный ответ полжен быть передан при следующем вызове в AcceptSecurityContext через параметр pInput . |
Коды возврата | Описание |
---|---|
SEC_E_INVALID_TOKEN | Параметр pInput содержит неправильные входные данные. |
SEC_E_INVALID_HANDLE | Параметр phContext содержит недействительный дескриптор контекста. |
SEC_E_UNSUPPORTED_FUNCTION | Параметр fContextReq содержит неподдерживаемый набор флагов. |
SEC_E_INSUFFICIENT_MEMORY | Один из буферов оказался слишком мал. См. заметки. |
На стороне клиента
для создания контекста используется парная функция InitializeSecurityContext.
При получении кода ошибки SEC_E_INSUFFICIENT_MEMORY, укажите
атрибут ASC_REQ_ALLOCATE_MEMORY в fContextReq .
Вызывающее приложение должно определить допустимость атрибутов
установленного контекста. Например, если конфиденциальность
соединения была запрошена, но не была достигнута, некоторые
приложения должны принять решение немедленно прекратить соединение.
Если контекст не смог быть установлен, сервер должен удалить
частично созданный контекст вызовом DeleteSecurityContext.
После установления контекста, серверное приложение может с помощью
функции QuerySecurityContextToken получить дескриптор пользователя,
которому сопоставлен сертификат клиента, и использовать его для
имперсонализации пользователя.
Windows
NT/2000/XP/2003: Необходимо Windows 2000 SP4 или старше с
Internet Explorer 6.0 или старше.
Windows
95/98/ME: CSP 3.0 не поддерживает (см. КриптоПро CSP
2.0 ).
Solaris: 9
Update 4 или выше.
FreeBSD:
FreeBSD 5.2 или выше
Linux: RedHat
7.3, RedHad 9.0.
Файл описания:
Прототип описан в файле sspi.h.
AcquireCredentialsHandle() ,CtxtHandle ,DeleteSecurityContext() ,InitializeSecurityContext() ,SecBuffer ,SecBufferDesc ,FreeContextBuffer() ,TimeStamp
Что Вы
думаете по поводу данной статьи? |
Закажите CD c Крипто-Про CSP |