다음을 통해 공유


CryptSignAndEncryptMessage 함수(wincrypt.h)

CryptSignAndEncryptMessage 함수는 지정된 콘텐츠의 해시를 만들고, 해시에 서명하고, 콘텐츠를 암호화하고, 암호화된 콘텐츠와 서명된 해시를 해시한 다음, 암호화된 콘텐츠와 서명된 해시를 모두 인코딩합니다. 결과는 해시가 처음 서명된 다음 암호화된 경우와 동일합니다.

구문

BOOL CryptSignAndEncryptMessage(
  [in]      PCRYPT_SIGN_MESSAGE_PARA    pSignPara,
  [in]      PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara,
  [in]      DWORD                       cRecipientCert,
  [in]      PCCERT_CONTEXT []           rgpRecipientCert,
  [in]      const BYTE                  *pbToBeSignedAndEncrypted,
  [in]      DWORD                       cbToBeSignedAndEncrypted,
  [out]     BYTE                        *pbSignedAndEncryptedBlob,
  [in, out] DWORD                       *pcbSignedAndEncryptedBlob
);

매개 변수

[in] pSignPara

서명 매개 변수를 포함하는 CRYPT_SIGN_MESSAGE_PARA 구조체에 대한 포인터입니다.

[in] pEncryptPara

암호화 매개 변수를 포함하는 CRYPT_ENCRYPT_MESSAGE_PARA 구조체에 대한 포인터입니다.

[in] cRecipientCert

rgpRecipientCert의 배열 요소 수입니다.

[in] rgpRecipientCert

CERT_CONTEXT 구조체에 대한 포인터의 배열입니다. 각 구조는 메시지의 의도된 받는 사람의 인증서입니다.

[in] pbToBeSignedAndEncrypted

서명 및 암호화할 콘텐츠를 포함하는 버퍼에 대한 포인터입니다.

[in] cbToBeSignedAndEncrypted

pbToBeSignedAndEncrypted 버퍼의 크기(바이트)입니다.

[out] pbSignedAndEncryptedBlob

암호화되고 인코딩된 메시지를 받을 버퍼에 대한 포인터입니다.

이 매개 변수는 메모리 할당을 위해 이 정보의 크기를 설정하는 NULL 일 수 있습니다. 자세한 내용은 알 수 없는 길이의 데이터 검색을 참조하세요.

[in, out] pcbSignedAndEncryptedBlob

pbSignedAndEncryptedBlob이 가리키는 버퍼의 크기(바이트)를 지정하는 DWORD에 대한 포인터입니다. 함수가 반환될 때 이 변수에는 *pbSignedAndEncryptedBlob에 복사된 서명되고 암호화된 메시지의 크기(바이트)가 포함됩니다.

참고 반환된 데이터를 처리할 때 애플리케이션은 반환된 데이터의 실제 크기를 사용해야 합니다. 실제 크기는 입력에 지정된 버퍼 크기보다 약간 작을 수 있습니다. (입력에서 버퍼 크기는 일반적으로 가능한 가장 큰 출력 데이터가 버퍼에 맞도록 충분히 크게 지정됩니다.) 출력 시 이 매개 변수가 가리키는 변수는 버퍼에 복사된 데이터의 실제 크기를 반영하도록 업데이트됩니다.
 

반환 값

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

함수가 실패하면 반환 값은 0(FALSE)입니다.

확장된 오류 정보는 GetLastError를 호출합니다.

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

반환 코드 설명
ERROR_MORE_DATA
pbSignedAndEncryptedBlob 매개 변수로 지정된 버퍼가 반환된 데이터를 저장할 만큼 크지 않은 경우 함수는 ERROR_MORE_DATA 코드를 설정하고 필요한 버퍼 크기를 pcbSignedAndEncryptedBlob이 가리키는 변수에 바이트 단위로 저장합니다.
 
참고 호출된 함수 CryptSignMessageCryptEncryptMessage의 오류가 이 함수로 전파될 수 있습니다.
 

요구 사항

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

추가 정보

CryptDecryptAndVerifyMessageSignature

CryptSignMessage

간소화된 메시지 함수