Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Функция BCryptImportKeyPair
Синтаксис
NTSTATUS BCryptImportKeyPair(
[in] BCRYPT_ALG_HANDLE hAlgorithm,
[in, out] BCRYPT_KEY_HANDLE hImportKey,
[in] LPCWSTR pszBlobType,
[out] BCRYPT_KEY_HANDLE *phKey,
[in] PUCHAR pbInput,
[in] ULONG cbInput,
[in] ULONG dwFlags
);
Параметры
[in] hAlgorithm
Дескриптор поставщика алгоритма для импорта ключа. Этот дескриптор получается путем вызова функции BCryptOpenAlgorithmProvider.
[in, out] hImportKey
Этот параметр в настоящее время не используется и должен быть NULL.
[in] pszBlobType
Строка Юникода, завершающая значение NULL, содержащая идентификатор, указывающий тип БОЛЬШОго двоичного объекта, содержащегося в буфере pbInput. Может иметь одно из следующих значений:
| Ценность | Значение |
|---|---|
| BCRYPT_DH_PRIVATE_BLOB | BLOB - это пара открытых и закрытых ключей Diffie-Hellman. Буфер pbInput должен содержать структуру BCRYPT_DH_KEY_BLOB сразу после ключевых данных. |
| BCRYPT_DH_PUBLIC_BLOB | BLOB - это Diffie-Hellman открытый ключ BLOB. Буфер pbInput должен содержать структуру BCRYPT_DH_KEY_BLOB сразу после ключевых данных. |
| BCRYPT_DSA_PRIVATE_BLOB | BLOB — это пара открытых и закрытых ключей DSA. Буфер Windows 8: Начинается поддержка BCRYPT_DSA_KEY_BLOB_V2 . |
| BCRYPT_DSA_PUBLIC_BLOB | БОЛЬШОЙ ДВОИЧНЫй объект — это BLOB-объект открытого ключа DSA. Буфер Windows 8: Начинается поддержка BCRYPT_DSA_KEY_BLOB_V2 . |
| BCRYPT_ECCPRIVATE_BLOB | BLOB — это многоточие криптографии (ECC) закрытого ключа. Буфер pbInput должен содержать структуру BCRYPT_ECCKEY_BLOB сразу после ключевых данных. |
| BCRYPT_ECCPUBLIC_BLOB | BLOB является открытым ключом ECC. Буфер pbInput должен содержать структуру BCRYPT_ECCKEY_BLOB сразу после ключевых данных. |
| BCRYPT_MLKEM_PUBLIC_BLOB | BLOB - это ML-KEM BLOB, который обеспечивает импорт и экспорт стандартных байтов, закодированных ML-KEM ключей инкапсулирования на FIPS 203. Буфер pbInput должен содержать структуру BCRYPT_MLKEM_KEY_BLOB , содержащую ключ инкапсулации KEM с кодировкой байтов, BCRYPT_MLKEM_PUBLIC_MAGIC и набор параметров ML-KEM. |
| BCRYPT_MLKEM_PRIVATE_BLOB | BLOB — это ML-KEM BLOB,который обеспечивает импорт и экспорт стандартных байтовых ключей, закодированных ML-KEM декапсуляции на FIPS 203. Буфер pbInput должен содержать BCRYPT_MLKEM_KEY_BLOB структуру, содержащую набор байтов, закодированных в кодировке KEM, BCRYPT_MLKEM_PRIVATE_MAGIC и набор параметров ML-KEM. |
| BCRYPT_MLKEM_PRIVATE_SEED_BLOB | BLOB — это ML-KEM BLOB, который обеспечивает импорт и экспорт семян ML-KEM на FIPS 203. Буфер pbInput должен содержать структуру BCRYPT_MLKEM_KEY_BLOB , содержащую начальное значение KEM, BCRYPT_MLKEM_SEED_MAGIC и набор параметров ML-KEM. |
| BCRYPT_PQDSA_PUBLIC_BLOB | BLOB — это BLOB-объект ML-DSA, SLH-DSA, LMS или BLOB-объект XMSS, который обеспечивает импорт и экспорт открытых ключей цифровой подписи PQ на FIPS 204 и 205. Буфер pbInput должен содержать BCRYPT_PQDSA_KEY_BLOB структуру, содержащую ключевой материал, открытый магия и набор параметров PQ. |
| BCRYPT_PQDSA_PRIVATE_BLOB | BLOB — это BLOB-объект ML-DSA, SLH-DSA, LMS или BLOB-объект XMSS, который обеспечивает импорт и экспорт закрытых ключей цифровой подписи PQ на FIPS 204 и 205. Буфер pbInput должен содержать BCRYPT_PQDSA_KEY_BLOB структуру, содержащую ключевой материал, частный магия и набор параметров PQ. |
| BCRYPT_PQDSA_PRIVATE_SEED_BLOB | BLOB — это BLOB-объект ML-DSA, SLH-DSA, LMS или BLOB-объект XMSS, который обеспечивает импорт и экспорт частных семян цифровой подписи PQ на FIPS 204 и 205. Буфер pbInput должен содержать BCRYPT_PQDSA_KEY_BLOB структуру, содержащую начальное значение, магию частного начального значения и набор параметров PQ. |
| BCRYPT_PRIVATE_KEY_BLOB | BLOB является универсальным закрытым ключом любого типа. Закрытый ключ не обязательно содержит открытый ключ. Тип ключа в этом BLOB-объекте определяется элементом Magic структуры BCRYPT_KEY_BLOB. |
| BCRYPT_PUBLIC_KEY_BLOB | BLOB — это универсальный открытый ключ любого типа. Тип ключа в этом BLOB-объекте определяется элементом Magic структуры BCRYPT_KEY_BLOB. |
| BCRYPT_RSAPRIVATE_BLOB | BLOB — это пара ОТКРЫТЫх и закрытых ключей RSA. Буфер pbInput должен содержать структуру BCRYPT_RSAKEY_BLOB сразу после ключевых данных. |
| BCRYPT_RSAPUBLIC_BLOB | БОЛЬШОЙ ДВОИЧНЫй объект — это BLOB-объект открытого ключа RSA. Буфер pbInput должен содержать структуру BCRYPT_RSAKEY_BLOB сразу после ключевых данных. |
| LEGACY_DH_PUBLIC_BLOB | BLOB — это большой двоичный объект открытого ключа Diffie-Hellman, экспортируемый с помощью CryptoAPI. Поставщик примитивных объектов Майкрософт не поддерживает импорт этого типа BLOB. |
| LEGACY_DH_PRIVATE_BLOB | BlOB — это устаревшая Diffie-Hellman версии 3 BLOB закрытого ключа, которая содержит пару открытых и закрытых ключей Diffie-Hellman, экспортируемую с помощью CryptoAPI. |
| LEGACY_DSA_PRIVATE_BLOB | BLOB — это пара BLOB-объектов открытого и закрытого ключа DSA, экспортируемая с помощью CryptoAPI. |
| LEGACY_DSA_PUBLIC_BLOB | BLOB — это BLOB-объект открытого ключа DSA, экспортируемый с помощью CryptoAPI. Поставщик примитивных объектов Майкрософт не поддерживает импорт этого типа BLOB. |
| LEGACY_DSA_V2_PRIVATE_BLOB | BLOB — это закрытый ключ DSA версии 2 в форме, которую можно импортировать с помощью CryptoAPI. |
| LEGACY_RSAPRIVATE_BLOB | BLOB — это пара BLOB открытого и закрытого ключа RSA, экспортируемая с помощью CryptoAPI. |
| LEGACY_RSAPUBLIC_BLOB | BLOB - это BLOB-объект открытого ключа RSA, экспортируемый с помощью CryptoAPI. Поставщик примитивных объектов Майкрософт не поддерживает импорт этого типа BLOB. |
[out] phKey
Указатель на BCRYPT_KEY_HANDLE, получающий дескриптор импортированного ключа. Этот дескриптор используется в последующих функциях, требующих ключа, например BCryptSignHash. Этот дескриптор должен быть освобожден, если он больше не нужен, передав его в функцию BCryptDekey.
[in] pbInput
Адрес буфера, который содержит ключ BLOB- для импорта. Параметр cbInput содержит размер этого буфера. Параметр pszBlobType указывает тип ключа BLOB, который содержит этот буфер.
[in] cbInput
Размер
[in] dwFlags
Набор флагов, изменяющих поведение этой функции. Это может быть ноль или следующее значение.
| Ценность | Значение |
|---|---|
| BCRYPT_NO_KEY_VALIDATION | Отказ от любых применимых самотверений FIPS. |
Возвращаемое значение
Возвращает код состояния, указывающий на успешность или сбой функции.
Возможные коды возврата включают, но не ограничиваются следующими:
| Возвращаемый код | Описание |
|---|---|
| STATUS_SUCCESS | Функция была успешной. |
| STATUS_INVALID_BUFFER_SIZE | Если буфер pbInput не имеет правильного размера для сочетания набора параметров ML-KEM, связанного с hAlgorithm и для импортируемого типа BLOB-объекта. |
| STATUS_INVALID_HANDLE | Дескриптор алгоритма в параметре hAlgorithm недопустим. |
| СТАТУС_НЕДЕЙСТВИТЕЛЬНЫЙ_ПАРАМЕТР | Один или несколько параметров недопустимы. |
| STATUS_NOT_SUPPORTED | Поставщик алгоритмов, указанный параметром hAlgorithm |
Замечания
В зависимости от того, какие режимы процессора поддерживает поставщик, BCryptImportKeyPair можно вызывать из пользовательского режима или режима ядра. Вызывающие серверы режима ядра могут выполняться в PASSIVE_LEVELIRQL или DISPATCH_LEVEL IRQL. Если текущий уровень IRQL DISPATCH_LEVEL, то дескриптор, предоставленный в параметре hAlgorithm, должен быть открыт с помощью флага BCRYPT_PROV_DISPATCH, а все указатели, переданные в функцию BCryptImportKeyPair, должны ссылаться на неупакованную (или заблокированную) память.
Вызывающий объект должен освободить ключ hKey с BCryptDeskkey , если ключ больше не используется.
Чтобы вызвать эту функцию в режиме ядра, используйте Cng.libпакет средств разработки драйверов (DDK).
Windows Server 2008 и Windows Vista: Чтобы вызвать эту функцию в режиме ядра, используйте Ksecdd.lib.
Требования
| Требование | Ценность |
|---|---|
| минимальные поддерживаемые клиентские | Windows Vista [классические приложения | Приложения UWP] |
| минимальный поддерживаемый сервер | Windows Server 2008 [классические приложения | Приложения UWP] |
| целевая платформа | Виндоус |
| заголовка | bcrypt.h |
| библиотеки |
Bcrypt.lib |
| Библиотека dll | Bcrypt.dll |