Condividi tramite


struttura CMSG_ENVELOPED_ENCODE_INFO (wincrypt.h)

La struttura CMSG_ENVELOPED_ENCODE_INFO contiene informazioni necessarie per codificare un messaggio in busto. Viene passato a CryptMsgOpenToEncode se il parametro dwMsgType è CMSG_ENVELOPED.

Sintassi

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;

Members

cbSize

Dimensione, in byte, della struttura.

hCryptProv

Questo membro non viene usato e deve essere impostato su NULL.

Windows Server 2003 e Windows XP: Specifica un handle per il provider di servizi di crittografia (CSP) usato per eseguire la crittografia del contenuto, la crittografia della chiave destinatario e l'esportazione. Le chiavi private dell'hCryptProv non vengono usate.

Il tipo di dati del membro è HCRYPTPROV.

A meno che non esista un motivo forte per passare un provider di crittografia specifico in hCryptProv, passare zero per usare il provider RSA o DSS predefinito.

ContentEncryptionAlgorithm

Struttura CRYPT_ALGORITHM_IDENTIFIER che contiene il tipo di algoritmo di firma e qualsiasi parametro aggiuntivo associato nel modulo codificato.

Il membro pszObjId della struttura specifica l'algoritmo usato per crittografare il contenuto del messaggio.

Gli algoritmi di crittografia seguenti richiedono un vettore di inizializzazione di otto byte codificato (IV) nel membro Parametri della struttura. Per informazioni dettagliate, vedere CryptSetKeyParam.

Valore Significato
CALG_DES
szOID_OIWSEC_desCBC
CALG_3DES
szOID_RSA_DES_EDE3_CBC
 

Se il membro cbData del membro Parameters è zero, viene generata una notazione sintassi astratta ( ASN.1) con codifica OCTET STRING contenente l'IV usando CryptGenRandom.

L'algoritmo szOID_RSA_RC2CBC (CALG_RC2) richiede che il membro pbData di Parameters sia una struttura CRYPT_RC2_CBC_PARAMETERS codificata. Se il membro cbData del membro Parameters è zero, viene generato un CRYPT_RC2_CBC_PARAMETERS con codifica ASN.1 con un valore predefinito pari a 40 per il membro dwVersion . In questo modo viene impostata la lunghezza della chiave predefinita su 40 bit. Questa lunghezza predefinita della chiave può essere sostituita con pvEncryptionAuxInfo che punta a una struttura CMSG_RC2_AUX_INFO contenente la lunghezza della chiave desiderata.

Nota Nella decrittografia, se esiste un IV, CryptSetKeyParam viene chiamato con l'iv prima dell'inizio della decrittografia.
 

pvEncryptionAuxInfo

Puntatore a una struttura a seconda dell'algoritmo di crittografia.

Valore Significato
RC2

CMSG_RC2_AUX_INFO

RC4

CMSG_RC4_AUX_INFO

SP3 o compatibile

CMSG_SP3_COMPATIBLE_AUX_INFO

Tutti gli altri algoritmi di crittografia
NULL

cRecipients

Numero di elementi nella matrice rgpRecipients o rgCmsRecipients .

rgpRecipients

Matrice di puntatori per CERT_INFO strutture, ognuna contenente l'autorità emittente del certificato del destinatario, SerialNumber e SubjectPublicKeyInfo. Questa matrice può essere usata solo per i destinatari identificati dal numero di autorità emittente e seriale. Se rgpRecipients non è NULL, rgCmsRecipients deve essere NULL.

rgCmsRecipients

facoltativo. Matrice di puntatori per CMSG_RECIPIENT_ENCODE_INFO strutture contenenti informazioni sui destinatari. Se rgCmsRecipients non è NULL, rgpRecipients deve essere NULL. CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS deve essere definito per fare riferimento a questo campo.

cCertEncoded

facoltativo. Valore DWORD che indica il numero di certificati codificati nella matrice rgCertEncoded . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS deve essere definito per fare riferimento a questo campo.

rgCertEncoded

facoltativo. Matrice di strutture di CERT_BLOB . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS deve essere definito per fare riferimento a questo campo.

cCrlEncoded

facoltativo. Valore DWORD che indica il numero di elenchi di revoche di certificati codificati nella matrice rgCRLEncoded . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS deve essere definito per fare riferimento a questo campo.

rgCrlEncoded

facoltativo. Matrice di strutture CRL_BLOB . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS deve essere definito per fare riferimento a questo campo.

cAttrCertEncoded

facoltativo. Valore DWORD che indica il numero di attributi del certificato codificati nella matrice rgAttrCertEncoded . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS deve essere definito per fare riferimento a questo campo.

rgAttrCertEncoded

facoltativo. Matrice di strutture CRYPT_ATTRIBUTE . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS deve essere definito per fare riferimento a questo membro.

cUnprotectedAttr

facoltativo. Valore DWORD che indica il numero di attributi non protetti nella matrice rgUnprotectedAttr . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS deve essere definito per fare riferimento a questo campo.

rgUnprotectedAttr

facoltativo. Matrice di strutture CRYPT_ATTRIBUTE . CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDS deve essere definito per fare riferimento a questo campo.

Requisiti

   
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Intestazione wincrypt.h

Vedi anche

CERT_INFO

CRYPT_ALGORITHM_IDENTIFIER