CryptMsgVerifyCountersignatureEncoded 함수(wincrypt.h)

CryptMsgVerifyCountersignatureEncoded 함수는 SignerInfo 구조체(PKCS #7에 정의된 대로)의 측면에서 카운터 서명성을 확인합니다.

구문

BOOL CryptMsgVerifyCountersignatureEncoded(
  [in] HCRYPTPROV_LEGACY hCryptProv,
  [in] DWORD             dwEncodingType,
  [in] PBYTE             pbSignerInfo,
  [in] DWORD             cbSignerInfo,
  [in] PBYTE             pbSignerInfoCountersignature,
  [in] DWORD             cbSignerInfoCountersignature,
  [in] PCERT_INFO        pciCountersigner
);

매개 변수

[in] hCryptProv

이 매개 변수는 사용되지 않으며 NULL로 설정해야 합니다.

Windows Server 2003 및 Windows XP: NULL 또는 pbSignerInfo의 encryptedDigest 필드를 해시하는 데 사용할 암호화 공급자의 핸들입니다. 이 매개 변수의 데이터 형식은 HCRYPTPROV입니다.

hCryptProv에서 특정 암호화 공급자를 전달하는 강력한 이유가 없는 한 NULL을 전달하여 기본 RSA 또는 DSS 공급자를 사용합니다.

[in] dwEncodingType

사용되는 인코딩 형식을 지정합니다. 현재는 X509_ASN_ENCODING 및 PKCS_7_ASN_ENCODING만 사용되고 있습니다. 그러나 나중에 추가 인코딩 형식이 추가될 수 있습니다. 현재 인코딩 형식의 경우 다음을 사용합니다.

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING.

[in] pbSignerInfo

카운터 서명할 메시지 내용의 서명자가 포함된 인코딩된 BLOB 에 대한 포인터입니다.

[in] cbSignerInfo

콘텐츠 서명자에 대한 인코딩된 BLOB의 개수(바이트)입니다.

[in] pbSignerInfoCountersignature

카운터 서명자 정보를 포함하는 인코딩된 BLOB에 대한 포인터입니다.

[in] cbSignerInfoCountersignature

메시지의 카운터 서명자에 대해 인코딩된 BLOB의 개수(바이트)입니다.

[in] pciCountersigner

발급자와 카운터 서명자의 일련 번호를 포함하는 CERT_INFO 대한 포인터입니다. 자세한 내용은 설명 부분을 참조하세요.

반환 값

함수가 성공하면 반환 값은 0이 아닌 값(TRUE)입니다.

함수가 실패하면 반환 값은 0(FALSE)입니다. 확장된 오류 정보는 GetLastError를 호출합니다.

다음 표에서는 GetLastError 함수에서 가장 일반적으로 반환되는 오류 코드를 나열합니다.

반환 코드 설명
CRYPT_E_AUTH_ATTR_MISSING
메시지에는 예상되는 인증된 특성이 포함되어 있지 않습니다.
CRYPT_E_HASH_VALUE
해시 값이 올바르지 않습니다.
CRYPT_E_UNEXPECTED_ENCODING
메시지는 예상대로 인코딩되지 않습니다.
CRYPT_E_UNKNOWN_ALGO
암호화 알고리즘을 알 수 없습니다.
E_INVALIDARG
하나 이상의 인수가 잘못되었습니다.
E_OUTOFMEMORY
메모리가 부족합니다.
 

다음 함수에서 전파된 오류가 반환될 수 있습니다.

함수가 실패하면 GetLastError 는 ASN.1( 추상 구문 표기법 1) 인코딩/디코딩 오류를 반환할 수 있습니다. 이러한 오류에 대한 자세한 내용은 ASN.1 반환 값 인코딩/디코딩을 참조하세요.

설명

카운터 서명자 확인은 PKCS #7 SIGNERINFO 구조를 사용하여 수행됩니다. 서명에는 pbSignerInfo의 encryptedDigest 필드의 암호화된 해시가 포함되어야 합니다.

카운터 서명자의 발급자 및 일련 번호는 pbSignerInfoCountersignature의 카운터 서명자 정보와 일치해야 합니다. pciCountersigner에서 참조되는 유일한 필드는 SerialNumber, Issuer 및 SubjectPublicKeyInfo입니다. SubjectPublicKeyInfo는 pciCountersigner에서 해시를 암호화하는 데 사용되는 공개 키에 액세스하는 데 사용되므로 pbSignerInfo의 해시와 비교합니다.

예제

이 함수를 사용하는 예제는 예제 C 프로그램: CounterSigned 메시지 인코딩 및 디코딩을 참조하세요.

요구 사항

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

추가 정보

CryptMsgCountersign

CryptMsgCountersignEncoded

하위 수준 메시지 함수

간소화된 메시지 함수