Função BCryptKeyDerivation (bcrypt.h)
A função BCryptKeyDerivation deriva uma chave sem exigir um contrato secreto. Ele é semelhante na funcionalidade a BCryptDeriveKey , mas não requer um valor de BCRYPT_SECRET_HANDLE como entrada.
Sintaxe
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 da chave de entrada.
[in, optional] pParameterList
Ponteiro para uma estrutura BCryptBufferDesc que contém os parâmetros KDF. Esse parâmetro é opcional e pode ser NULL se não for necessário. Os parâmetros podem ser específicos para uma função de derivação de chave (KDF) ou genérica. A tabela a seguir mostra os parâmetros obrigatórios e opcionais para KDFs específicos implementados pelo provedor Primitivo da Microsoft.
KDF | Parâmetro | Obrigatório |
---|---|---|
SP800-108 HMAC no modo de contador | KDF_LABEL | sim |
KDF_CONTEXT | sim | |
KDF_HASH_ALGORITHM | sim | |
SP800-56A | KDF_ALGORITHMID | sim |
KDF_PARTYUINFO | sim | |
KDF_PARTYVINFO | sim | |
KDF_HASH_ALGORITHM | sim | |
KDF_SUPPPUBINFO | não | |
KDF_SUPPPRIVINFO | não | |
PBKDF2 | KDF_HASH_ALGORITHM | sim |
KDF_SALT | sim | |
KDF_ITERATION_COUNT | não | |
CAPI_KDF | KDF_HASH_ALGORITHM | sim |
O seguinte parâmetro genérico pode ser usado:
- KDF_GENERIC_PARAMETER
SP800-108 HMAC no modo de 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 – o padrão é 10000
CAPI_KDF
- KDF_GENERIC_PARAMETER = Não usado
[out] pbDerivedKey
Endereço de um buffer que recebe a chave. O parâmetro cbDerivedKey contém o tamanho desse buffer.
[in] cbDerivedKey
Tamanho, em bytes, do buffer apontado pelo parâmetro pbDerivedKey .
[out] pcbResult
Ponteiro para uma variável que recebe o número de bytes que foram copiados para o buffer apontado pelo parâmetro pbDerivedKey .
[in] dwFlags
Sinalizadores que modificam o comportamento dessa função. O valor a seguir pode ser usado com o provedor Microsoft Primitive.
Valor | Significado |
---|---|
|
Especifica que o algoritmo de destino é AES e que, portanto, a chave deve ser expandida duas vezes. Esse sinalizador só é válido com o algoritmo CAPI_KDF. |
Retornar valor
Retorna um código status que indica o êxito ou a falha da função.
Comentários
Você pode usar os seguintes identificadores de algoritmo na função BCryptOpenAlgorithmProvider antes de chamar BCryptKeyDerivation:
- BCRYPT_CAPI_KDF_ALGORITHM
- BCRYPT_SP800108_CTR_HMAC_ALGORITHM
- BCRYPT_SP80056A_CONCAT_ALGORITHM
- BCRYPT_PBKDF2_ALGORITHM
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 8 [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2012 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | bcrypt.h |
Biblioteca | Bcrypt.lib |
DLL | Bcrypt.dll |