MakeSignature 함수(sspi.h)

MakeSignature 함수는 메시지의 암호화 체크섬을 생성하고 메시지 손실 또는 삽입을 방지하기 위한 시퀀싱 정보도 포함합니다. MakeSignature 를 사용하면 선택한 메커니즘에서 지원하는 경우 애플리케이션이 여러 암호화 알고리즘 중에서 선택할 수 있습니다. MakeSignature 함수는 컨텍스트 핸들에서 참조하는 보안 컨텍스트를 사용합니다.

이 함수는 SSP(Schannel 보안 지원 공급자 )에서 지원되지 않습니다.

구문

KSECDDDECLSPEC SECURITY_STATUS SEC_ENTRY MakeSignature(
  [in]      PCtxtHandle    phContext,
  [in]      unsigned long  fQOP,
  [in, out] PSecBufferDesc pMessage,
  [in]      unsigned long  MessageSeqNo
);

매개 변수

[in] phContext

메시지에 서명하는 데 사용할 보안 컨텍스트에 대한 핸들입니다.

[in] fQOP

보호 품질을 나타내는 패키지별 플래그입니다. 보안 패키지는 이 매개 변수를 사용하여 암호화 알고리즘을 선택할 수 있습니다.

다이제스트 SSP를 사용하는 경우 이 매개 변수를 0으로 설정해야 합니다.

[in, out] pMessage

SecBufferDesc 구조체에 대한 포인터입니다. 입력 시 구조체는 서명할 메시지를 포함하는 하나 이상의 SecBuffer 구조를 참조합니다. 함수는 SECBUFFER_READONLY_WITH_CHECKSUM 특성으로 버퍼를 처리하지 않습니다.

또한 SecBufferDesc 구조체는 서명을 받는 SECBUFFER_TOKEN 형식의 SecBuffer 구조체를 참조합니다.

다이제스트 SSP를 HTTP 인증 프로토콜로 사용하는 경우 버퍼는 다음과 같이 구성되어야 합니다.

버퍼 #/버퍼 유형 의미
0
SECBUFFER_TOKEN
비어 있음
1
SECBUFFER_PKG_PARAMS
메서드.
2
SECBUFFER_PKG_PARAMS
Url.
3
SECBUFFER_PKG_PARAMS
HEntity. 자세한 내용은 다이제스트 챌린지 응답에 대한 입력 버퍼를 참조하세요.
4
SECBUFFER_PADDING
비어 있음 서명을 받습니다.
 

다이제스트 SSP를 SASL 메커니즘으로 사용하는 경우 버퍼는 다음과 같이 구성되어야 합니다.

버퍼 #/버퍼 유형 의미
0
SECBUFFER_TOKEN
비어 있음 서명을 받습니다. 이 버퍼는 가능한 가장 큰 서명을 저장할 수 있을 만큼 커야 합니다. QueryContextAttributes(일반) 함수를 호출하고 SECPKG_ATTR_SIZES 지정하는 데 필요한 크기를 결정합니다. 반환된 SecPkgContext_Sizes 구조체 멤버 cbMaxSignature를 확인합니다.
1
SECBUFFER_DATA
서명할 메시지입니다.
2
SECBUFFER_PADDING
비어 있음

[in] MessageSeqNo

전송 애플리케이션이 메시지에 할당한 시퀀스 번호입니다. 전송 애플리케이션에서 시퀀스 번호를 유지하지 않는 경우 이 매개 변수는 0입니다.

다이제스트 SSP를 사용하는 경우 이 매개 변수를 0으로 설정해야 합니다. 다이제스트 SSP는 내부적으로 시퀀스 번호 매기기를 관리합니다.

반환 값

함수가 성공하면 함수는 SEC_E_OK 반환합니다.

함수가 실패하면 다음 오류 코드 중 하나를 반환합니다.

반환 코드 설명
SEC_I_RENEGOTIATE
원격 파티에는 새 핸드셰이크 시퀀스가 필요하거나 애플리케이션이 종료를 방금 시작했습니다. 협상 루프로 돌아가 서 AcceptSecurityContext(일반) 또는 InitializeSecurityContext(일반) 를 다시 호출합니다. 첫 번째 호출에서 빈 입력 버퍼가 전달됩니다.
SEC_E_INVALID_HANDLE
phContext에서 지정한 컨텍스트 핸들이 잘못되었습니다.
SEC_E_INVALID_TOKEN
pMessage 에 유효한 SECBUFFER_TOKEN 버퍼가 없거나 버퍼가 너무 적습니다.
SEC_E_OUT_OF_SEQUENCE
nonce 수가 시퀀스를 벗어났습니다.
SEC_E_NO_AUTHENTICATING_AUTHORITY
보안 컨텍스트(phContext)의 유효성을 다시 검사해야 합니다.
STATUS_INVALID_PARAMETER
nonce 개수가 숫자가 아닙니다.
SEC_E_QOP_NOT_SUPPORTED
클라이언트와 서버 간에 협상된 보호 품질에는 무결성 검사가 포함되지 않았습니다.

설명

MakeSignature 함수는 컨텍스트에 대한 메시지 및 세션 키를 기반으로 하는 서명을 생성합니다.

VerifySignature 함수는 MakeSignature 함수로 서명된 메시지를 확인합니다.

전송 애플리케이션이 시퀀스 검색을 지원하기 위해 보안 컨텍스트를 만들고 호출자가 시퀀스 번호를 제공하는 경우 함수는 서명에 이 정보를 포함합니다. 이렇게 하면 메시지의 회신, 삽입 및 표시 안 함으로부터 보호됩니다. 보안 패키지는 전송 애플리케이션에서 전달된 시퀀스 번호를 통합합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 sspi.h(Security.h 포함)
라이브러리 Secur32.lib
DLL Secur32.dll

추가 정보

SSPI 함수

SecBuffer

SecBufferDesc

VerifySignature