Condividi tramite


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

Vedi anche

CERT_CONTEXT

CRL_CONTEXT

CRYPT_ALGORITHM_IDENTIFIER

CRYPT_ATTRIBUTE

CryptSignAndEncryptMessage

CryptSignMessage