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 |
---|---|
|
Chiavi usate per crittografare/decrittografare le chiavi di sessione. |
|
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 |