struttura CRYPT_SIGN_MESSAGE_PARA (wincrypt.h)
La struttura CRYPT_SIGN_MESSAGE_PARA contiene informazioni per la firma dei messaggi usando un contesto di certificato di firma specificato.
Sintassi
typedef struct _CRYPT_SIGN_MESSAGE_PARA {
DWORD cbSize;
DWORD dwMsgEncodingType;
PCCERT_CONTEXT pSigningCert;
CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
void *pvHashAuxInfo;
DWORD cMsgCert;
PCCERT_CONTEXT *rgpMsgCert;
DWORD cMsgCrl;
PCCRL_CONTEXT *rgpMsgCrl;
DWORD cAuthAttr;
PCRYPT_ATTRIBUTE rgAuthAttr;
DWORD cUnauthAttr;
PCRYPT_ATTRIBUTE rgUnauthAttr;
DWORD dwFlags;
DWORD dwInnerContentType;
CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm;
void *pvHashEncryptionAuxInfo;
} CRYPT_SIGN_MESSAGE_PARA, *PCRYPT_SIGN_MESSAGE_PARA;
Members
cbSize
Dimensioni di questa struttura in byte.
dwMsgEncodingType
Tipo di codifica utilizzata. È sempre accettabile specificare sia il certificato che i tipi di codifica dei messaggi combinandoli con un'operazione OR bit per bit, come illustrato nell'esempio seguente:
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING
I tipi di codifica attualmente definiti sono:
- X509_ASN_ENCODING
- PKCS_7_ASN_ENCODING
pSigningCert
Puntatore al CERT_CONTEXT da usare nella firma.
Per consentire al contesto di fornire l'accesso alla chiave di firma privata, è necessario impostare la proprietà CERT_KEY_PROV_INFO_PROP_ID o CERT_KEY_CONTEXT_PROP_ID.
HashAlgorithm
CRYPT_ALGORITHM_IDENTIFIER contenente l'algoritmo hash usato per eseguire l'hashing dei dati da firmare.
pvHashAuxInfo
Non usato e deve essere impostato su NULL.
cMsgCert
Numero di elementi nella matrice rgpMsgCert di strutture CERT_CONTEXT . Se impostato su zero non sono inclusi certificati nel messaggio firmato.
rgpMsgCert
Matrice di puntatori a CERT_CONTEXT strutture da includere nel messaggio firmato. Se pSigningCert deve essere incluso, un puntatore deve trovarsi nella matrice rgpMsgCert .
cMsgCrl
Numero di elementi nella matrice rgpMsgCrl di puntatori a CRL_CONTEXT strutture. Se impostato su zero, nel messaggio firmato non sono incluse strutture CRL_CONTEXT .
rgpMsgCrl
Matrice di puntatori a CRL_CONTEXT strutture da includere nel messaggio firmato.
cAuthAttr
Numero di elementi nella matrice rgAuthAttr . Se non sono presenti attributi autenticati in rgAuthAttr, questo membro è impostato su zero.
rgAuthAttr
Matrice di puntatori alle strutture di CRYPT_ATTRIBUTE , ognuna contenente informazioni sull'attributo autenticato. Se sono presenti attributi autenticati, lo standard PKCS #9 determina che devono essere presenti almeno due attributi, l'identificatore OID (Content Type Object Identifier ) e l'hash del messaggio stesso. Questi attributi vengono aggiunti automaticamente dal sistema.
cUnauthAttr
Numero di elementi nella matrice rgUnauthAttr . Se non sono presenti attributi non autenticati in rgUnauthAttr, questo membro è zero.
rgUnauthAttr
Matrice di puntatori a CRYPT_ATTRIBUTE strutture che contengono informazioni sugli attributi non autenticate. Gli attributi non autenticati possono essere usati per contenere controfirma, tra gli altri usi.
dwFlags
Normalmente zero. Se l'output codificato deve essere un CMSG_SIGNED contenuto interno di un messaggio di crittografia esterno, ad esempio un messaggio di CMSG_ENVELOPED, è necessario impostare il CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAG. Se non è impostato, il messaggio verrà codificato come tipo di contenuto interno di CMSG_DATA.
CRYPT_MESSAGE_ENCAPSULATED_CONTENT_OUT_FLAG può essere impostato per incapsulare il contenuto interno non dei dati in una STRINGA OCTET. CRYPT_MESSAGE_KEYID_SIGNER_FLAG possono essere impostati per identificare i firmatari in base al relativo identificatore di chiave e non al relativo emittente e al numero di serie.
CRYPT_MESSAGE_SILENT_KEYSET_FLAG può essere impostato per eliminare qualsiasi interfaccia utente dal provider di servizi di configurazione. Per altre informazioni sul flag CRYPT_SILENT, vedere CryptAcquireContext.
dwInnerContentType
Normalmente zero. Impostare sul tipo di codifica del messaggio di input se l'input da firmare è l'output codificato di un altro messaggio di crittografia.
HashEncryptionAlgorithm
Un CRYPT_ALGORITHM_IDENTIFIER. Se presente e non NULL, viene usato anziché il membro PublicKeyInfo.Algorithm del certificato del firmatario. Si noti che per RSA, l'algoritmo di crittografia hash è in genere uguale all'algoritmo di chiave pubblica. Per DSA, l'algoritmo di crittografia hash è in genere un algoritmo di firma DSS. Questo membro può essere usato solo se è definito CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDS.
pvHashEncryptionAuxInfo
Attualmente non usato e deve essere impostato su NULL. Questo membro può essere usato solo se è definito CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDS.
Commenti
I membri HashEncryptionAlgorithm e pvHashEncryptionAuxInfo possono essere usati solo se è definito CRYPT_SIGN_MESSAGE_PARA_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 |