Freigeben über


CryptXmlSign-Funktion (cryptxml.h)

Die CryptXmlSign-Funktion erstellt eine kryptografische Signatur eines SignedInfo-Elements .

Syntax

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
);

Parameter

[in] hSignature

Das Handle für eine CRYPT_XML_SIGNATURE-Struktur .

[in, optional] hKey

Das Handle eines privaten Schlüssels , der zum Signieren des SignedInfo-Elements verwendet wird. Dieser Parameter muss null für HMAC-basierte Signaturalgorithmen sein.

dwKeySpec

Ein DWORD-Wert , der den Schlüsseltyp angibt. Dieser Parameter kann einen der folgenden Werte annehmen.

Wert Bedeutung
AT_KEYEXCHANGE
1
Das Schlüsselpaar ist ein Schlüsselaustauschpaar.
AT_SIGNATURE
2
Das Schlüsselpaar ist ein Signaturpaar.
CERT_NCRYPT_KEY_SPEC
0xFFFFFFFF
Der Schlüssel ist ein CNG-Schlüssel (Cryptography API: Next Generation).

dwFlags

Ein DWORD-Wert , der steuert, wie die Daten signiert werden. Dieser Parameter kann einen der folgenden Werte annehmen.

Wert Bedeutung
CRYPT_XML_SIGN_ADD_KEYVALUE
0x00000001
Füllen Sie das KeyValue-Element aus dem im hKey-Parameter angegebenen Handle auf.
Wichtig Das flag CRYPT_XML_SIGN_ADD_KEYVALUE kann nicht verwendet werden, wenn der dwKeyInfoSpec-Parameter auf CRYPT_XML_KEYINFO_SPEC_ENCODED festgelegt ist.
 
CRYPT_XML_FLAG_DISABLE_EXTENSIONS
0x10000000
Es werden nur Standardimplementierungen für die Signatur und den Digest verwendet. Wenn dieses Flag festgelegt ist, werden keine anderen registrierten Erweiterungen geladen.

dwKeyInfoSpec

Der Typ der Datenstruktur, auf den der parameter pvKeyInfoSpec verweist. Hier sind einige mögliche Kombinationen.

dwKeyInfec pvKeyInfoSpec
CRYPT_XML_KEYINFO_SPEC_NONE Ist auf NULL festgelegt.
CRYPT_XML_KEYINFO_SPEC_ENCODED Zeigt auf eine CRYPT_XML_BLOB-Struktur
CRYPT_XML_KEYINFO_SPEC_PARAM Zeigt auf eine CRYPT_XML_KEYINFO_PARAM-Struktur

[in, optional] pvKeyInfoSpec

Ein Zeiger auf eine Struktur, deren Typ durch den Wert des dwKeyInfoSpec-Parameters bestimmt wird.

[in] pSignatureMethod

Ein Zeiger auf eine CRYPT_XML_ALGORITHM-Struktur , die die Signaturmethode angibt.

[in] pCanonicalization

Ein Zeiger auf eine CRYPT_XML_ALGORITHM-Struktur , die die Kanonisierungsmethode angibt.

Rückgabewert

Wenn die Funktion erfolgreich ist, gibt die Funktion null zurück.

Wenn die Funktion fehlschlägt, gibt sie einen HRESULT-Wert zurück, der den Fehler angibt.

Hinweise

Wenn ein Zertifikat nicht gefunden werden kann, erstellt CryptXmlSign eine Benutzeroberfläche für die Zertifikatauswahl. Wenn dieses Fenster aus einem Prozess generiert wird, der in Sitzung 0 ausgeführt wird, kann die Anwendung unerwartet beendet werden.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 7 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 R2 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile cryptxml.h
Bibliothek Cryptxml.lib
DLL Cryptxml.dll