Share via


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 멤버에 적절한 값을 설정합니다. pfnAllocpfnFree 멤버를 사용하여 이러한 값에 대한 메모리를 할당하고 해제해야 합니다.

pvEncryptionAuxInfo

암호화 알고리즘에 따라 달라지는 구조체에 대한 포인터입니다. 다음 표에는 가능한 알고리즘 ID 및 해당 멤버 콘텐츠가 나와 있습니다.

의미
RC2

CMSG_RC2_AUX_INFO

RC4

CMSG_RC4_AUX_INFO

 

다른 모든 암호화 알고리즘의 경우 이 값은 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 멤버에 대해 메모리를 해제해야 하는지 여부를 나타내는 값입니다.

의미
CMSG_CONTENT_ENCRYPT_FREE_PARA_FLAG
0x00000001
콜백 함수가 ContentEncryptionAlgorithm 멤버가 참조하는 CRYPT_ALGORITHM_IDENTIFIER 구조체의 Parameters 멤버를 업데이트하는 경우 를 설정합니다.
CMSG_CONTENT_ENCRYPT_FREE_OBJID_FLAG
0x00000002
콜백 함수가 ContentEncryptionAlgorithm 멤버가 참조하는 CRYPT_ALGORITHM_IDENTIFIER 구조체의 pszObjId 멤버를 업데이트하는 경우 를 설정합니다.
CMSG_CONTENT_ENCRYPT_RELEASE_CONTEXT_FLAG
0x00008000
콜백 함수가 해제해야 하는 hCryptProv 멤버를 획득하는 경우 를 설정합니다.

fCNG

암호화 API: CNG(차세대) 공급자를 사용하여 콘텐츠 암호화 키를 생성할지 여부를 나타내는 값입니다.

fCNG 멤버가 FALSE이면 hContentEncryptKey 멤버를 업데이트하기 위해 CMSG_OID_GEN_CONTENT_ENCRYPT_KEY_FUNC 함수가 호출됩니다.

fCNG 멤버가 TRUE이면 hCNGContentEncryptKeycbContentEncryptKey 멤버를 업데이트하기 위해 CMSG_OID_CNG_GEN_CONTENT_ENCRYPT_KEY_FUNC 함수가 호출되고 pbCNGContentEncryptKeyObjectpbContentEncryptKey 멤버는 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

추가 정보

PFN_CMSG_EXPORT_KEY_AGREE

PFN_CMSG_EXPORT_KEY_TRANS

PFN_CMSG_EXPORT_MAIL_LIST

PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY