CRYPT_ENCRYPT_MESSAGE_PARA 구조체(wincrypt.h)

CRYPT_ENCRYPT_MESSAGE_PARA 구조에는 메시지를 암호화하는 데 사용되는 정보가 포함되어 있습니다.

구문

typedef struct _CRYPT_ENCRYPT_MESSAGE_PARA {
  DWORD                      cbSize;
  DWORD                      dwMsgEncodingType;
  HCRYPTPROV_LEGACY          hCryptProv;
  CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm;
  void                       *pvEncryptionAuxInfo;
  DWORD                      dwFlags;
  DWORD                      dwInnerContentType;
} CRYPT_ENCRYPT_MESSAGE_PARA, *PCRYPT_ENCRYPT_MESSAGE_PARA;

멤버

cbSize

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

dwMsgEncodingType

사용되는 인코딩 유형입니다. 다음 예제와 같이 비트 OR 작업과 결합하여 인증서 및 메시지 인코딩 형식을 모두 지정할 수 있습니다.

X509_ASN_ENCODING | PKCS_7_ASN_ENCODING

현재 정의된 인코딩 형식은 다음과 같습니다.

  • X509_ASN_ENCODING
  • PKCS_7_ASN_ENCODING

hCryptProv

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

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

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

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

ContentEncryptionAlgorithm

사용할 암호화 알고리즘의 OID(개체 식별자)를 포함하는 CRYPT_ALGORITHM_IDENTIFIER 구조체입니다. hCryptProv에서 지정한 CSP는 이 암호화 알고리즘을 지원해야 합니다.

szOID_OIWSEC_desCBC(CALG_DES) 및 szOID_RSA_DES_EDE3_CBC(CALG_3DES) 암호화 알고리즘을 사용하려면 이 구조체의 Parameters 멤버가 인코딩된 IV(8바이트 초기화 벡터)를 포함해야 합니다. Parameters 멤버의 cbData 멤버가 0이면 IV를 포함하는 추상 구문 표기법 1(ASN.1)로 인코딩된 OCTET STRING이 CryptGenRandom을 사용하여 생성됩니다. KP_IV 매개 변수에 대한 자세한 내용은 CryptSetKeyParam을 참조하세요.

szOID_NIST_AES128_CBC(BCRYPT_AES_ALGORITHM, 128비트), szOID_NIST_AES192_CBC(BCRYPT_AES_ALGORITHM, 192비트) 및 szOID_NIST_AES256_CBC(BCRYPT_AES_ALGORITHM, 256비트) 암호화 알고리즘에는 이 구조체의 Parameters 멤버가 인코딩된 16바이트 초기화 벡터(IV)를 포함해야 합니다. Parameters 멤버의 cbData 멤버가 0이면 IV를 포함하는 추상 구문 표기법 1(ASN.1)로 인코딩된 OCTET STRING이 생성됩니다.

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

참고 메시지의 암호를 해독할 때 초기화 벡터 매개 변수가 있는 경우 암호화 메시지 함수는 암호 해독 전에 초기화 벡터를 사용하여 CryptSetKeyParam을 호출합니다.
 

pvEncryptionAuxInfo

RC2 암호화의 CMSG_RC2_AUX_INFO 구조 또는 SP3 호환 암호화를 위한 CMSG_SP3_COMPATIBLE_AUX_INFO 구조에 대한 포인터입니다. RC2 또는 SP3 호환 암호화 이외의 경우 이 멤버를 NULL로 설정해야 합니다.

ContentEncryptionAlgorithm 멤버에 szOID_RSA_RC4 포함된 경우 이 멤버는 포함할 솔트 바이트 수를 지정하는 CMSG_RC4_AUX_INFO 구조를 가리킵니다.

dwFlags

일반적으로 0으로 설정됩니다. 그러나 인코딩된 출력이 CMSG_SIGNED 메시지와 같은 외부 암호화 메시지의 CMSG_ENVELOPED 내부 콘텐츠 인 경우 CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAG 설정해야 합니다. 설정되지 않으면 콘텐츠가 CMSG_DATA 내부 콘텐츠 형식으로 인코딩됩니다.

CRYPT_MESSAGE_ENCAPSULATED_CONTENT_OUT_FLAG 암호화하기 전에 OCTET STRING 내에서 비데이터 내부 콘텐츠를 캡슐화하도록 설정할 수 있습니다.

CRYPT_MESSAGE_KEYID_RECIPIENT_FLAG 발급자와 일련 번호가 아닌 키 식별자를 통해 받는 사람을 식별하도록 설정할 수 있습니다.

dwInnerContentType

일반적으로 0으로 설정됩니다. 암호화할 입력이 CMSG_SIGNED 같은 다른 암호화 메시지의 인코딩된 출력인 경우 dwInnerContentType 멤버를 설정하여 암호화 메시지 유형을 설정해야 합니다.

요구 사항

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

추가 정보

CRYPT_ALGORITHM_IDENTIFIER

CryptEncryptMessage

CryptSignAndEncryptMessage