CryptVerifyCertificateSignatureEx 함수(wincrypt.h)
CryptVerifyCertificateSignatureEx 함수는 발급자의 공개 키를 사용하여 주체 인증서, 인증서 해지 목록, 인증서 요청 또는 keygen 요청의 서명을 확인합니다. 함수는 프라이빗 키에 액세스할 필요가 없습니다.
구문
BOOL CryptVerifyCertificateSignatureEx(
[in] HCRYPTPROV_LEGACY hCryptProv,
[in] DWORD dwCertEncodingType,
[in] DWORD dwSubjectType,
[in] void *pvSubject,
[in] DWORD dwIssuerType,
[in] void *pvIssuer,
[in] DWORD dwFlags,
[in, out, optional] void *pvExtra
);
매개 변수
[in] hCryptProv
이 매개 변수는 사용되지 않으며 NULL로 설정해야 합니다.
Windows Server 2003 및 Windows XP: 서명을 확인하는 데 사용되는 암호화 서비스 공급자 에 대한 핸들입니다. 이 매개 변수의 데이터 형식은 HCRYPTPROV입니다.
특정 암호화 공급자를 전달하는 강력한 이유가 없는 한 NULL이 전달됩니다. NULL을 전달하면 기본 RSA 또는 DSS 공급자가 획득됩니다.
[in] dwCertEncodingType
주체를 암호화하는 데 사용된 인증서 인코딩 형식 입니다. 이 값의 높은 WORD에 포함된 메시지 인코딩 형식 식별자는 이 함수에서 무시됩니다.
이 매개 변수는 현재 정의된 다음 인증서 인코딩 유형일 수 있습니다.
값 | 의미 |
---|---|
|
X.509 인증서 인코딩을 지정합니다. |
[in] dwSubjectType
제목 형식입니다. 이 매개 변수는 다음 제목 형식 중 하나일 수 있습니다.
값 | 의미 |
---|---|
|
pvSubject 는 CRYPT_DATA_BLOB 구조체에 대한 포인터입니다. |
|
pvSubject 는 CCERT_CONTEXT 구조체에 대한 포인터입니다. |
|
pvSubject 는 CCRL_CONTEXT 구조체에 대한 포인터입니다. |
|
pvSubject 는 OCSP_BASIC_SIGNED_RESPONSE_INFO 구조체에 대한 포인터입니다.
Windows Server 2003 및 Windows XP: 이 제목 유형은 지원되지 않습니다. |
[in] pvSubject
확인할 서명이 포함된 dwSubjectType 으로 표시된 형식의 구조체에 대한 포인터입니다.
[in] dwIssuerType
발급자 유형입니다. 이 매개 변수는 다음 발급자 유형 중 하나일 수 있습니다.
값 | 의미 |
---|---|
|
pvIssuer 는 CERT_PUBLIC_KEY_INFO 구조체에 대한 포인터입니다. |
|
pvIssuer 는 CCERT_CONTEXT 구조체에 대한 포인터입니다. |
|
pvIssuer 는 CCERT_CHAIN_CONTEXT 구조체에 대한 포인터입니다. |
|
pvIssuer는NULL이어야 합니다. |
[in] pvIssuer
dwIssuerType 값으로 표시된 형식의 구조체에 대한 포인터입니다. 구조체에는 서명을 확인하는 데 필요한 공개 키에 대한 액세스 권한이 포함됩니다.
[in] dwFlags
함수 동작을 수정하는 플래그입니다. 이 값은 다음 값의 0 또는 비트 OR 일 수 있습니다.
값 | 의미 |
---|---|
|
이 플래그를 설정하고 CryptVerifyCertificateSignatureEx 가 MD2 또는 MD4 알고리즘을 검색하면 함수는 FALSE 를 반환하고 GetLastError 를 NTE_BAD_ALGID 설정합니다. 서명은 여전히 확인되지만 이 오류 조합을 사용하면 이제 MD2 또는 MD4 알고리즘이 사용되었음을 알고 있는 호출자가 서명을 신뢰할지 거부할지 여부를 결정할 수 있습니다.
Windows 8 및 Windows Server 2012: 이 플래그에 대한 지원이 시작됩니다. |
|
pvSubject 매개 변수가 가리키는 제목에 대해 확인에 성공한 후 강력한 서명 속성을 설정합니다.
다음 속성은 인증서 컨텍스트에서 설정됩니다.
참고 이 플래그는 dwSubjectType 매개 변수에 CRYPT_VERIFY_CERT_SIGN_SUBJECT_CRL 지정된 경우에만 적용됩니다.
|
|
pvExtra 매개 변수의 CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO 구조체에 대한 포인터를 반환합니다. 구조체에는 퍼블릭 키의 길이(비트)와 사용된 서명 및 해시 알고리즘의 이름이 포함됩니다.
구조를 해제하려면 CryptMemFree 를 호출해야 합니다. CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO 구조에 메모리를 할당할 수 없는 경우 이 함수는 성공적으로 반환되지만 pvExtra 매개 변수를 NULL로 설정합니다. 참고 이 플래그는 dwSubjectType 매개 변수에 CRYPT_VERIFY_CERT_SIGN_SUBJECT_OCSP_BASIC_SIGNED_RESPONSE 지정된 경우에만 적용됩니다.
|
[in, out, optional] pvExtra
dwFlags 매개 변수가 CRYPT_VERIFY_CERT_SIGN_RETURN_STRONG_PROPERTIES_FLAG 설정된 경우 CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO 구조체에 대한 포인터입니다.
구조를 해제하려면 CryptMemFree 를 호출해야 합니다.
반환 값
성공하면 0이 아닌 값을 반환하고 그렇지 않으면 0을 반환합니다.
확장된 오류 정보는 GetLastError를 호출합니다.
반환 코드 | 설명 |
---|---|
|
인증서 인코딩 유형이 잘못되었습니다. 현재 는 X509_ASN_ENCODING 만 지원됩니다. |
|
서명 알고리즘의 OID( 개체 식별자 )는 알려진 해시 알고리즘이나 지원되는 해시 알고리즘에 매핑되지 않습니다. |
|
서명이 잘못되었습니다. |
함수가 실패하면 GetLastError 는 ASN.1( 추상 구문 표기법 1) 인코딩/디코딩 오류를 반환할 수 있습니다. 이러한 오류에 대한 자세한 내용은 ASN.1 반환 값 인코딩/디코딩을 참조하세요.
설명
주체 버퍼에는 인코딩된 BLOB 또는 인증서 또는 CRL에 대한 컨텍스트가 포함될 수 있습니다. 인증서 컨텍스트의 경우 인증서의 공개 키 매개 변수가 누락되고 이러한 매개 변수를 DSS 공개 키 매개 변수와 같이 인증서 발급자에서 상속할 수 있는 경우 컨텍스트의 CERT_PUBKEY_ALG_PARA_PROP_ID 속성은 유효한 서명에 대한 발급자의 공개 키 알고리즘 매개 변수로 업데이트됩니다.
요구 사항
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | wincrypt.h |
라이브러리 | Crypt32.lib |
DLL | Crypt32.dll |