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