Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция BCryptDuplicateKey создает дубликат симметричного ключа.
Синтаксис
NTSTATUS BCryptDuplicateKey(
[in] BCRYPT_KEY_HANDLE hKey,
[out] BCRYPT_KEY_HANDLE *phNewKey,
[out] PUCHAR pbKeyObject,
[in] ULONG cbKeyObject,
[in] ULONG dwFlags
);
Параметры
[in] hKey
Дескриптор ключа для дублирования. Это должен быть дескриптор симметричного ключа.
[out] phNewKey
Указатель на переменную BCRYPT_KEY_HANDLE, которая получает дескриптор повторяющегося ключа. Этот дескриптор используется в последующих функциях, требующих ключа, например BCryptEncrypt. Этот дескриптор должен быть освобожден, если он больше не нужен, передав его в функцию BCryptDekey.
[out] pbKeyObject
Необязательный указательна буфер, который получает повторяющийся объект ключа. Параметр cbKeyObject содержит размер этого буфера. Требуемый размер этого буфера можно получить путем вызова функции BCryptGetProperty для получения свойства BCRYPT_OBJECT_LENGTH. Это обеспечит размер ключевого объекта для указанного алгоритма.
Эту память можно освободить только после уничтожения дескриптора ключа phNew Key.
Если значение этого параметра равно null и значение параметра cbKeyObject равно нулю, память для повторяющегося ключевого объекта выделяется этой функцией и освобождается BCryptDeskKey. Windows 7: эта функция управления памятью доступна начиная с Windows 7.
[in] cbKeyObject
Размер в байтах буфера pbKeyObject.
Если значение этого параметра равно нулю, а значение параметра pbKeyObject равно NULL, память для повторяющегося ключевого объекта выделяется этой функцией и освобождается BCryptDedatakey. Windows 7: эта функция управления памятью доступна начиная с Windows 7.
[in] dwFlags
Набор флагов, изменяющих поведение этой функции. В настоящее время флаги не определены, поэтому этот параметр должен быть равен нулю.
Возвращаемое значение
Возвращает код состояния, указывающий на успешность или сбой функции.
Возможные коды возврата включают в себя, но не ограничиваются следующими.
| Возвращаемый код | Описание |
|---|---|
|
Функция была успешной. |
|
Размер ключевого объекта, указанного параметром cbKeyObject, недостаточно велик для хранения ключевого объекта. |
|
Дескриптор ключа в параметре hKey hKey недопустим. Это значение также возвращается, если ключ для дубликата не является симметричным ключом. |
|
Один или несколько параметров недопустимы. |
Замечания
В зависимости от того, какие режимы процессора поддерживает поставщик, BCryptDuplicateKey можно вызывать из пользовательского режима или режима ядра. Вызывающие серверы режима ядра могут выполняться в PASSIVE_LEVELIRQL или DISPATCH_LEVEL IRQL. Если текущий уровень IRQL DISPATCH_LEVEL, дескриптор, предоставленный в параметре hKey, должен быть производным от дескриптора алгоритма, возвращаемого поставщиком, который был открыт с флагом BCRYPT_PROV_DISPATCH, и все указатели, переданные в функцию BCryptDuplicateKey, должны ссылаться на непагированную (или заблокированную) память.
Чтобы вызвать эту функцию в режиме ядра, используйте Cng.lib, которая входит в состав пакета средств разработки драйверов (DDK). Windows Server 2008 и Windows Vista: для вызова этой функции в режиме ядра используйте Ksecdd.lib.
Требования
| Требование | Ценность |
|---|---|
| Минимально поддерживаемый клиент | Windows Vista [классические приложения | Приложения UWP] |
| минимальный поддерживаемый сервер | Windows Server 2008 [классические приложения | Приложения UWP] |
| целевая платформа | Виндоус |
| Заголовок | bcrypt.h |
| библиотека | Bcrypt.lib |
| DLL | Bcrypt.dll |