CryptVerifySignatureA 함수(wincrypt.h)
이 함수를 호출하기 전에 CryptCreateHash 호출하여 해시 개체의 핸들을 만들어야 합니다.
CryptVerifySignature 완료되면 hHash 핸들을 사용하여 CryptDestroyHash 호출할 수 있습니다.
통사론
BOOL CryptVerifySignatureA(
[in] HCRYPTHASH hHash,
[in] const BYTE *pbSignature,
[in] DWORD dwSigLen,
[in] HCRYPTKEY hPubKey,
[in] LPCSTR szDescription,
[in] DWORD dwFlags
);
매개 변수
[in] hHash
확인할 해시 개체에 대한 핸들입니다.
[in] pbSignature
확인할 서명 데이터의 주소입니다.
[in] dwSigLen
pbSignature 서명 데이터의 바이트 수입니다.
[in] hPubKey
서명을 인증하는 데 사용할 공개 키 대한 핸들입니다. 이 공개 키는 원래 디지털 서명만드는 데 사용된 키 쌍 속해야 합니다.
[in] szDescription
이 매개 변수는 더 이상 사용되지 않아야 하며 보안 취약성을 방지하기 위해 NULL
[in] dwFlags
다음 플래그 값이 정의됩니다.
값 | 의미 |
---|---|
|
이 플래그는 RSA 공급자와 함께 사용됩니다. 서명을 확인할 때 해시 개체 식별자(OID)가 없거나 선택되지 않습니다. 이 플래그를 설정하지 않으면 기본 서명의 해시 OID가 PKCS #7의 DigestInfo 정의에 지정된 대로 확인됩니다. |
|
이 플래그는 사용되지 않습니다. |
|
RSA(FIPS 186-2 호환 버전)에 X.931 지원을 사용합니다. |
반환 값
함수가 성공하면 반환 값은 TRUE
함수가 실패하면 반환 값은 FALSE
"NTE"가 앞에 있는 오류 코드는 사용 중인 특정 CSP에 의해 생성됩니다. 몇 가지 가능한 오류 코드는 다음과 같습니다.
반환 코드 | 묘사 |
---|---|
|
매개 변수 중 하나는 유효하지 않은 핸들을 지정합니다. |
|
매개 변수 중 하나에 유효하지 않은 값이 포함되어 있습니다. 이는 가장 자주 유효하지 않은 포인터입니다. |
|
dwFlags 매개 변수가 0이 아닌 경우 |
|
hHash 매개 변수로 지정된 해시 개체가 잘못되었습니다. |
|
hPubKey 매개 변수에는 유효한 공개 키대한 핸들이 없습니다. |
|
서명이 잘못되었습니다. 이는 데이터 자체가 변경되었거나, 설명 문자열이 일치하지 않거나, 잘못된 공개 키가 hPubKey지정되었기 때문일 수 있습니다.
해시 또는 서명 알고리즘이 서명을 만드는 데 사용된 알고리즘과 일치하지 않는 경우에도 이 오류를 반환할 수 있습니다. |
|
해시 개체를 만들 때 지정한 CSP(암호화 서비스 공급자) 컨텍스트를 찾을 수 없습니다. |
|
작업 중에 CSP 메모리가 부족합니다. |
발언
CryptVerifySignature 함수는 해시를 완료합니다. 이 호출 후에는 해시에 더 이상 데이터를 추가할 수 없습니다. CryptHashData 또는 CryptHashSessionKey 대한 추가 호출이 실패합니다. 해시를 사용하여 애플리케이션을 완료한 후 CryptDestroyHash 호출하여 해시 개체를 삭제해야 합니다.
.NET Framework API를 사용하여 서명을 생성하고 CryptVerifySignature 함수를 사용하여 서명을 확인하려고 하면 함수가 실패하고 GetLastErrorNTE_BAD_SIGNATURE반환합니다. 이는 네이티브 Win32 API와 .NET Framework API 간의 바이트 순서가 다르기 때문입니다.
네이티브 암호화 API는 little-endian 바이트 순서를 사용하는 반면 .NET Framework API는 big-endian 바이트 순서를 사용합니다. .NET Framework API를 사용하여 생성된 서명을 확인하는 경우 CryptVerifySignature 함수를 호출하여 서명을 확인하기 전에 서명 바이트 순서를 바꿔야 합니다.
예제
CryptVerifySignature 함수를 사용하는 예제는 예제 C 프로그램: 해시 서명 및 해시 서명확인을 참조하세요.
메모
wincrypt.h 헤더는 CRYptVerifySignature를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입대한
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | wincrypt.h |
라이브러리 | Advapi32.lib |
DLL | Advapi32.dll |