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
KDF_CONTEXT
KDF_HASH_ALGORITHM
SP800-56A KDF_ALGORITHMID
KDF_PARTYUINFO
KDF_PARTYVINFO
KDF_HASH_ALGORITHM
KDF_SUPPPUBINFO no
KDF_SUPPPRIVINFO no
PBKDF2 KDF_HASH_ALGORITHM
KDF_SALT
KDF_ITERATION_COUNT no
CAPI_KDF KDF_HASH_ALGORITHM
 

Se puede usar el siguiente parámetro genérico:

  • KDF_GENERIC_PARAMETER
Los parámetros genéricos se asignan a parámetros específicos de KDF de la siguiente manera:

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
BCRYPT_CAPI_AES_FLAG
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
Para llamar a esta función en modo kernel, use Cng.lib, que forma parte del Kit de desarrollo de controladores (DDK). Windows Server 2008 y Windows Vista: Para llamar a esta función en modo kernel, use Ksecdd.lib.

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

Consulte también

BCryptDeriveKey

NCryptKeyDerivation