다음을 통해 공유


BCryptSignHash 함수(bcrypt.h)

BCryptSignHash 함수는 해시 값의 서명을 만듭니다.

통사론

NTSTATUS BCryptSignHash(
  [in]           BCRYPT_KEY_HANDLE hKey,
  [in, optional] VOID              *pPaddingInfo,
  [in]           PUCHAR            pbInput,
  [in]           ULONG             cbInput,
  [out]          PUCHAR            pbOutput,
  [in]           ULONG             cbOutput,
  [out]          ULONG             *pcbResult,
  [in]           ULONG             dwFlags
);

매개 변수

[in] hKey

해시에 서명하는 데 사용할 키의 핸들입니다.

[in, optional] pPaddingInfo

패딩 정보를 포함하는 구조체에 대한 포인터입니다. 이 매개 변수가 가리키는 구조의 실제 형식은 dwFlags 매개 변수의 값에 따라 달라집니다. 이 매개 변수는 비대칭 키에서만 사용되며, 그렇지 않으면 NULL 합니다.

[in] pbInput

서명할 해시 값을 포함하는 버퍼에 대한 포인터입니다. cbInput 매개 변수에는 이 버퍼의 크기가 포함됩니다.

[in] cbInput

서명할 pbInput 버퍼의 바이트 수입니다.

[out] pbOutput

이 함수에서 생성한 서명을 받을 버퍼의 주소입니다. cbOutput 매개 변수에는 이 버퍼의 크기가 포함됩니다.

이 매개 변수가 NULL경우 이 함수는 서명에 필요한 크기를 계산하고 pcbResult 매개 변수가 가리키는 위치에 크기를 반환합니다.

[in] cbOutput

pbOutput 버퍼의 크기(바이트)입니다. 이 매개 변수는 pbOutput 매개 변수가 NULL경우 무시됩니다.

[out] pcbResult

pbOutput 버퍼에 복사된 바이트 수를 수신하는 ULONG 변수에 대한 포인터입니다.

pbOutput NULL경우 서명에 필요한 크기(바이트)를 받습니다.

[in] dwFlags

이 함수의 동작을 수정하는 플래그 집합입니다. 허용되는 플래그 집합은 hKey 매개 변수에서 지정한 키 유형에 따라 달라집니다.

다음 값 중 하나일 수 있습니다.

의미
BCRYPT_PAD_PKCS1
PKCS1 패딩 구성표를 사용합니다. pPaddingInfo 매개 변수는 BCRYPT_PKCS1_PADDING_INFO 구조체에 대한 포인터입니다.
BCRYPT_PAD_PSS
PSS(Probabilistic Signature Scheme) 패딩 스키마를 사용합니다. pPaddingInfo 매개 변수는 BCRYPT_PSS_PADDING_INFO 구조체에 대한 포인터입니다.

반환 값

함수의 성공 또는 실패를 나타내는 상태 코드를 반환합니다.

가능한 반환 코드는 다음을 포함하지만 제한되지는 않습니다.

반환 코드 묘사
STATUS_SUCCESS
함수가 성공했습니다.
STATUS_INVALID_HANDLE
hKey 매개 변수에 지정된 키 핸들이 잘못되었습니다.
STATUS_NOT_SUPPORTED
hKey 매개 변수로 지정된 키 핸들을 만드는 데 사용되는 알고리즘 공급자는 서명 알고리즘이 아닙니다.
STATUS_NO_MEMORY
메모리 할당 오류가 발생했습니다.
STATUS_BUFFER_TOO_SMALL
cbOutput 매개 변수로 지정된 메모리 크기가 서명을 저장할 만큼 크지 않습니다.

발언

이 함수는 지정된 키를 사용하여 해시 값을 암호화하여 서명을 만듭니다.

나중에 서명이 유효한지 확인하려면 동일한 키와 원래 데이터의 동일한 해시를 사용하여 BCryptVerifySignature 함수를 호출합니다.

공급자가 지원하는 프로세서 모드에 따라 BCryptSignHash 사용자 모드 또는 커널 모드에서 호출할 수 있습니다. 커널 모드 호출자는 PASSIVE_LEVELIRQL 또는 DISPATCH_LEVEL IRQL에서 실행할 수 있습니다. 현재 IRQL 수준이 DISPATCH_LEVEL경우 hKey 매개 변수에 제공된 핸들은 BCRYPT_PROV_DISPATCH 플래그를 사용하여 연 공급자가 반환한 알고리즘 핸들에서 파생되어야 하며, BCryptSignHash 함수에 전달된 포인터는 페이징되지 않은(또는 잠긴) 메모리를 참조해야 합니다.

커널 모드에서 이 함수를 호출하려면 DDK(드라이버 개발 키트)의 일부인 Cng.lib를 사용합니다. Windows Server 2008 및 Windows Vista: 커널 모드에서 이 함수를 호출하려면 Ksecdd.lib를 사용합니다.

요구 사항

요구
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 bcrypt.h
라이브러리 Bcrypt.lib
DLL Bcrypt.dll

참고 항목

BCryptVerifySignature