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 함수에서 가장 일반적으로 반환하는 오류 코드를 나열합니다.
반환 코드 | 설명 |
---|---|
|
pbSignedAndEncryptedBlob 매개 변수로 지정된 버퍼가 반환된 데이터를 저장할 만큼 크지 않은 경우 함수는 ERROR_MORE_DATA 코드를 설정하고 필요한 버퍼 크기를 pcbSignedAndEncryptedBlob이 가리키는 변수에 바이트 단위로 저장합니다. |
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | wincrypt.h |
라이브러리 | Crypt32.lib |
DLL | Crypt32.dll |