Condividi tramite


CMSG_SIGNER_ENCODE_INFO struttura (wincrypt.h)

La struttura CMSG_SIGNER_ENCODE_INFO contiene informazioni sul firmatario. Viene passato a CryptMsgCountersign, CryptMsgCountersignEncoded e facoltativamente a CryptMsgOpenToEncode come membro della struttura CMSG_SIGNED_ENCODE_INFO , se il parametro dwMsgType è CMSG_SIGNED.

Sintassi

typedef struct _CMSG_SIGNER_ENCODE_INFO {
  DWORD                      cbSize;
  PCERT_INFO                 pCertInfo;
  union {
    HCRYPTPROV        hCryptProv;
    NCRYPT_KEY_HANDLE hNCryptKey;
    BCRYPT_KEY_HANDLE hBCryptKey;
  } DUMMYUNIONNAME;
  DWORD                      dwKeySpec;
  CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
  void                       *pvHashAuxInfo;
  DWORD                      cAuthAttr;
  PCRYPT_ATTRIBUTE           rgAuthAttr;
  DWORD                      cUnauthAttr;
  PCRYPT_ATTRIBUTE           rgUnauthAttr;
  CERT_ID                    SignerId;
  CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm;
  void                       *pvHashEncryptionAuxInfo;
} CMSG_SIGNER_ENCODE_INFO, *PCMSG_SIGNER_ENCODE_INFO;

Members

cbSize

Dimensione, in byte, della struttura.

pCertInfo

Puntatore a una struttura CERT_INFO che contiene

Membri Autorità di certificazione, SerialNumber e SubjectPublicKeyInfo .

I membri pbData delle strutture Emittente e SerialNumber combinano in modo univoco un certificato. Il membro dell'algoritmo della struttura SubjectPublicKeyInfo specifica l'algoritmo di crittografia hash usato.

DUMMYUNIONNAME

DUMMYUNIONNAME.hCryptProv

Handle per il provider di servizi di crittografia (CSP). Se HashEncryptionAlgorithm è impostato su szOID_PKIX_NO_SIGNATURE, questo handle può essere l'handle di un CSP acquisito usando il parametro dwFlags impostato su CRYPT_VERIFYCONTEXT. La funzione CNG NCryptIsKeyHandle viene chiamata per determinare la scelta dell'unione.

DUMMYUNIONNAME.hNCryptKey

Handle per CNG CSP. La funzione CNG NCryptIsKeyHandle viene chiamata per determinare la scelta dell'unione. I nuovi algoritmi di crittografia sono supportati solo nelle funzioni CNG. La funzione CNG NCryptTranslateHandle verrà chiamata per convertire la scelta CryptoAPI hCryptProv , se necessario. È consigliabile passare le applicazioni al membro hNCryptKey , l'handle CNG CSP restituito dalla funzione NCryptOpenKey .

DUMMYUNIONNAME.hBCryptKey

dwKeySpec

Specifica la chiave privata da usare. Questo membro non viene usato quando viene usato il membro hNCryptKey .

Se dwKeySpec è zero, viene usato il valore AT_KEYEXCHANGE predefinito.

I valori dwKeySpec seguenti sono definiti per il provider predefinito.

Valore Significato
AT_KEYEXCHANGE
Chiavi usate per crittografare/decrittografare le chiavi di sessione.
AT_SIGNATURE
Chiavi usate per creare e verificare le firme digitali.

HashAlgorithm

Struttura CRYPT_ALGORITHM_IDENTIFIER che specifica l'algoritmo hash.

pvHashAuxInfo

Non usato. Questo membro deve essere impostato su NULL.

cAuthAttr

Numero di elementi nella matrice rgAuthAttr . Se non sono presenti attributi autenticati in rgAuthAttr, cAuthAttr è zero.

rgAuthAttr

Matrice di puntatori alle strutture CRYPT_ATTRIBUTE , ognuna delle quali contiene informazioni sull'attributo autenticate.

Lo standard PKCS #9 determina che, se sono presenti attributi, devono essere presenti almeno due elementi: l'identificatore dell'oggetto del tipo di contenuto (OID) e l'hash del messaggio. Questi attributi vengono aggiunti automaticamente dal sistema.

cUnauthAttr

Numero di elementi nella matrice rgUnauthAttr . Se non sono presenti attributi non autenticati, cUnauthAttr è zero.

rgUnauthAttr

Matrice di puntatori a strutture CRYPT_ATTRIBUTE , ognuna delle quali contiene informazioni sull'attributo non autenticate. Gli attributi non autenticati possono contenere controsignature, tra gli altri usi.

SignerId

Struttura CERT_ID contenente un identificatore univoco del certificato del firmatario. Questo membro può essere usato facoltativamente con PKCS #7 con la sintassi del messaggio crittografico (CMS). Se questo membro non è NULL e il relativo membro dwIdChoice non è zero, viene usato per identificare il certificato anziché i membri Emittente e SerialNumber della struttura CERT_INFO puntata da pCertInfo. CMS supporta le strutture KEY_IDENTIFIER e ISSUER_SERIAL_NUMBER CERT_ID. PKCS versione 1.5 supporta solo la scelta di ISSUER_SERIAL_NUMBER CERT_ID. Questo membro viene usato con CMS per l'elaborazione PKCS #7 e può essere usato solo se è definito CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS.

HashEncryptionAlgorithm

Struttura CRYPT_ALGORITHM_IDENTIFIER usata facoltativamente con PKCS #7 con CMS. Se questo membro non è NULL, l'algoritmo identificato viene usato anziché l'algoritmo SubjectPublicKeyInfo.Algorithm. Se questo membro è impostato su szOID_PKIX_NO_SIGNATURE, il valore della firma contiene solo i ottetti hash.

Per RSA, l'algoritmo di crittografia hash è normalmente identico all'algoritmo di chiave pubblica. Per DSA, l'algoritmo di crittografia hash è in genere un algoritmo di firma DSS.

Questo membro viene usato con CMS per l'elaborazione PKCS #7 e può essere usato solo se è definito CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS.

pvHashEncryptionAuxInfo

Questo membro non viene usato. Questo membro deve essere impostato su NULL se presente nella struttura dei dati. Questo membro è presente solo se è definito CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS.

Requisiti

Requisito Valore
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

CRYPT_ATTRIBUTE

CryptMsgControl

CryptMsgCountersign