NCryptSignHash-Funktion (ncrypt.h)

Die NCryptSignHash-Funktion erstellt eine Signatur eines Hashwerts.

Syntax

SECURITY_STATUS NCryptSignHash(
  [in]           NCRYPT_KEY_HANDLE hKey,
  [in, optional] VOID              *pPaddingInfo,
  [in]           PBYTE             pbHashValue,
  [in]           DWORD             cbHashValue,
  [out]          PBYTE             pbSignature,
  [in]           DWORD             cbSignature,
  [out]          DWORD             *pcbResult,
  [in]           DWORD             dwFlags
);

Parameter

[in] hKey

Das Handle des Schlüssels, der zum Signieren des Hashs verwendet werden soll.

[in, optional] pPaddingInfo

Ein Zeiger auf eine Struktur, die Abstandsinformationen enthält. Der tatsächliche Strukturtyp, auf den dieser Parameter verweist, hängt vom Wert des dwFlags-Parameters ab. Dieser Parameter wird nur mit asymmetrischen Schlüsseln verwendet und muss andernfalls NULL sein.

[in] pbHashValue

Ein Zeiger auf einen Puffer, der den zu signierenden Hashwert enthält. Der cbInput-Parameter enthält die Größe dieses Puffers.

[in] cbHashValue

Die Anzahl der zu signierenden Bytes im pbHashValue-Puffer .

[out] pbSignature

Die Adresse eines Puffers, der die von dieser Funktion erzeugte Signatur empfangen soll. Der cbSignature-Parameter enthält die Größe dieses Puffers.

Wenn dieser Parameter NULL ist, berechnet diese Funktion die für die Signatur erforderliche Größe und gibt die Größe an der Position zurück, auf die der pcbResult-Parameter verweist.

[in] cbSignature

Die Größe des pbSignature-Puffers in Bytes. Dieser Parameter wird ignoriert, wenn der pbSignature-ParameterNULL ist.

[out] pcbResult

Ein Zeiger auf eine DWORD-Variable , die die Anzahl der Bytes empfängt, die in den pbSignature-Puffer kopiert wurden.

Wenn pbSignatureNULL ist, empfängt diese die größe in Bytes, die für die Signatur erforderlich ist.

[in] dwFlags

Flags, die das Funktionsverhalten ändern. Der zulässige Satz von Flags hängt vom Typ des Schlüssels ab, der durch den hKey-Parameter angegeben wird.

Wenn es sich bei dem Schlüssel um einen symmetrischen Schlüssel handelt, wird dieser Parameter nicht verwendet und sollte auf 0 (null) festgelegt werden.

Wenn der Schlüssel ein asymmetrischer Schlüssel ist, kann dies einer der folgenden Werte sein.

Wert Bedeutung
BCRYPT_PAD_PKCS1
Verwenden Sie das PKCS1-Abstandsschema. Der pPaddingInfo-Parameter ist ein Zeiger auf eine BCRYPT_PKCS1_PADDING_INFO-Struktur .
BCRYPT_PAD_PSS
Verwenden Sie das PSS-Auffüllungsschema (Probabilistic Signature Scheme). Der pPaddingInfo-Parameter ist ein Zeiger auf eine BCRYPT_PSS_PADDING_INFO-Struktur .
NCRYPT_SILENT_FLAG
Fordert an, dass der Schlüsseldienstanbieter (Key Service Provider, KSP) keine Benutzeroberfläche anzeigt. Wenn der Anbieter die Benutzeroberfläche für den Betrieb anzeigen muss, schlägt der Aufruf fehl, und der KSP sollte den NTE_SILENT_CONTEXT Fehlercode als letzten Fehler festlegen.

Rückgabewert

Gibt einen status Code zurück, der den Erfolg oder Fehler der Funktion angibt.

Mögliche Rückgabecodes sind u. a. die folgenden:

Rückgabecode Beschreibung
ERROR_SUCCESS
Die Funktion war erfolgreich.
NTE_BAD_ALGID
Der durch den hKey-Parameter dargestellte Schlüssel unterstützt keine Signatur.
NTE_BAD_FLAGS
Der dwFlags-Parameter enthält einen ungültigen Wert.
NTE_INVALID_HANDLE
Der hKey-Parameter ist ungültig.
NTE_INVALID_PARAMETER
Mindestens ein Parameter ist ungültig.
NTE_NO_MEMORY
Ein Speicherbelegungsfehler ist aufgetreten.

Hinweise

Ein Dienst darf diese Funktion nicht über seine StartService-Funktion aufrufen. Wenn ein Dienst diese Funktion über seine StartService-Funktion aufruft, kann ein Deadlock auftreten, und der Dienst reagiert möglicherweise nicht mehr.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile ncrypt.h
Bibliothek Ncrypt.lib
DLL Ncrypt.dll