Função NCryptKeyDerivation (ncrypt.h)
A função NCryptKeyDerivation cria uma chave de outra chave usando a função de derivação de chave especificada. A função retorna a chave em uma matriz de bytes.
Sintaxe
SECURITY_STATUS NCryptKeyDerivation(
[in] NCRYPT_KEY_HANDLE hKey,
[in] NCryptBufferDesc *pParameterList,
[out] PUCHAR pbDerivedKey,
[in] DWORD cbDerivedKey,
[out] DWORD *pcbResult,
[in] ULONG dwFlags
);
Parâmetros
[in] hKey
Identificador da chave KDF (função de derivação de chave).
[in] pParameterList
O endereço de uma estrutura NCryptBufferDesc que contém os parâmetros KDF. Os parâmetros podem ser específicos para um KDF ou genérico. A tabela a seguir mostra os parâmetros obrigatórios e opcionais para KDFs específicos implementados pelo provedor de armazenamento de chaves de software 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, em bytes, do buffer de chave.
[in] cbDerivedKey
Tamanho, em bytes, do buffer apontado pelo parâmetro pbDerivedKey .
[out] pcbResult
Ponteiro para um DWORD que recebe o número de bytes copiados para o buffer apontado pelo parâmetro pbDerivedKey .
[in] dwFlags
Sinalizadores que modificam o comportamento da função. O valor a seguir pode ser usado com o provedor de armazenamento de chaves de software da Microsoft.
Retornar valor
Retorna um código status que indica o êxito ou a falha da função.
Os códigos de retorno possíveis incluem, mas não se limitam a, o seguinte.
Código de retorno | Descrição |
---|---|
|
A função foi bem-sucedida. |
|
Os identificadores hProvider ou hKey não são válidos. |
|
Os parâmetros pwszDerivedKeyAlg e pParameterList não podem ser NULL. |
|
Não havia memória suficiente para criar a chave. |
|
Essa função não tem suporte do provedor de armazenamento de chaves. |
Comentários
Você pode usar os seguintes identificadores de algoritmo na função NCryptCreatePersistedKey antes de chamar NCryptKeyDerivation:
- 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 | ncrypt.h |
Biblioteca | Ncrypt.lib |
DLL | Ncrypt.dll |