CryptMsgCalculateEncodedLength 함수(wincrypt.h)
CryptMsgCalculateEncodedLength 함수는 인코딩할 데이터의 총 길이 및 메시지 유형, 인코딩 매개 변수 및 지정된 인코딩된 암호화 메시지에 필요한 최대 바이트 수를 계산합니다. 결과는 항상 필요한 실제 바이트 수보다 크거나 같습니다.
구문
DWORD CryptMsgCalculateEncodedLength(
[in] DWORD dwMsgEncodingType,
[in] DWORD dwFlags,
[in] DWORD dwMsgType,
[in] void const *pvMsgEncodeInfo,
[in, optional] LPSTR pszInnerContentObjID,
[in] DWORD cbData
);
매개 변수
[in] dwMsgEncodingType
사용되는 인코딩 형식을 지정합니다. 다음 예제와 같이 비트 OR 작업과 결합하여 인증서 및 메시지 인코딩 형식을 모두 지정할 수 있습니다.
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING
현재 정의된 인코딩 형식은 다음과 같습니다.
- X509_ASN_ENCODING
- PKCS_7_ASN_ENCODING
[in] dwFlags
현재 정의된 플래그는 다음 표에 나와 있습니다.
값 | 의미 |
---|---|
|
스트리밍된 출력에 외부 ContentInfo 래퍼가 없음을 나타냅니다(PKCS #7에 정의된 대로). 이렇게 하면 묶은 메시지로 스트리밍하는 것이 적합합니다. |
|
CryptMsgUpdate에 대한 후속 호출에 대해 제공되는 분리된 데이터가 있음을 나타냅니다. |
|
봉투형 메시지 내에 중첩될 메시지의 DER 인코딩 크기를 계산하는 데 사용됩니다. 이는 스트리밍을 수행할 때 특히 유용합니다. |
|
데이터 형식이 아닌 내부 콘텐츠 는 OCTET STRING 내에 캡슐화됩니다. 이 플래그는 서명된 메시지와 봉투 메시지 모두에 적용할 수 있습니다. |
[in] dwMsgType
현재 정의된 메시지 유형은 다음 표에 나와 있습니다.
값 | 의미 |
---|---|
|
OCTET(BYTE) 문자열입니다. |
|
|
|
|
|
구현되지 않았습니다. |
|
|
|
구현되지 않았습니다. |
[in] pvMsgEncodeInfo
인코딩할 데이터에 대한 포인터입니다. 가리키는 데이터 형식은 dwMsgType 값에 따라 달라집니다. 자세한 내용은 dwMsgType 테이블을 참조하세요.
[in, optional] pszInnerContentObjID
CryptMsgUpdate에 이미 인코딩된 데이터를 사용하여 CryptMsgCalculateEncodedLength를 호출하면 적절한 개체 식별자가 pszInnerContentObjID로 전달됩니다. pszInnerContentObjID가 NULL인 경우 내부 콘텐츠 형식은 이전에 인코딩되지 않은 것으로 간주되며, 8진수 문자열로 인코딩되고 CMSG_DATA 형식이 지정됩니다.
스트리밍을 사용하는 경우 pszInnerContentObjID 는 NULL 또는 szOID_RSA_data.
일반적으로 사용되는 알고리즘 개체 식별자는 다음과 같습니다.
- szOID_RSA_data
- szOID_RSA_signedData
- szOID_RSA_envelopedData
- szOID_RSA_signEnvData
- szOID_RSA_digestedData
- szOID_RSA_encryptedData
- SPC_INDIRECT_DATA_OBJID
[in] cbData
콘텐츠의 크기(바이트)입니다.
반환 값
인코딩된 암호화 메시지에 필요한 길이를 반환합니다. 이 길이는 정확한 길이가 아닐 수도 있지만 필요한 길이보다 작지는 않습니다. 함수가 실패하면 0이 반환됩니다.
확장된 오류 정보를 검색하려면 GetLastError 함수를 사용합니다. 다음 표에서는 가장 일반적으로 반환되는 오류 코드를 나열합니다.
반환 코드 | 설명 |
---|---|
|
메시지 유형이 잘못되었습니다. |
|
암호화 알고리즘을 알 수 없습니다. |
|
하나 이상의 인수가 잘못되었습니다. |
요구 사항
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | wincrypt.h |
라이브러리 | Crypt32.lib |
DLL | Crypt32.dll |