Функция BCryptImportKey (bcrypt.h)
Функция BCryptImportKey импортирует симметричный ключ из большого двоичного объекта ключа. Функция BCryptImportKeyPair используется для импорта пары открытого и закрытого ключей.
Синтаксис
NTSTATUS BCryptImportKey(
[in] BCRYPT_ALG_HANDLE hAlgorithm,
[in, optional] BCRYPT_KEY_HANDLE hImportKey,
[in] LPCWSTR pszBlobType,
[out] BCRYPT_KEY_HANDLE *phKey,
[out, optional] PUCHAR pbKeyObject,
[in] ULONG cbKeyObject,
[in] PUCHAR pbInput,
[in] ULONG cbInput,
[in] ULONG dwFlags
);
Параметры
[in] hAlgorithm
Дескриптор поставщика алгоритма для импорта ключа. Этот дескриптор получается путем вызова функции BCryptOpenAlgorithmProvider .
[in, optional] hImportKey
Дескриптор ключа шифрования ключа, необходимый для распаковки большого двоичного объекта ключа в параметре pbInput .
Windows Server 2008 и Windows Vista: Этот параметр не используется и должен иметь значение NULL.
[in] pszBlobType
Строка Юникода со значением NULL, содержащая идентификатор, указывающий тип БОЛЬШОГО ДВОИЧНОГО ОБЪЕКТА, содержащегося в буфере pbInput . Это может быть одно из следующих значений.
Значение | Значение |
---|---|
|
Импорт симметричного ключа из большого двоичного объекта ключа AES. Параметр hImportKey должен ссылаться на допустимый BCRYPT_KEY_HANDLE указатель на ключ шифрования ключа.
Windows Server 2008 и Windows Vista: Этот тип BLOB не поддерживается. |
|
Импорт симметричного ключа из большого двоичного объекта данных. Параметр pbInput является указателем на структуру BCRYPT_KEY_DATA_BLOB_HEADER , за которой сразу же следует ключ BLOB. |
|
Импортируйте большой двоичный объект с симметричным ключом в формате, специфичном для одного поставщика служб CSP. Непрозрачные BLOB-объекты не могут быть переданы и должны быть импортированы с помощью того же CSP, что и большой двоичный объект. Непрозрачные BLOB-объекты предназначены только для межпроцессной передачи ключей и не подходят для сохранения и чтения в разных версиях поставщика. |
[out] phKey
Указатель на BCRYPT_KEY_HANDLE , получающий дескриптор импортированного ключа. Этот дескриптор используется в последующих функциях, которым требуется ключ, например BCryptEncrypt. Этот дескриптор должен быть освобожден, если он больше не нужен, передав его функции BCryptDeographyKey .
[out, optional] pbKeyObject
Указатель на буфер, получающий импортированный объект ключа. Параметр cbKeyObject содержит размер этого буфера. Требуемый размер этого буфера можно получить, вызвав функцию BCryptGetProperty для получения свойства BCRYPT_OBJECT_LENGTH . Это обеспечит размер ключевого объекта для указанного алгоритма.
Эта память может быть освобождена только после уничтожения дескриптора ключа phKey .
[in] cbKeyObject
Размер буфера pbKeyObject (в байтах).
[in] pbInput
Адрес буфера, содержащего blOB-объект ключа для импорта. Параметр cbInput содержит размер этого буфера. Параметр pszBlobType указывает тип большого двоичного объекта ключа, содержащегося в этом буфере.
[in] cbInput
Размер буфера pbInput (в байтах).
[in] dwFlags
Набор флагов, которые изменяют поведение этой функции. В настоящее время флаги не определены, поэтому этот параметр должен быть равен нулю.
Возвращаемое значение
Возвращает код состояния, указывающий на успешное или неудачное выполнение функции.
Возможные коды возврата включают, помимо прочего, следующие.
Код возврата | Описание |
---|---|
|
Функция выполнена успешно. |
|
Размер объекта ключа, указанного параметром cbKeyObject , не достаточно велик для хранения объекта ключа. |
|
Дескриптор алгоритма в параметре hAlgorithm недопустим . |
|
Один или несколько параметров недопустимы. |
|
Поставщик алгоритма, заданный параметром hAlgorithm , не поддерживает тип BLOB, заданный параметром pszBlobType . |
Комментарии
В зависимости от того, какие режимы процессора поддерживает поставщик, BCryptImportKey можно вызывать либо из пользовательского режима, либо из режима ядра. Вызовы режима ядра могут выполняться в PASSIVE_LEVELIRQL или DISPATCH_LEVEL IRQL. Если текущий уровень IRQL DISPATCH_LEVEL, дескриптор, предоставленный в параметре hAlgorithm , должен быть открыт с помощью флага BCRYPT_PROV_DISPATCH , а все указатели, передаваемые в функцию BCryptImportKey , должны ссылаться на неупакованную (или заблокированную) память.
Чтобы вызвать эту функцию в режиме ядра, используйте файл Cng.lib, который входит в состав пакета средств разработки драйверов (DDK). Windows Server 2008 и Windows Vista: Чтобы вызвать эту функцию в режиме ядра, используйте Ksecdd.lib.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2008 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | bcrypt.h |
Библиотека | Bcrypt.lib |
DLL | Bcrypt.dll |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по