다음을 통해 공유


CMSG_KEY_AGREE_ENCRYPT_INFO 구조체(wincrypt.h)

CMSG_KEY_AGREE_ENCRYPT_INFO 구조에는 봉투형 메시지의 모든 주요 계약 수신자에게 적용되는 암호화 정보가 포함됩니다. PFN_CMSG_EXPORT_KEY_AGREE 함수는 이 구조를 업데이트합니다.

구문

typedef struct _CMSG_KEY_AGREE_ENCRYPT_INFO {
  DWORD                            cbSize;
  DWORD                            dwRecipientIndex;
  CRYPT_ALGORITHM_IDENTIFIER       KeyEncryptionAlgorithm;
  CRYPT_DATA_BLOB                  UserKeyingMaterial;
  DWORD                            dwOriginatorChoice;
  union {
    CERT_ID              OriginatorCertId;
    CERT_PUBLIC_KEY_INFO OriginatorPublicKeyInfo;
  } DUMMYUNIONNAME;
  DWORD                            cKeyAgreeKeyEncryptInfo;
  PCMSG_KEY_AGREE_KEY_ENCRYPT_INFO *rgpKeyAgreeKeyEncryptInfo;
  DWORD                            dwFlags;
} CMSG_KEY_AGREE_ENCRYPT_INFO, *PCMSG_KEY_AGREE_ENCRYPT_INFO;

멤버

cbSize

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

dwRecipientIndex

PFN_CMSG_EXPORT_KEY_AGREE 함수의 pContentEncryptInfo 매개 변수로 지정된 받는 사람 목록에 있는 받는 사람의 서수 수를 지정하는 값입니다.

KeyEncryptionAlgorithm

콘텐츠 암호화 키를 암호화하는 데 사용되는 알고리즘을 지정하는 CRYPT_ALGORITHM_IDENTIFIER 구조체입니다. CryptMsgOpenToEncode 함수는 CRYPT_ALGORITHM_IDENTIFIER 구조체의 pszObjId 멤버를 사용하여 키를 내보내는 데 사용되는 함수의 주소를 가져옵니다. 이 함수는 Cryptography API: Next Generation(CNG) 개체 식별자 (OID)를 사용하여 설치할 수 있습니다.

UserKeyingMaterial

동일한 두 당사자가 쌍 단위 키를 생성할 때마다 다른 키가 생성되도록 발신자가 제공하는 사용자 키 지정 자료를 포함하는 CRYPT_DATA_BLOB 구조입니다 .

dwOriginatorChoice

사용할 키 식별자를 나타내는 DWORD 입니다. 이 멤버는 다음 값 중 하나일 수 있습니다.

의미
CMSG_KEY_AGREE_ORIGINATOR_CERT
OriginatorCertId
CMSG_KEY_AGREE_ORIGINATOR_PUBLIC_KEY
OriginatorPublicKeyInfo

DUMMYUNIONNAME

DUMMYUNIONNAME.OriginatorCertId

메시지 생성자의 공개 키를 식별하는 CERT_ID 구조체입니다.

DUMMYUNIONNAME.OriginatorPublicKeyInfo

메시지 생성자의 공개 키를 포함하는 CERT_PUBLIC_KEY_INFO 구조체입니다.

cKeyAgreeKeyEncryptInfo

rgpKeyAgreeKeyEncryptInfo 매개 변수의 받는 사람 수를 지정하는 값입니다.

rgpKeyAgreeKeyEncryptInfo

각 수신자의 암호화된 키를 포함하는 CMSG_KEY_AGREE_KEY_ENCRYPT_INFO 구조체의 배열입니다.

dwFlags

CryptMsgOpenToEncode 함수를 사용하여 업데이트된 멤버와 메모리 할당을 해제해야 하는 멤버를 지정하는 값입니다.

의미
CMSG_KEY_AGREE_ENCRYPT_FREE_MATERIAL_FLAG
0x00000002
UserKeyingMaterial 멤버가 업데이트되었습니다.
CMSG_KEY_AGREE_ENCRYPT_FREE_OBJID_FLAG
0x00000020
KeyEncryptionAlgorithm 멤버가 참조하는 CRYPT_ALGORITHM_IDENTIFIER 구조체의 pszObjId 멤버가 업데이트되었습니다.
CMSG_KEY_AGREE_ENCRYPT_FREE_PARA_FLAG
0x00000001
KeyEncryptionAlgorithm 멤버가 참조하는 CRYPT_ALGORITHM_IDENTIFIER 구조체의 Parameters 멤버가 업데이트되었습니다.
CMSG_KEY_AGREE_ENCRYPT_FREE_PUBKEY_ALG_FLAG
0x00000004
OriginatorPublicKeyInfo 멤버가 참조하는 CERT_PUBLIC_KEY_INFO 구조체의 Algorithm.pszObjId 멤버가 업데이트되었습니다.
CMSG_KEY_AGREE_ENCRYPT_FREE_PUBKEY_BITS_FLAG
0x00000010
OriginatorPublicKeyInfo 멤버가 참조하는 CERT_PUBLIC_KEY_INFO 구조체의 PublicKey 멤버가 업데이트되었습니다.
CMSG_KEY_AGREE_ENCRYPT_FREE_PUBKEY_PARA_FLAG
0x00000008
OriginatorPublicKeyInfo 멤버가 참조하는 CERT_PUBLIC_KEY_INFO 구조체의 Algorithm.Parameters 멤버가 업데이트되었습니다.

설명

dwMsgType 매개 변수가 CMSG_ENVELOPED 설정된 상태에서 호출되는 경우 CryptMsgOpenToEncode 함수는CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO 구조체에서 CMSG_KEY_AGREE_ENCRYPT_INFO 구조를 초기화합니다. CryptMsgOpenToEncode 함수는 PFN_CMSG_EXPORT_KEY_AGREE 함수를 호출하여 CMSG_KEY_AGREE_ENCRYPT_INFO 구조를 업데이트합니다. 콜백 함수를 찾을 수 없는 경우 CryptMsgOpenToEncode 함수는 이 구조를 CMSG_CONTENT_ENCRYPT_INFO 구조체의 기본 키 정보로 채웁니다.

콜백 함수에서 CMSG_KEY_AGREE_ENCRYPT_INFO 구조체의 다음 멤버를 업데이트할 수 있습니다.

UserKeyingMaterial
KeyEncryptionAlgorithm.pszObjId
KeyEncryptionAlgorithm.Parameters
dwOriginatorChoice
OriginatorCertId
OriginatorPublicKeyInfo
dwFlags

다른 멤버는 읽기 전용입니다.

요구 사항

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