BCryptSignHash-Funktion (bcrypt.h)

Die BCryptSignHash-Funktion erstellt eine Signatur eines Hashwerts.

Syntax

NTSTATUS BCryptSignHash(
  [in]           BCRYPT_KEY_HANDLE hKey,
  [in, optional] VOID              *pPaddingInfo,
  [in]           PUCHAR            pbInput,
  [in]           ULONG             cbInput,
  [out]          PUCHAR            pbOutput,
  [in]           ULONG             cbOutput,
  [out]          ULONG             *pcbResult,
  [in]           ULONG             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] pbInput

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

[in] cbInput

Die Anzahl der zu signierenden Bytes im pbInput-Puffer .

[out] pbOutput

Die Adresse eines Puffers, der die von dieser Funktion erzeugte Signatur empfangen soll. Der cbOutput-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] cbOutput

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

[out] pcbResult

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

Wenn pbOutputNULL ist, erhält dieser die größe in Bytes, die für die Signatur erforderlich ist.

[in] dwFlags

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

Dies kann 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 .

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
STATUS_SUCCESS
Die Funktion war erfolgreich.
STATUS_INVALID_HANDLE
Das durch den hKey-Parameter angegebene Schlüsselhandle ist ungültig.
STATUS_NOT_SUPPORTED
Der Algorithmusanbieter, der zum Erstellen des durch den hKey-Parameter angegebenen Schlüsselhandles verwendet wird, ist kein Signaturalgorithmus.
STATUS_NO_MEMORY
Ein Speicherbelegungsfehler ist aufgetreten.
STATUS_BUFFER_TOO_SMALL
Die vom cbOutput-Parameter angegebene Arbeitsspeichergröße ist nicht groß genug, um die Signatur zu speichern.

Hinweise

Diese Funktion verschlüsselt den Hashwert mit dem angegebenen Schlüssel, um die Signatur zu erstellen.

Um später zu überprüfen, ob die Signatur gültig ist, rufen Sie die Funktion BCryptVerifySignature mit einem identischen Schlüssel und einem identischen Hash der ursprünglichen Daten auf.

Je nachdem, welche Prozessormodi ein Anbieter unterstützt, kann BCryptSignHash entweder über den Benutzermodus oder den Kernelmodus aufgerufen werden. Aufrufer im Kernelmodus können entweder am PASSIVE_LEVELIRQL oder DISPATCH_LEVEL IRQL ausgeführt werden. Wenn die aktuelle IRQL-Ebene DISPATCH_LEVEL ist, muss das im hKey-Parameter bereitgestellte Handle von einem Algorithmushandle abgeleitet werden, das von einem Anbieter zurückgegeben wird, der mit dem flag BCRYPT_PROV_DISPATCH geöffnet wurde, und alle an die BCryptSignHash-Funktion übergebenen Zeiger müssen auf nicht ausgestellten (oder gesperrten) Arbeitsspeicher verweisen.

Um diese Funktion im Kernelmodus aufzurufen, verwenden Sie Cng.lib, die Teil des Driver Development Kit (DDK) ist. Windows Server 2008 und Windows Vista: Verwenden Sie Ksecdd.lib, um diese Funktion im Kernelmodus aufzurufen.

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 bcrypt.h
Bibliothek Bcrypt.lib
DLL Bcrypt.dll

Weitere Informationen

BCryptVerifySignature