CMSG_CONTENT_ENCRYPT_INFO 구조체(wincrypt.h)
CMSG_CONTENT_ENCRYPT_INFO 구조에는 암호화 API: CNG(차세대) OID(개체 식별자)를 사용하여 설치할 수 있는 콘텐츠 암호화 키의 암호화 및 내보내기에 사용되는 PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY, PFN_CMSG_EXPORT_KEY_TRANS, PFN_CMSG_EXPORT_KEY_AGREE 및 PFN_CMSG_EXPORT_MAIL_LIST 함수 간에 공유되는 정보가 포함됩니다.
구문
typedef struct _CMSG_CONTENT_ENCRYPT_INFO {
DWORD cbSize;
HCRYPTPROV_LEGACY hCryptProv;
CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm;
void *pvEncryptionAuxInfo;
DWORD cRecipients;
PCMSG_RECIPIENT_ENCODE_INFO rgCmsRecipients;
PFN_CMSG_ALLOC pfnAlloc;
PFN_CMSG_FREE pfnFree;
DWORD dwEncryptFlags;
union {
HCRYPTKEY hContentEncryptKey;
BCRYPT_KEY_HANDLE hCNGContentEncryptKey;
} DUMMYUNIONNAME;
DWORD dwFlags;
BOOL fCNG;
BYTE *pbCNGContentEncryptKeyObject;
BYTE *pbContentEncryptKey;
DWORD cbContentEncryptKey;
} CMSG_CONTENT_ENCRYPT_INFO, *PCMSG_CONTENT_ENCRYPT_INFO;
멤버
cbSize
이 구조체의 크기(바이트)입니다.
hCryptProv
CSP( 암호화 서비스 공급자 )에 대한 핸들입니다. fCNG 멤버가 FALSE이고 입력 시 hCryptProv 멤버가 NULL인 경우 hCryptProv는 콜백 함수에 의해 업데이트되어야 합니다. 해제해야 하는 공급자를 획득하는 경우 dwFlags 멤버에서 CMSG_CONTENT_ENCRYPT_RELEASE_CONTEXT_FLAG 설정해야 합니다.
ContentEncryptionAlgorithm
키를 암호화하는 데 사용되는 알고리즘을 지정하는 CRYPT_ALGORITHM_IDENTIFIER 구조체입니다. 콜백 함수가 pszObjId 멤버 또는 CRYPT_ALGORITHM_IDENTIFIER 구조체의 Parameters 멤버를 업데이트하는 경우 dwFlags 멤버에 적절한 값을 설정합니다. pfnAlloc 및 pfnFree 멤버를 사용하여 이러한 값에 대한 메모리를 할당하고 해제해야 합니다.
pvEncryptionAuxInfo
암호화 알고리즘에 따라 달라지는 구조체에 대한 포인터입니다. 다음 표에는 가능한 알고리즘 ID 및 해당 멤버 콘텐츠가 나와 있습니다.
값 | 의미 |
---|---|
|
|
|
다른 모든 암호화 알고리즘의 경우 이 값은 NULL입니다.
cRecipients
메시지의 받는 사람 수를 지정하는 값입니다.
rgCmsRecipients
메시지 수신자 정보를 포함하는 CMSG_RECIPIENT_ENCODE_INFO 구조체 배열에 대한 포인터입니다.
pfnAlloc
업데이트된 멤버에 대한 메모리를 할당하는 데 사용되는 설치 가능한 함수에 대한 포인터입니다.
pfnFree
pfnAlloc에서 할당한 메모리를 해제하는 데 사용되는 설치 가능한 함수에 대한 포인터입니다.
dwEncryptFlags
CryptMsgCalculateEncodedLength 또는 CryptMsgOpenToEncode 함수에서 명확한 길이 스트리밍에 필요한 일관된 최대 길이를 얻기 위해 인코딩된 출력을 0으로 채워야 하는지 여부를 나타내는 값입니다.
CMSG_CONTENT_ENCRYPT_PAD_ENCODED_LEN_FLAG(0x00000001)
DUMMYUNIONNAME
DUMMYUNIONNAME.hContentEncryptKey
fCNG 멤버가 FALSE인 경우 콘텐츠 암호화 키에 대한 핸들입니다.
DUMMYUNIONNAME.hCNGContentEncryptKey
fCNG 멤버가 TRUE인 경우 콘텐츠 암호화 키에 대한 핸들입니다.
dwFlags
hCryptProv 또는 ContentEncryptionAlgorithm 멤버에 대해 메모리를 해제해야 하는지 여부를 나타내는 값입니다.
값 | 의미 |
---|---|
|
콜백 함수가 ContentEncryptionAlgorithm 멤버가 참조하는 CRYPT_ALGORITHM_IDENTIFIER 구조체의 Parameters 멤버를 업데이트하는 경우 를 설정합니다. |
|
콜백 함수가 ContentEncryptionAlgorithm 멤버가 참조하는 CRYPT_ALGORITHM_IDENTIFIER 구조체의 pszObjId 멤버를 업데이트하는 경우 를 설정합니다. |
|
콜백 함수가 해제해야 하는 hCryptProv 멤버를 획득하는 경우 를 설정합니다. |
fCNG
암호화 API: CNG(차세대) 공급자를 사용하여 콘텐츠 암호화 키를 생성할지 여부를 나타내는 값입니다.
fCNG 멤버가 FALSE이면 hContentEncryptKey 멤버를 업데이트하기 위해 CMSG_OID_GEN_CONTENT_ENCRYPT_KEY_FUNC 함수가 호출됩니다.
fCNG 멤버가 TRUE이면 hCNGContentEncryptKey 및 cbContentEncryptKey 멤버를 업데이트하기 위해 CMSG_OID_CNG_GEN_CONTENT_ENCRYPT_KEY_FUNC 함수가 호출되고 pbCNGContentEncryptKeyObject 및 pbContentEncryptKey 멤버는 pfnAlloc 멤버에 의해 할당되어야 합니다. CryptMsgClose 함수를 호출하여 콘텐츠 암호화 키를 해제하고 해제합니다.
pbCNGContentEncryptKeyObject
CNG 콘텐츠 암호화 키가 포함된 버퍼에 대한 포인터입니다.
pbContentEncryptKey
CAPI1 콘텐츠 암호화 키가 포함된 버퍼에 대한 포인터입니다.
cbContentEncryptKey
fCNG 멤버의 값에 따라 pbCNGContentEncryptKeyObject 또는 pbContentEncryptKey 멤버의 크기(바이트)입니다.
설명
dwMsgType 매개 변수가 CMSG_ENVELOPED 설정된 상태에서 호출되면 CryptMsgOpenToEncode 함수는CMSG_ENVELOPED_ENCODE_INFO 구조체에서 CMSG_CONTENT_ENCRYPT_INFO 구조를 초기화합니다.
CMSG_ENVELOPED_ENCODE_INFO 구조체가 rgCmsRecipients 멤버 대신 rgpRecipients 멤버 를 사용하는 경우 CryptMsgOpenToEncode 함수는rgpRecipients 멤버 구조를 CMSG_CONTENT_ENCRYPT_INFO 구조체의 rgCmsRecipients 멤버에 대한 CMSG_RECIPIENT_ENCODE_INFO 구조체로 변환합니다.
fCNG 멤버가 FALSE이면 CMSG_CONTENT_ENCRYPT_INFO 구조에서 다음 멤버를 변경할 수 있습니다.
- hContentEncryptKey
- hCryptProv
- ContentEncryptionAlgorithm 멤버가 참조하는 CRYPT_ALGORITHM_IDENTIFIER 구조체의 pszObjId 멤버입니다.
- ContentEncryptionAlgorithm 멤버가 참조하는 CRYPT_ALGORITHM_IDENTIFIER 구조체의 Parameters 멤버입니다.
- dwFlags
fCNG 멤버가 TRUE이면 CMSG_CONTENT_ENCRYPT_INFO 구조에서 다음 멤버를 변경할 수 있습니다.
- hCNGContentEncryptKey
- pbCNGContentEncryptKeyObject
- pbContentEncryptKey
- cbContentEncryptKey
- ContentEncryptionAlgorithm 멤버가 참조하는 CRYPT_ALGORITHM_IDENTIFIER 구조체의 pszObjId 멤버입니다.
- ContentEncryptionAlgorithm 멤버가 참조하는 CRYPT_ALGORITHM_IDENTIFIER 구조체의 Parameters 멤버입니다.
- dwFlags
다음 멤버는 읽기 전용입니다.
- cbSize
- pvEncryptionAuxInfo
- cRecipients
- rgCmsRecipients
- pfnAlloc
- pfnFree
- dwEncryptFlags
요구 사항
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱만 해당] |
머리글 | wincrypt.h |