Funzione CryptXmlSign (cryptxml.h)

La funzione CryptXmlSign crea una firma crittografica di un elemento SignedInfo .

Sintassi

HRESULT CryptXmlSign(
  [in]           HCRYPTXML                       hSignature,
  [in, optional] HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hKey,
                 DWORD                           dwKeySpec,
                 DWORD                           dwFlags,
                 CRYPT_XML_KEYINFO_SPEC          dwKeyInfoSpec,
  [in, optional] const void                      *pvKeyInfoSpec,
  [in]           const CRYPT_XML_ALGORITHM       *pSignatureMethod,
  [in]           const CRYPT_XML_ALGORITHM       *pCanonicalization
);

Parametri

[in] hSignature

Handle di una struttura CRYPT_XML_SIGNATURE .

[in, optional] hKey

Handle di una chiave privata utilizzata per firmare l'elemento SignedInfo . Questo parametro deve essere NULL per gli algoritmi di firma basati su HMAC.

dwKeySpec

Valore DWORD che specifica il tipo di chiave. Questo parametro può avere uno dei valori seguenti.

Valore Significato
AT_KEYEXCHANGE
1
La coppia di chiavi è una coppia di scambio di chiavi.
AT_SIGNATURE
2
La coppia di chiavi è una coppia di firme.
CERT_NCRYPT_KEY_SPEC
0xffffffff
La chiave è una chiave CNG (Cryptography API: Next Generation).

dwFlags

Valore DWORD che controlla la modalità di firma dei dati. Questo parametro può avere uno dei valori seguenti.

Valore Significato
CRYPT_XML_SIGN_ADD_KEYVALUE
0x00000001
Popolare l'elemento KeyValue dall'handle specificato nel parametro hKey .
Importante Il flag CRYPT_XML_SIGN_ADD_KEYVALUE non può essere usato quando il parametro dwKeyInfoSpec è impostato su CRYPT_XML_KEYINFO_SPEC_ENCODED.
 
CRYPT_XML_FLAG_DISABLE_EXTENSIONS
0x10000000
Vengono usate solo le implementazioni predefinite per la firma e il digest. Quando questo flag è impostato, non vengono caricate altre estensioni registrate.

dwKeyInfoSpec

Tipo di struttura dei dati a cui punta il parametro pvKeyInfoSpec . Ecco alcune possibili combinazioni.

dwKeyInfec pvKeyInfoSpec
CRYPT_XML_KEYINFO_SPEC_NONE È impostato su NULL
CRYPT_XML_KEYINFO_SPEC_ENCODED Punta a una struttura CRYPT_XML_BLOB
CRYPT_XML_KEYINFO_SPEC_PARAM Punta a una struttura CRYPT_XML_KEYINFO_PARAM

[in, optional] pvKeyInfoSpec

Puntatore a una struttura, il tipo di cui è determinato dal valore del parametro dwKeyInfoSpec .

[in] pSignatureMethod

Puntatore a una struttura CRYPT_XML_ALGORITHM che specifica il metodo di firma.

[in] pCanonicalization

Puntatore a una struttura CRYPT_XML_ALGORITHM che specifica il metodo di canonizzazione.

Valore restituito

Se la funzione ha esito positivo, la funzione restituisce zero.

Se la funzione ha esito negativo, restituisce un valore HRESULT che indica l'errore.

Commenti

Se non è possibile trovare un certificato, CryptXmlSign creerà un'interfaccia utente per la selezione del certificato. Se questa finestra viene generata da un processo in esecuzione nella sessione 0, l'applicazione potrebbe terminare in modo imprevisto.

Requisiti

   
Client minimo supportato Windows 7 [solo app desktop]
Server minimo supportato Windows Server 2008 R2 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione cryptxml.h
Libreria Cryptxml.lib
DLL Cryptxml.dll