BCryptKeyDerivation-Funktion (bcrypt.h)

Die BCryptKeyDerivation-Funktion leitet einen Schlüssel ab, ohne dass eine geheime Vereinbarung erforderlich ist. Die Funktionalität ähnelt BCryptDeriveKey , erfordert jedoch keinen BCRYPT_SECRET_HANDLE Wert als Eingabe.

Syntax

NTSTATUS BCryptKeyDerivation(
  [in]           BCRYPT_KEY_HANDLE hKey,
  [in, optional] BCryptBufferDesc  *pParameterList,
  [out]          PUCHAR            pbDerivedKey,
  [in]           ULONG             cbDerivedKey,
  [out]          ULONG             *pcbResult,
  [in]           ULONG             dwFlags
);

Parameter

[in] hKey

Handle des Eingabeschlüssels.

[in, optional] pParameterList

Zeiger auf eine BCryptBufferDesc-Struktur , die die KDF-Parameter enthält. Dieser Parameter ist optional und kann NULL sein, wenn er nicht benötigt wird. Die Parameter können spezifisch für eine Schlüsselableitungsfunktion (Key Derivation Function, KDF) oder generisch sein. Die folgende Tabelle zeigt die erforderlichen und optionalen Parameter für bestimmte KDFs, die vom Microsoft Primitive-Anbieter implementiert werden.

KDF Parameter Erforderlich
SP800-108 HMAC im Zählermodus KDF_LABEL ja
KDF_CONTEXT ja
KDF_HASH_ALGORITHM ja
SP800-56A KDF_ALGORITHMID ja
KDF_PARTYUINFO ja
KDF_PARTYVINFO ja
KDF_HASH_ALGORITHM ja
KDF_SUPPPUBINFO nein
KDF_SUPPPRIVINFO nein
PBKDF2 KDF_HASH_ALGORITHM ja
KDF_SALT ja
KDF_ITERATION_COUNT nein
CAPI_KDF KDF_HASH_ALGORITHM ja
 

Der folgende generische Parameter kann verwendet werden:

  • KDF_GENERIC_PARAMETER
Generische Parameter werden KDF-spezifischen Parametern wie folgt zugeordnet:

SP800-108 HMAC im Zählermodus:

  • KDF_GENERIC_PARAMETER = KDF_LABEL||0x00||KDF_CONTEXT

SP800-56A

  • KDF_GENERIC_PARAMETER = KDF_ALGORITHMID || KDF_PARTYUINFO || KDF_PARTYVINFO {|| KDF_SUPPPUBINFO } {|| KDF_SUPPPRIVINFO }

PBKDF2

  • KDF_GENERIC_PARAMETER = KDF_SALT
  • KDF_ITERATION_COUNT – Standardwert 10000

CAPI_KDF

  • KDF_GENERIC_PARAMETER = Nicht verwendet

[out] pbDerivedKey

Adresse eines Puffers, der den Schlüssel empfängt. Der cbDerivedKey-Parameter enthält die Größe dieses Puffers.

[in] cbDerivedKey

Größe des Puffers in Bytes, auf den der PbDerivedKey-Parameter verweist.

[out] pcbResult

Zeiger auf eine Variable, die die Anzahl der Bytes empfängt, die in den Puffer kopiert wurden, auf den der pbDerivedKey-Parameter verweist.

[in] dwFlags

Flags, die das Verhalten dieser Funktion ändern. Der folgende Wert kann mit dem Microsoft Primitive-Anbieter verwendet werden.

Wert Bedeutung
BCRYPT_CAPI_AES_FLAG
Gibt an, dass der Zielalgorithmus AES ist und dass der Schlüssel daher doppelt erweitert werden muss. Dieses Flag ist nur für den CAPI_KDF-Algorithmus gültig.

Rückgabewert

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

Hinweise

Sie können die folgenden Algorithmusbezeichner in der Funktion BCryptOpenAlgorithmProvider verwenden, bevor Sie BCryptKeyDerivation aufrufen:

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

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8 [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2012 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile bcrypt.h
Bibliothek Bcrypt.lib
DLL Bcrypt.dll

Weitere Informationen

BCryptDeriveKey

NCryptKeyDerivation