Freigeben über


BCryptVerifySignature-Funktion (bcrypt.h)

Die BCryptVerifySignature-Funktion überprüft, ob die angegebene Signatur mit dem angegebenen Hash übereinstimmt.

Syntax

NTSTATUS BCryptVerifySignature(
  [in]           BCRYPT_KEY_HANDLE hKey,
  [in, optional] VOID              *pPaddingInfo,
  [in]           PUCHAR            pbHash,
  [in]           ULONG             cbHash,
  [in]           PUCHAR            pbSignature,
  [in]           ULONG             cbSignature,
  [in]           ULONG             dwFlags
);

Die Parameter

[in] hKey

Das Handle des Schlüssels, der zum Entschlüsseln der Signatur verwendet werden soll. Dies muss ein identischer Schlüssel oder der öffentliche Schlüsselteil des Schlüsselpaars sein, der zum Signieren der Daten mit der BCryptSignHash-Funktion verwendet wird.

[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 erfolgen NULL .

pPaddingInfo muss für LMS und XMSS verwendet werden NULL , da keine zusätzlichen Informationen erforderlich sind, um eine andere Signatur als den Schlüssel und die Eingabe zu generieren.

[in] pbHash

Die Adresse eines Puffers, der den Hash der Daten enthält. Der cbHash-Parameter enthält die Größe dieses Puffers.

[in] cbHash

Die Größe des PbHash-Puffers in Bytes.

[in] pbSignature

Die Adresse eines Puffers, der den signierten Hash der Daten enthält. Die BCryptSignHash-Funktion wird verwendet, um die Signatur zu erstellen. Der parameter cbSignature enthält die Größe dieses Puffers.

[in] cbSignature

Die Größe des PbSignature-Puffers in Bytes. Die BCryptSignHash-Funktion wird verwendet, um die Signatur zu erstellen.

[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.

dwFlags müssen für LMS und XMSS null sein, da keine zusätzlichen Informationen erforderlich sind, um eine andere Signatur als den Schlüssel und die Eingabe zu generieren.

Wenn der Schlüssel ein symmetrischer Schlüssel ist, wird dieser Parameter nicht verwendet und sollte null sein.

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

Wert Bedeutung
BCRYPT_PAD_PKCS1 Das PKCS1-Abstandsschema wurde beim Erstellen der Signatur verwendet. Der pPaddingInfo-Parameter ist ein Zeiger auf eine BCRYPT_PKCS1_PADDING_INFO Struktur.
BCRYPT_PAD_PQDSA Verwenden Sie das PQ-Abstandsschema für ML-DSA oder SLH-DSA. Der pPaddingInfo-Parameter ist ein Zeiger auf eine BCRYPT_PQDSA_PADDING_INFO Struktur.

Anmerkung: Dies muss festgelegt werden, wenn sie einen Vorabhash ML-DSA Variante verwenden.
BCRYPT_PAD_PSS Das Probabilistische Signaturschema (PSS)-Abstandsschema wurde beim Erstellen der Signatur verwendet. 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, sind jedoch nicht beschränkt auf Folgendes:

Rückgabecode BESCHREIBUNG
STATUS_SUCCESS Die Funktion war erfolgreich.
STATUS_INVALID_SIGNATURE Die Signatur wurde nicht überprüft.
NTE_NO_MEMORY Fehler bei der Speicherzuweisung.
STATUS_INVALID_PARAMETER Einer der angegebenen Parameter ist ungültig.
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-Parameter angegebenen Schlüsselhandle verwendet wird, ist kein Signaturalgorithmus.

Bemerkungen

Diese Funktion berechnet die Signatur mit dem angegebenen Schlüssel und vergleicht dann den berechneten Signaturwert mit dem angegebenen Signaturwert.

Um diese Funktion zu verwenden, müssen Sie die Daten mithilfe desselben Hashingalgorithmus hashen, der zum Erstellen des signierten Hashwerts verwendet wurde. Falls zutreffend, müssen Sie auch das gleiche Abstandsschema angeben, das beim Erstellen der Signatur angegeben wurde.

Für ML-DSA und SLH-DSA müssen PbHash und cbHash keine Hashwerte sein und können beliebige Längeneingaben sein.

Je nachdem, welche Prozessormodi ein Anbieter unterstützt, kann BCryptVerifySignature 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_LEVEL ist, muss das im hKey-Parameter bereitgestellte Handle von einem Algorithmushandle abgeleitet werden, das von einem Anbieter zurückgegeben wird, der mithilfe des BCRYPT_PROV_DISPATCH-Flags geöffnet wurde, und alle Zeiger, die an die BCryptVerifySignature-Funktion übergeben werden, müssen auf nicht seitenseitigen (oder gesperrten) Speicher verweisen.

Um diese Funktion im Kernelmodus aufzurufen, verwenden Sie Cng.libdas Driver Development Kit (DDK). Windows Server 2008 und Windows Vista: Um diese Funktion im Kernelmodus aufzurufen, verwenden Sie Ksecdd.lib.

Anforderungen

Anforderung Wert
Mindestens unterstützter Client Windows Vista [Desktop-Apps | UWP-Apps]
Mindestanforderungen für unterstützte Server Windows Server 2008 [Desktop-Apps | UWP-Apps]
Zielplattform Fenster
Überschrift bcrypt.h
Bibliothek Bcrypt.lib
DLL Bcrypt.dll

Siehe auch

BCryptSignHash