다음을 통해 공유


스트림 컨텍스트

스트림 컨텍스트는 SSL 또는 PCT와 같은 보안 스트림 지향 프로토콜을 처리합니다. 동일한 인터페이스와 유사한 자격 증명 관리를 공유하기 위해 SSPI는 스트림 컨텍스트에 대한 지원을 제공합니다. 보안 프로토콜 스트림 인증 체계와 레코드 형식을 모두 통합합니다.

스트림 지향 프로토콜을 제공하기 위해 스트림 컨텍스트를 지원하는보안 패키지에는 다음과 같은 프로세스 특성이 있습니다.

  • 패키지는 스트림 의미 체계를 지원함을 나타내기 위해 SECPKG_FLAG_STREAM 플래그를 설정합니다.

  • 전송 애플리케이션은 InitializeSecurityContext(일반) 호출에서 ISC_REQ_STREAM 및 ASC_REQ_STREAM 플래그를 설정하고 AcceptSecurityContext(일반)함수를스트림 의미 체계를 요청합니다.

  • 애플리케이션은 SecPkgContext_StreamSizes 구조로 QueryContextAttributes(일반) 함수를 호출하여 제공할 버퍼 수와 헤더 또는 트레일러에 대해 예약할 크기를보안 컨텍스트를 쿼리합니다.

  • 애플리케이션은 데이터의 실제 처리 중에 예비할 버퍼 설명자를 제공합니다. 스트림 의미 체계를 지정하면 호출자는 보안 패키지 메시지 차단을 처리할 수 있도록 추가 처리를 수행할 의향이 있음을 나타냅니다. 기본적으로 MakeSignatureVerifySignature 함수의 경우 호출자는 버퍼 목록을 전달합니다. 스트림 지향 채널(예: TCP 포트)에서 메시지를 받으면 호출자는 다음과 같이 버퍼 목록을 전달합니다.

    완충기 길이 버퍼 유형
    1 메시지 길이 SECBUFFER_DATA
    2 0 SECBUFFER_EMPTY
    3 0 SECBUFFER_EMPTY
    4 0 SECBUFFER_EMPTY
    5 0 SECBUFFER_EMPTY

     

    그런 다음 보안 패키지는 BLOB작동합니다. 함수가 성공적으로 반환되면 버퍼 목록은 다음과 같습니다.

    완충기 길이 버퍼 유형
    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 오류 코드를 반환하는 경우 반환된 버퍼 목록은 다음과 같습니다.

    완충기 길이 버퍼 유형
    1 x SECBUFFER_MISSING

     

    레코드를 처리하는 데 더 많은 데이터가 필요했음을 나타냅니다. 메시지 함수에서 반환된 대부분의 오류와 달리 이 버퍼 유형은 컨텍스트가 손상되었음을 나타내지 않습니다. 대신 더 많은 데이터가 필요하다는 것을 나타냅니다. 보안 패키지 이 조건에서 상태 업데이트해서는 안 됩니다.

    마찬가지로, 통신의 보낸 사람 쪽에서 호출자는 MakeSignature 함수를 호출할 수 있습니다. 보안 패키지는 버퍼를 다시 할당하거나 주변 항목을 복사해야 할 수 있습니다. 호출자는 다음과 같이 버퍼 목록을 제공하여 더 효율적일 수 있습니다.

    완충기 길이
    1 머리글 길이 SECBUFFER_STREAM_HEADER
    2 데이터 길이 SECBUFFER_DATA
    3 예고편 길이 SECBUFFER_STREAM_TRAILER

     

    이렇게 하면 호출자가 버퍼를 보다 효율적으로 사용할 수 있습니다. QueryContextAttributes 함수를 호출하여 MakeSignature호출하기 전에 예약할 공간의 양을 결정함으로써 애플리케이션 및 보안 패키지에 더 효율적입니다.