estrutura CMSG_ENVELOPED_ENCODE_INFO (wincrypt.h)

A estrutura CMSG_ENVELOPED_ENCODE_INFO contém informações necessárias para codificar uma mensagem envelhada. Ele será passado para CryptMsgOpenToEncode se o parâmetro dwMsgType for CMSG_ENVELOPED.

Sintaxe

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;

Membros

cbSize

O tamanho, em bytes, dessa estrutura.

hCryptProv

Esse membro não é usado e deve ser definido como NULL.

Windows Server 2003 e Windows XP: Especifica um identificador para o provedor de serviços criptográficos (CSP) usado para fazer criptografia de conteúdo, criptografia de chave de destinatário e exportar. As chaves privadas do hCryptProv não são usadas.

O tipo de dados desse membro é HCRYPTPROV.

A menos que haja um motivo forte para passar um provedor criptográfico específico no hCryptProv, passe zero para usar o provedor RSA ou DSS padrão.

ContentEncryptionAlgorithm

Uma estrutura CRYPT_ALGORITHM_IDENTIFIER que contém o tipo de algoritmo de assinatura e quaisquer parâmetros adicionais associados no formulário codificado.

O membro pszObjId da estrutura especifica o algoritmo usado para criptografar o conteúdo da mensagem.

Os algoritmos de criptografia a seguir exigem um IV ( vetor de inicialização de oito bytes ) codificado no membro Parâmetros da estrutura. Para obter detalhes, consulte CryptSetKeyParam.

Valor Significado
CALG_DES
szOID_OIWSEC_desCBC
CALG_3DES
szOID_RSA_DES_EDE3_CBC
 

Se o membro cbData do membro Parameters for zero, um ASN.1 ( Abstract Syntax Notation One ) codificado como OCTET STRING contendo o IV será gerado usando CryptGenRandom.

O algoritmo szOID_RSA_RC2CBC (CALG_RC2) requer que o membro pbData de Parameters seja uma estrutura de CRYPT_RC2_CBC_PARAMETERS codificada. Se o membro cbData do membro Parameters for zero, um CRYPT_RC2_CBC_PARAMETERS codificado em ASN.1 será gerado com um valor padrão de 40 para o membro dwVersion . Isso define o comprimento da chave padrão como 40 bits. Esse comprimento de chave padrão pode ser substituído por pvEncryptionAuxInfo apontando para uma estrutura de CMSG_RC2_AUX_INFO que contém o comprimento de chave desejado.

Nota Na descriptografia, se existir um IV, CryptSetKeyParam será chamado com o IV antes do início da descriptografia.
 

pvEncryptionAuxInfo

Um ponteiro para uma estrutura dependendo do algoritmo de criptografia.

Valor Significado
RC2

CMSG_RC2_AUX_INFO

RC4

CMSG_RC4_AUX_INFO

SP3 ou compatível

CMSG_SP3_COMPATIBLE_AUX_INFO

Todos os outros algoritmos de criptografia
NULL

cRecipients

Número de elementos na matriz rgpRecipients ou rgCmsRecipients .

rgpRecipients

Uma matriz de ponteiros para CERT_INFO estruturas, cada uma contendo o emissor do certificado de um destinatário, SerialNumber e SubjectPublicKeyInfo. Essa matriz só pode ser usada para destinatários identificados pelo emissor e pelo número de série. Se rgpRecipients não for NULL, rgCmsRecipients deverá ser NULL.

rgCmsRecipients

Opcional. Uma matriz de ponteiros para CMSG_RECIPIENT_ENCODE_INFO estruturas que contêm informações do destinatário. Se rgCmsRecipients não for NULL, rgpRecipients deverá ser NULL. CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS deve ser definido para referenciar esse campo.

cCertEncoded

Opcional. Um valor DWORD que indica o número de certificados codificados na matriz rgCertEncoded . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS deve ser definido para referenciar esse campo.

rgCertEncoded

Opcional. Matriz de estruturas CERT_BLOB . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS deve ser definido para referenciar esse campo.

cCrlEncoded

Opcional. Um valor DWORD que indica o número de CRLs ( listas de revogação de certificados ) codificadas na matriz rgCRLEncoded . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS deve ser definido para referenciar esse campo.

rgCrlEncoded

Opcional. Uma matriz de estruturas CRL_BLOB . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS deve ser definido para referenciar esse campo.

cAttrCertEncoded

Opcional. Um valor DWORD que indica o número de atributos de certificado codificados na matriz rgAttrCertEncoded . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS deve ser definido para referenciar esse campo.

rgAttrCertEncoded

Opcional. Uma matriz de estruturas CRYPT_ATTRIBUTE . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS deve ser definido para referenciar esse membro.

cUnprotectedAttr

Opcional. Um valor DWORD que indica o número de atributos desprotegidos na matriz rgUnprotectedAttr . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS deve ser definido para referenciar esse campo.

rgUnprotectedAttr

Opcional. Uma matriz de estruturas CRYPT_ATTRIBUTE . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS deve ser definido para referenciar esse campo.

Requisitos

   
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Cabeçalho wincrypt.h

Confira também

CERT_INFO

CRYPT_ALGORITHM_IDENTIFIER