다음을 통해 공유


CMSG_ENVELOPED_ENCODE_INFO 구조체(wincrypt.h)

CMSG_ENVELOPED_ENCODE_INFO 구조에는 봉투 메시지를 인코딩하는 데 필요한 정보가 포함되어 있습니다. dwMsgType 매개 변수가 CMSG_ENVELOPED 경우 CryptMsgOpenToEncode에 전달됩니다.

구문

typedef struct _CMSG_ENVELOPED_ENCODE_INFO {
  DWORD                       cbSize;
  HCRYPTPROV_LEGACY           hCryptProv;
  CRYPT_ALGORITHM_IDENTIFIER  ContentEncryptionAlgorithm;
  void                        *pvEncryptionAuxInfo;
  DWORD                       cRecipients;
  PCERT_INFO                  *rgpRecipients;
  PCMSG_RECIPIENT_ENCODE_INFO rgCmsRecipients;
  DWORD                       cCertEncoded;
  PCERT_BLOB                  rgCertEncoded;
  DWORD                       cCrlEncoded;
  PCRL_BLOB                   rgCrlEncoded;
  DWORD                       cAttrCertEncoded;
  PCERT_BLOB                  rgAttrCertEncoded;
  DWORD                       cUnprotectedAttr;
  PCRYPT_ATTRIBUTE            rgUnprotectedAttr;
} CMSG_ENVELOPED_ENCODE_INFO, *PCMSG_ENVELOPED_ENCODE_INFO;

멤버

cbSize

이 구조체의 크기(바이트)입니다.

hCryptProv

이 멤버는 사용되지 않으며 NULL로 설정해야 합니다.

Windows Server 2003 및 Windows XP: 콘텐츠 암호화, 받는 사람 키 암호화 및 내보내기를 수행하는 데 사용되는 CSP( 암호화 서비스 공급자 )에 대한 핸들을 지정합니다. hCryptProv의 프라이빗 키는 사용되지 않습니다.

이 멤버의 데이터 형식은 HCRYPTPROV입니다.

hCryptProv에서 특정 암호화 공급자를 전달하는 강력한 이유가 없는 한 기본 RSA 또는 DSS 공급자를 사용하려면 0을 전달합니다.

ContentEncryptionAlgorithm

서명 알고리즘 형식과 인코딩된 형식의 연결된 추가 매개 변수를 포함하는 CRYPT_ALGORITHM_IDENTIFIER 구조체입니다.

구조체의 pszObjId 멤버는 메시지 내용을 암호화하는 데 사용되는 알고리즘을 지정합니다.

다음 암호화 알고리즘에는 구조체의 Parameters 멤버에 인코딩된 8바이트 초기화 벡터(IV)가 필요합니다. 자세한 내용은 CryptSetKeyParam을 참조하세요.

의미
CALG_DES
szOID_OIWSEC_desCBC
CALG_3DES
szOID_RSA_DES_EDE3_CBC
 

Parameters 멤버의 cbData 멤버가 0이면 IV를 포함하는 추상 구문 표기법 1(ASN.1) 인코딩 OCTET STRING이 CryptGenRandom을 사용하여 생성됩니다.

szOID_RSA_RC2CBC(CALG_RC2) 알고리즘을 사용하려면 매개 변수pbData 멤버가 인코딩된 CRYPT_RC2_CBC_PARAMETERS 구조체여야 합니다. Parameters 멤버의 cbData 멤버가 0이면 dwVersion 멤버에 대한 기본값이 40인 ASN.1 인코딩된 CRYPT_RC2_CBC_PARAMETERS 생성됩니다. 이렇게 하면 기본 키 길이가 40비트로 설정됩니다. 이 기본 키 길이는 원하는 키 길이가 포함된 CMSG_RC2_AUX_INFO 구조를 가리키는 pvEncryptionAuxInfo로 재정의할 수 있습니다.

참고 암호 해독 시 IV가 있는 경우 암호 해독이 시작되기 전에 CryptSetKeyParam 이 IV로 호출됩니다.
 

pvEncryptionAuxInfo

암호화 알고리즘에 따라 구조체에 대한 포인터입니다.

의미
RC2

CMSG_RC2_AUX_INFO

RC4

CMSG_RC4_AUX_INFO

SP3 또는 호환

CMSG_SP3_COMPATIBLE_AUX_INFO

다른 모든 암호화 알고리즘
NULL

cRecipients

rgpRecipients 또는 rgCmsRecipients 배열의 요소 수입니다.

rgpRecipients

각각 받는 사람의 인증서 발급자, SerialNumber 및 SubjectPublicKeyInfo를 포함하는 CERT_INFO 구조에 대한 포인터 배열입니다. 이 배열은 발급자 및 일련 번호로 식별되는 받는 사람에 대해서만 사용할 수 있습니다. rgpRecipientsNULL이 아닌 경우 rgCmsRecipients는NULL이어야 합니다.

rgCmsRecipients

선택 사항입니다. 받는 사람 정보를 포함하는 CMSG_RECIPIENT_ENCODE_INFO 구조체에 대한 포인터 배열입니다. rgCmsRecipientsNULL이 아닌 경우 rgpRecipients는NULL이어야 합니다. 이 필드를 참조하려면 CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS 정의해야 합니다.

cCertEncoded

선택 사항입니다. rgCertEncoded 배열의 인코딩된 인증서 수를 나타내는 DWORD 값입니다. 이 필드를 참조하려면 CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS 정의해야 합니다.

rgCertEncoded

선택 사항입니다. CERT_BLOB 구조체의 배열입니다. 이 필드를 참조하려면 CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS 정의해야 합니다.

cCrlEncoded

선택 사항입니다. rgCRLEncoded 배열의 인코딩된 CRL(인증서 해지 목록) 수를 나타내는 DWORD 값입니다. 이 필드를 참조하려면 CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS 정의해야 합니다.

rgCrlEncoded

선택 사항입니다. CRL_BLOB 구조체의 배열입니다. 이 필드를 참조하려면 CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS 정의해야 합니다.

cAttrCertEncoded

선택 사항입니다. rgAttrCertEncoded 배열의 인코딩된 인증서 특성 수를 나타내는 DWORD 값입니다. 이 필드를 참조하려면 CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS 정의해야 합니다.

rgAttrCertEncoded

선택 사항입니다. CRYPT_ATTRIBUTE 구조체의 배열입니다. 이 멤버를 참조하려면 CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS 정의해야 합니다.

cUnprotectedAttr

선택 사항입니다. rgUnprotectedAttr 배열의 보호되지 않은 특성 수를 나타내는 DWORD 값입니다. 이 필드를 참조하려면 CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS 정의해야 합니다.

rgUnprotectedAttr

선택 사항입니다. CRYPT_ATTRIBUTE 구조체의 배열입니다. 이 필드를 참조하려면 CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS 정의해야 합니다.

요구 사항

   
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
머리글 wincrypt.h

추가 정보

CERT_INFO

CRYPT_ALGORITHM_IDENTIFIER