NCryptKeyDerivation-Funktion (ncrypt.h)
Die Funktion NCryptKeyDerivation erstellt mithilfe der angegebenen Schlüsselableitungsfunktion einen Schlüssel aus einem anderen Schlüssel. Die Funktion gibt den Schlüssel in einem Bytearray zurück.
Syntax
SECURITY_STATUS NCryptKeyDerivation(
[in] NCRYPT_KEY_HANDLE hKey,
[in] NCryptBufferDesc *pParameterList,
[out] PUCHAR pbDerivedKey,
[in] DWORD cbDerivedKey,
[out] DWORD *pcbResult,
[in] ULONG dwFlags
);
Parameter
[in] hKey
Handle des KDF-Schlüssels (Key Derivation Function).
[in] pParameterList
Die Adresse einer NCryptBufferDesc-Struktur , die die KDF-Parameter enthält. Die Parameter können spezifisch für ein KDF-Format oder generisch sein. In der folgenden Tabelle sind die erforderlichen und optionalen Parameter für bestimmte KDFs aufgeführt, die vom Microsoft-Softwareschlüsselspeicheranbieter 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 des Schlüsselpuffers in Bytes.
[in] cbDerivedKey
Größe des Puffers in Bytes, auf den der PbDerivedKey-Parameter verweist.
[out] pcbResult
Zeiger auf ein DWORD , das die Anzahl der Bytes empfängt, die in den Puffer kopiert werden, auf den der pbDerivedKey-Parameter verweist.
[in] dwFlags
Flags, die das Funktionsverhalten ändern. Der folgende Wert kann mit dem Microsoft-Softwareschlüsselspeicheranbieter verwendet werden.
Rückgabewert
Gibt einen status Code zurück, der den Erfolg oder Fehler der Funktion angibt.
Mögliche Rückgabecodes umfassen folgendes, sind aber nicht darauf beschränkt.
Rückgabecode | Beschreibung |
---|---|
|
Die Funktion war erfolgreich. |
|
Die hProvider - oder hKey-Handles sind ungültig. |
|
Die Parameter pwszDerivedKeyAlg und pParameterList können nicht NULL sein. |
|
Es war nicht genügend Arbeitsspeicher vorhanden, um den Schlüssel zu erstellen. |
|
Diese Funktion wird vom Schlüsselspeicheranbieter nicht unterstützt. |
Hinweise
Sie können die folgenden Algorithmusbezeichner in der Funktion NCryptCreatePersistedKey verwenden, bevor Sie NCryptKeyDerivation 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 | ncrypt.h |
Bibliothek | Ncrypt.lib |
DLL | Ncrypt.dll |