CryptDecodeObject 함수(wincrypt.h)
CryptDecodeObject 함수는 lpszStructType 매개 변수로 표시된 형식의 구조를 디코딩합니다. CryptDecodeObjectEx는 성능이 크게 향상되어 동일한 기능을 수행하는 API로 사용하는 것이 좋습니다.
구문
BOOL CryptDecodeObject(
[in] DWORD dwCertEncodingType,
[in] LPCSTR lpszStructType,
[in] const BYTE *pbEncoded,
[in] DWORD cbEncoded,
[in] DWORD dwFlags,
[out] void *pvStructInfo,
[in, out] DWORD *pcbStructInfo
);
매개 변수
[in] dwCertEncodingType
사용된 인코딩 유형입니다. 다음 예제와 같이 비트 OR 작업과 결합하여 인증서 및 메시지 인코딩 형식을 모두 지정할 수 있습니다.
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING
현재 정의된 인코딩 형식은 다음과 같습니다.
- X509_ASN_ENCODING
- PKCS_7_ASN_ENCODING
[in] lpszStructType
구조체 형식을 정의하는 OID에 대한 포인터입니다. lpszStructType 매개 변수의 상위 단어가 0이면 하위 단어는 지정된 구조체의 형식에 대한 정수 식별자를 지정합니다. 그렇지 않으면 이 매개 변수는 null로 끝나는 문자열에 대한 긴 포인터입니다.
개체 식별자 문자열, 미리 정의된 상수 및 해당 구조에 대한 자세한 내용은 CryptEncodeObject 및 CryptDecodeObject 상수를 참조하세요.
[in] pbEncoded
디코딩할 인코딩된 구조체에 대한 포인터입니다.
[in] cbEncoded
pbEncoded에서 가리키는 바이트 수입니다.
[in] dwFlags
다음 플래그가 정의됩니다. 비트 OR 연산과 결합할 수 있습니다.
[out] pvStructInfo
디코딩된 구조를 수신할 버퍼에 대한 포인터입니다. 지정된 버퍼가 디코딩된 구조를 받을 만큼 크지 않은 경우 함수는 ERROR_MORE_DATA 코드를 설정하고 필요한 버퍼 크기를 pcbStructInfo가 가리키는 변수에 바이트 단위로 저장합니다.
이 매개 변수는 메모리 할당을 위해 이 정보의 크기를 검색하는 NULL 일 수 있습니다. 자세한 내용은 알 수 없는 길이의 데이터 검색을 참조하세요.
[in, out] pcbStructInfo
pvStructInfo 매개 변수가 가리키는 버퍼의 크기(바이트)를 지정하는 DWORD 값에 대한 포인터입니다. 함수가 반환될 때 이 DWORD 값에는 pvStructInfo에 복사된 디코딩된 데이터의 크기가 포함됩니다. pcbStructInfo가 가리키는 변수에 포함된 크기는 디코딩된 구조체에 다른 구조체에 대한 포인터를 포함할 수 있으므로 디코딩된 구조체보다 큰 크기를 나타낼 수 있습니다. 이 크기는 디코딩된 구조체 및 가리키는 다른 구조체에 필요한 크기의 합계입니다.
반환 값
함수가 성공하면 반환 값은 0이 아닌 값(TRUE)입니다.
함수가 실패하면 반환 값은 0(FALSE)입니다. 확장 오류 정보는 GetLastError를 호출합니다. 다음 표에는 몇 가지 가능한 오류 코드가 나열되어 있습니다.
반환 코드 | 설명 |
---|---|
|
디코딩하는 동안 오류가 발생했습니다. |
|
지정된 dwCertEncodingType 및 lpszStructType에 대한 디코딩 함수를 찾을 수 없습니다. |
|
pvStructInfo 매개 변수로 지정된 버퍼가 반환된 데이터를 저장할 만큼 크지 않은 경우 함수는 ERROR_MORE_DATA 코드를 설정하고 필요한 버퍼 크기를 pcbStructInfo가 가리키는 변수에 바이트 단위로 저장합니다. |
함수가 실패하면 GetLastError 는 추상 구문 표기법 1(ASN.1) 인코딩/디코딩 오류를 반환할 수 있습니다. 이러한 오류에 대한 자세한 내용은 ASN.1 반환 값 인코딩/디코딩을 참조하세요.
설명
기본 설정 CryptEncodeObjectEx 함수를 사용하여 암호화 개체를 인코딩할 때 종료 되는 NULL 문자가 포함됩니다. 디코딩할 때 기본 설정 CryptDecodeObjectEx 함수를 사용하여 종료되는 NULL 문자는 유지되지 않습니다.
예제
이 함수를 사용하는 예제는 예제 C 프로그램: ASN.1 인코딩 및 디코딩을 참조하세요.
요구 사항
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | wincrypt.h |
라이브러리 | Crypt32.lib |
DLL | Crypt32.dll |