스트림 컨텍스트
스트림 컨텍스트는 SSL 또는 PCT와 같은 보안 스트림 지향 프로토콜을 처리합니다. 동일한 인터페이스 및 유사한 자격 증명 관리를 공유하기 위해 SSPI는 스트림 컨텍스트에 대한 지원을 제공합니다. 보안 프로토콜은 스트림 인증 체계와 레코드 형식을 모두 통합합니다.
스트림 지향 프로토콜을 제공하기 위해 스트림 컨텍스트 를 지원하는 보안 패키지 에는 다음과 같은 프로세스 특성이 있습니다.
패키지는 SECPKG_FLAG_STREAM 플래그를 설정하여 스트림 의미 체계를 지원함을 나타냅니다.
전송 애플리케이션은 InitializeSecurityContext(일반) 및 AcceptSecurityContext(일반) 함수에 대한 호출에서 ISC_REQ_STREAM 및 ASC_REQ_STREAM 플래그를 설정하여 스트림 의미 체계를 요청 합니다.
애플리케이션은 SecPkgContext_StreamSizes 구조를 사용하여 QueryContextAttributes(일반) 함수를 호출하여 제공할 버퍼 수와 헤더 또는 트레일러에 예약할 크기에 대한 보안 컨텍스트를 쿼리합니다.
애플리케이션은 데이터의 실제 처리 중에 예비할 버퍼 설명자를 제공합니다. 호출자는 스트림 의미 체계를 지정하여 보안 패키지 가 메시지 차단을 처리할 수 있도록 추가 처리를 수행하려는 의지를 나타냅니다. 기본적으로 MakeSignature 및 VerifySignature 함수의 경우 호출자는 버퍼 목록을 전달합니다. 스트림 지향 채널(예: TCP 포트)에서 메시지를 받으면 호출자는 다음과 같이 버퍼 목록을 전달합니다.
Buffer 길이 버퍼 유형 1 메시지 길이 SECBUFFER_DATA 2 0 SECBUFFER_EMPTY 3 0 SECBUFFER_EMPTY 4 0 SECBUFFER_EMPTY 5 0 SECBUFFER_EMPTY 그런 다음, 보안 패키지는 BLOB에서 작동합니다. 함수가 성공적으로 반환되면 버퍼 목록은 다음과 같습니다.
Buffer 길이 버퍼 유형 1 머리글 길이 SECBUFFER_STREAM_HEADER 2 데이터 길이 SECBUFFER_DATA 3 예고편 길이 SECBUFFER_STREAM_TRAILER 4 0 SECBUFFER_EMPTY 5 0 SECBUFFER_EMPTY 패키지는 길이가 x이고 버퍼 형식이 SECBUFFER_EXTRA 버퍼 #4를 반환하여 이 버퍼의 데이터가 다음 레코드의 일부이며 아직 처리되지 않았음을 나타낼 수도 있습니다. 반대로 메시지 함수가 SEC_E_INCOMPLETE_MESSAGE 오류 코드를 반환하는 경우 반환된 버퍼 목록은 다음과 같습니다.
Buffer 길이 버퍼 유형 1 x SECBUFFER_MISSING 레코드를 처리하는 데 더 많은 데이터가 필요했음을 나타냅니다. 메시지 함수에서 반환된 대부분의 오류와 달리 이 버퍼 유형은 컨텍스트가 손상되었음을 나타내지 않습니다. 대신 더 많은 데이터가 필요하다는 것을 나타냅니다. 보안 패키지는 이 조건에서 상태를 업데이트해서는 안 됩니다.
마찬가지로 통신의 보낸 사람 쪽에서 호출자는 MakeSignature 함수를 호출할 수 있습니다. 보안 패키지는 버퍼를 다시 할당하거나 주변 항목을 복사해야 할 수 있습니다. 호출자는 다음과 같이 버퍼 목록을 제공하여 더 효율적일 수 있습니다.
Buffer 길이 형식 1 머리글 길이 SECBUFFER_STREAM_HEADER 2 데이터 길이 SECBUFFER_DATA 3 예고편 길이 SECBUFFER_STREAM_TRAILER 이렇게 하면 호출자가 버퍼를 보다 효율적으로 사용할 수 있습니다. MakeSignature를 호출하기 전에 예약할 공간의 양을 결정하기 위해 QueryContextAttributes 함수를 호출하면 애플리케이션 및 보안 패키지에 대한 작업이 더 효율적입니다.