Share via


CryptMsgUpdate 함수(wincrypt.h)

CryptMsgUpdate 함수는 암호화 메시지에 콘텐츠를 추가합니다. 이 함수를 사용하면 CryptMsgUpdate의 반복 호출을 통해 메시지를 하나씩 생성할 수 있습니다. 추가된 메시지 콘텐츠는 CryptMsgOpenToEncode 또는 CryptMsgOpenToDecode를 사용하여 메시지를 열었는지 여부에 따라 인코딩되거나 디코딩됩니다.

구문

BOOL CryptMsgUpdate(
  [in] HCRYPTMSG  hCryptMsg,
  [in] const BYTE *pbData,
  [in] DWORD      cbData,
  [in] BOOL       fFinal
);

매개 변수

[in] hCryptMsg

업데이트할 메시지의 암호화 메시지 핸들입니다.

[in] pbData

인코딩 또는 디코딩할 데이터를 보유하는 버퍼에 대한 포인터입니다.

[in] cbData

pbData 버퍼의 데이터 바이트 수입니다.

[in] fFinal

인코딩 또는 디코딩을 위한 마지막 데이터 블록이 처리되고 있음을 나타냅니다. 이 플래그의 올바른 사용은 처리 중인 메시지에 분리된 데이터가 있는지 여부에 따라 달라집니다. 메시지를 연 함수에 대한 호출에서 dwFlags 를 CMSG_DETACHED_FLAG 설정하여 메시지에 분리된 데이터가 포함됩니다.

CMSG_DETACHED_FLAG 설정되지 않았고 CryptMsgOpenToDecode 또는 CryptMsgOpenToEncode를 사용하여 메시지를 연 경우 fFinalTRUE로 설정되고 CryptMsgUpdate 는 한 번만 호출됩니다.

CMSG_DETACHED_FLAG 플래그가 설정되고 CryptMsgOpenToEncode를 사용하여 메시지를 연 경우 fFinalCryptMsgUpdate에 대한 마지막 호출에서만 TRUE로 설정됩니다.

CMSG_DETACHED_FLAG 플래그가 설정되고 CryptMsgOpenToDecode를 사용하여 메시지를 연 경우 헤더가 CryptMsgUpdate에 대한 단일 호출로 처리될 때 fFinalTRUE로 설정됩니다. 마지막으로 분리된 데이터 블록을 처리할 때까지 CryptMsgUpdate에 대한 후속 호출에서 분리된 데이터를 처리하는 동안 FALSE로 설정됩니다. CryptMsgUpdate에 대한 마지막 호출에서는 TRUE로 설정됩니다.

분리된 데이터를 디코딩하면 메시지의 헤더와 콘텐츠가 다른 BLOB에 포함됩니다. 각 BLOB에서는 해당 BLOB에 대해 함수를 마지막으로 호출할 때 fFinalTRUE 로 설정해야 합니다.

반환 값

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

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

스트리밍을 사용하는 경우 CryptMsgOpenToDecodeCryptMsgOpenToEncodepStreamInfo에서 지정한 애플리케이션 정의 콜백 함수에서 발생한 오류는 CryptMsgUpdate로 전파될 수 있습니다. 이 경우 콜백 함수가 반환된 후 CryptMsgUpdate에서 SetLastError를 호출하지 않으므로 애플리케이션의 제어에서 발생한 모든 오류가 유지됩니다. 애플리케이션이 스트리밍된 데이터를 처리하는 동안 오류가 발생하는 경우 SetLastError 를 호출하는 것은 콜백 함수(또는 호출하는 API 중 하나)의 책임입니다.

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

반환 코드 설명
CRYPT_E_INVALID_MSG_TYPE
메시지 유형이 잘못되었습니다.
CRYPT_E_MSG_ERROR
암호화 작업을 수행하는 동안 오류가 발생했습니다.
CRYPT_E_OID_FORMAT
개체 식별자의 형식이 잘못되었습니다.
CRYPT_E_UNEXPECTED_ENCODING
메시지가 예상대로 인코딩되지 않습니다.
CRYPT_E_UNKNOWN_ALGO
암호화 알고리즘을 알 수 없습니다.
E_INVALIDARG
하나 이상의 인수가 잘못되었습니다.
E_OUTOFMEMORY
메모리가 부족합니다.
 

전파된 오류는 다음 함수 중 하나에서 발생할 수 있습니다.

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

요구 사항

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

추가 정보

CryptMsgGetParam

CryptMsgOpenToDecode

CryptMsgOpenToEncode

하위 수준 메시지 함수

간소화된 메시지 함수