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