Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Функция 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 |