Freigeben über


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 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 Bytes im pbInput- Zu signierenden Puffers.

[out] pbOutput

Die Adresse eines Puffers, der die von dieser Funktion erzeugte Signatur empfängt. 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 Byte. Dieser Parameter wird ignoriert, wenn der parameter pbOutputNULList.

[out] pcbResult

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

Wenn pbOutput-NULL-ist, erhält dies die Für die Signatur erforderliche Größe in Bytes.

[in] dwFlags

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

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 Probabilistische Signaturschema (PSS)-Abstandsschema. Der pPaddingInfo Parameter ist ein Zeiger auf eine BCRYPT_PSS_PADDING_INFO Struktur.

Rückgabewert

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

Mögliche Rückgabecodes umfassen, aber nicht beschränkt auf Folgendes.

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 vom hKey Parameters angegebenen Schlüsselhandle verwendet wird, ist kein Signaturalgorithmus.
STATUS_NO_MEMORY
Fehler bei der Speicherzuweisung.
STATUS_BUFFER_TOO_SMALL
Die durch den cbOutput Parameter angegebene Speichergröße ist nicht groß genug, um die Signatur zu speichern.

Bemerkungen

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 BCryptVerifySignature Funktion 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. Kernelmodusaufrufer können entweder PASSIVE_LEVELIRQL- oder DISPATCH_LEVEL IRQL ausgeführt werden. Wenn die aktuelle IRQL-Ebene DISPATCH_LEVEList, muss das im hKey Parameter bereitgestellte Handle von einem Algorithmushandle abgeleitet werden, das von einem Anbieter zurückgegeben wird, der mit dem BCRYPT_PROV_DISPATCH Flag geöffnet wurde, und alle Zeiger, die an die BCryptSignHash--Funktion übergeben wurden, müssen auf nicht seitenseitigen (oder gesperrten) Speicher verweisen.

Um diese Funktion im Kernelmodus aufzurufen, verwenden Sie Cng.lib, das 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
mindestens unterstützte Client- Windows Vista [Desktop-Apps | UWP-Apps]
mindestens unterstützte Server- Windows Server 2008 [Desktop-Apps | UWP-Apps]
Zielplattform- Fenster
Header- bcrypt.h
Library Bcrypt.lib
DLL- Bcrypt.dll

Siehe auch

BCryptVerifySignature