Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция BCryptKeyDerivation наследует ключ, не требуя секретного соглашения. Он похож по функциональности на BCryptDeriveKey , но не требует BCRYPT_SECRET_HANDLE значения в качестве входных данных.
Синтаксис
NTSTATUS BCryptKeyDerivation(
[in] BCRYPT_KEY_HANDLE hKey,
[in, optional] BCryptBufferDesc *pParameterList,
[out] PUCHAR pbDerivedKey,
[in] ULONG cbDerivedKey,
[out] ULONG *pcbResult,
[in] ULONG dwFlags
);
Параметры
[in] hKey
Дескриптор входного ключа.
[in, optional] pParameterList
Указатель на структуру BCryptBufferDesc , содержащую параметры KDF. Этот параметр является необязательным и может иметь значение NULL , если он не требуется. Параметры могут быть характерными для функции наследования ключа (KDF) или универсальной. В следующей таблице показаны обязательные и необязательные параметры для конкретных KDF, реализованных поставщиком Microsoft Primitive.
| KDF | Параметр | Обязательно |
|---|---|---|
| SP800-108 HMAC в режиме счетчика | KDF_LABEL | да |
| KDF_CONTEXT | да | |
| KDF_HASH_ALGORITHM | да | |
| SP800-56A | KDF_ALGORITHMID | да |
| KDF_PARTYUINFO | да | |
| KDF_PARTYVINFO | да | |
| KDF_HASH_ALGORITHM | да | |
| KDF_SUPPPUBINFO | нет | |
| KDF_SUPPPRIVINFO | нет | |
| PBKDF2 | KDF_HASH_ALGORITHM | да |
| KDF_SALT | да | |
| KDF_ITERATION_COUNT | нет | |
| CAPI_KDF | KDF_HASH_ALGORITHM | да |
Можно использовать следующий универсальный параметр:
- KDF_GENERIC_PARAMETER
SP800-108 HMAC в режиме счетчика:
- 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 — по умолчанию — 10000
CAPI_KDF
- KDF_GENERIC_PARAMETER = не используется
[out] pbDerivedKey
Адрес буфера, получающего ключ. Параметр cbDerivedKey содержит размер этого буфера.
[in] cbDerivedKey
Размер (в байтах) буфера, на который указывает параметр pbDerivedKey .
[out] pcbResult
Указатель на переменную, которая получает количество байтов, скопированных в буфер, на который указывает параметр pbDerivedKey .
[in] dwFlags
Флаги, которые изменяют поведение этой функции. Следующее значение можно использовать с поставщиком Microsoft Primitive.
| Значение | Значение |
|---|---|
|
Указывает, что целевым алгоритмом является AES и поэтому ключ должен быть развернут дважды. Этот флаг действителен только с алгоритмом CAPI_KDF. |
Возвращаемое значение
Возвращает код состояния, указывающий на успешное или неудачное выполнение функции.
Комментарии
Перед вызовом BCryptKeyDerivation можно использовать следующие идентификаторы алгоритма в функции BCryptOpenAlgorithmProvider:
- BCRYPT_CAPI_KDF_ALGORITHM
- BCRYPT_SP800108_CTR_HMAC_ALGORITHM
- BCRYPT_SP80056A_CONCAT_ALGORITHM
- BCRYPT_PBKDF2_ALGORITHM
Требования
| Требование | Значение |
|---|---|
| Минимальная версия клиента | Windows 8 [классические приложения | Приложения UWP] |
| Минимальная версия сервера | Windows Server 2012 [классические приложения | Приложения UWP] |
| Целевая платформа | Windows |
| Header | bcrypt.h |
| Библиотека | Bcrypt.lib |
| DLL | Bcrypt.dll |