Función BCryptKeyDerivation (bcrypt.h)
La función BCryptKeyDerivation deriva una clave sin necesidad de un contrato secreto. Es similar a la funcionalidad de BCryptDeriveKey , pero no requiere un valor de BCRYPT_SECRET_HANDLE como entrada.
Sintaxis
NTSTATUS BCryptKeyDerivation(
[in] BCRYPT_KEY_HANDLE hKey,
[in, optional] BCryptBufferDesc *pParameterList,
[out] PUCHAR pbDerivedKey,
[in] ULONG cbDerivedKey,
[out] ULONG *pcbResult,
[in] ULONG dwFlags
);
Parámetros
[in] hKey
Identificador de la clave de entrada.
[in, optional] pParameterList
Puntero a una estructura BCryptBufferDesc que contiene los parámetros de KDF. Este parámetro es opcional y puede ser NULL si no es necesario. Los parámetros pueden ser específicos de una función de derivación de claves (KDF) o genérica. En la tabla siguiente se muestran los parámetros obligatorios y opcionales para KDF específicos implementados por el proveedor primitivo de Microsoft.
KDF | Parámetro | Obligatorio |
---|---|---|
SP800-108 HMAC en modo contador | KDF_LABEL | sí |
KDF_CONTEXT | sí | |
KDF_HASH_ALGORITHM | sí | |
SP800-56A | KDF_ALGORITHMID | sí |
KDF_PARTYUINFO | sí | |
KDF_PARTYVINFO | sí | |
KDF_HASH_ALGORITHM | sí | |
KDF_SUPPPUBINFO | no | |
KDF_SUPPPRIVINFO | no | |
PBKDF2 | KDF_HASH_ALGORITHM | sí |
KDF_SALT | sí | |
KDF_ITERATION_COUNT | no | |
CAPI_KDF | KDF_HASH_ALGORITHM | sí |
Se puede usar el siguiente parámetro genérico:
- KDF_GENERIC_PARAMETER
SP800-108 HMAC en modo contador:
- 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: el valor predeterminado es 10000
CAPI_KDF
- KDF_GENERIC_PARAMETER = No usado
[out] pbDerivedKey
Dirección de un búfer que recibe la clave. El parámetro cbDerivedKey contiene el tamaño de este búfer.
[in] cbDerivedKey
Tamaño, en bytes, del búfer al que apunta el parámetro pbDerivedKey .
[out] pcbResult
Puntero a una variable que recibe el número de bytes copiados en el búfer al que apunta el parámetro pbDerivedKey .
[in] dwFlags
Marcas que modifican el comportamiento de esta función. El siguiente valor se puede usar con el proveedor Primitivo de Microsoft.
Valor | Significado |
---|---|
|
Especifica que el algoritmo de destino es AES y que la clave debe expandirse doblemente. Esta marca solo es válida con el algoritmo CAPI_KDF. |
Valor devuelto
Devuelve un código de estado que indica el éxito o error de la función.
Comentarios
Puede usar los siguientes identificadores de algoritmo en la función BCryptOpenAlgorithmProvider antes de llamar a BCryptKeyDerivation:
- BCRYPT_CAPI_KDF_ALGORITHM
- BCRYPT_SP800108_CTR_HMAC_ALGORITHM
- BCRYPT_SP80056A_CONCAT_ALGORITHM
- BCRYPT_PBKDF2_ALGORITHM
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 8 [aplicaciones de escritorio | Aplicaciones para UWP] |
Servidor mínimo compatible | Windows Server 2012 [aplicaciones de escritorio | Aplicaciones para UWP] |
Plataforma de destino | Windows |
Encabezado | bcrypt.h |
Library | Bcrypt.lib |
Archivo DLL | Bcrypt.dll |