Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Функция BCryptExportKey экспортирует ключ в большой двоичный объект памяти, который можно сохранить для последующего использования.
Синтаксис
NTSTATUS BCryptExportKey(
[in] BCRYPT_KEY_HANDLE hKey,
[in] BCRYPT_KEY_HANDLE hExportKey,
[in] LPCWSTR pszBlobType,
[out] PUCHAR pbOutput,
[in] ULONG cbOutput,
[out] ULONG *pcbResult,
[in] ULONG dwFlags
);
Параметры
[in] hKey
Дескриптор ключа для экспорта.
[in] hExportKey
Дескриптор ключа, с помощью которого необходимо упаковать экспортируемый ключ. Используйте этот параметр при экспорте BLOB-объектов типа BCRYPT_AES_WRAP_KEY_BLOB; в противном случае задайте для него значение NULL.
Замечание
Дескриптор hExportKey должен быть предоставлен тем же поставщиком, который предоставил дескриптор hKey , и hExportKey должен быть дескриптором симметричного ключа, который можно использовать в алгоритме упаковки ключей уровня " Расширенный стандарт шифрования " (AES). Если дескриптор hKey находится у поставщика Майкрософт, hExportKey должен быть дескриптором ключа AES.
Windows Server 2008 и Windows Vista: Этот параметр не используется и должен иметь значение NULL.
[in] pszBlobType
Строка Юникода, завершающая значение NULL, содержащая идентификатор, указывающий тип экспортируемых BLOB-объектов. Это может быть одно из следующих значений.
| Ценность | Значение |
|---|---|
| BCRYPT_AES_WRAP_KEY_BLOB | Экспорт ключа AES, завернутого в оболочку. Параметр hExportKey должен ссылаться на допустимый указатель BCRYPT_KEY_HANDLE на ключ шифрования ключа, а ключ, представленный параметром hKey , должен иметь длину в 8 байтов. Windows Server 2008 и Windows Vista: Этот тип BLOB не поддерживается. |
| BCRYPT_DH_PRIVATE_BLOB | Экспорт пары открытого и закрытого ключа Diffie-Hellman. Буфер pbOutput получает BCRYPT_DH_KEY_BLOB структуру сразу после ключевых данных. |
| BCRYPT_DH_PUBLIC_BLOB | Экспорт открытого ключа Diffie-Hellman. Буфер pbOutput получает BCRYPT_DH_KEY_BLOB структуру сразу после ключевых данных. |
| BCRYPT_DSA_PRIVATE_BLOB | Экспорт пары открытого и закрытого ключа DSA. Буфер pbOutput получает BCRYPT_DSA_KEY_BLOB или BCRYPT_DSA_KEY_BLOB_V2 структуру сразу после ключевых данных.
BCRYPT_DSA_KEY_BLOB используется для длины ключа от 512 до 1024 битов.
BCRYPT_DSA_KEY_BLOB_V2 используется для длины ключей, превышающей 1024 бит, но меньше или равно 3072 битам. Windows 8: Начинается поддержка BCRYPT_DSA_KEY_BLOB_V2 . |
| BCRYPT_DSA_PUBLIC_BLOB | Экспорт открытого ключа DSA. Буфер pbOutput получает BCRYPT_DSA_KEY_BLOB или BCRYPT_DSA_KEY_BLOB_V2 структуру сразу после ключевых данных.
BCRYPT_DSA_KEY_BLOB используется для длины ключа от 512 до 1024 битов.
BCRYPT_DSA_KEY_BLOB_V2 используется для длины ключей, превышающей 1024 бит, но меньше или равно 3072 битам. Windows 8: Начинается поддержка BCRYPT_DSA_KEY_BLOB_V2 . |
| BCRYPT_ECCPRIVATE_BLOB | Экспорт закрытого ключа с многоточием кривой (ECC). Буфер pbOutput получает BCRYPT_ECCKEY_BLOB структуру сразу после ключевых данных. |
| BCRYPT_ECCPUBLIC_BLOB | Экспорт открытого ключа ECC. Буфер pbOutput получает BCRYPT_ECCKEY_BLOB структуру сразу после ключевых данных. |
| BCRYPT_KEY_DATA_BLOB | Экспорт симметричного ключа в BLOB-объект данных. Буфер pbOutput получает BCRYPT_KEY_DATA_BLOB_HEADER структуру сразу после ключа BLOB. |
| BCRYPT_MLKEM_PRIVATE_SEED_BLOB | Экспортируйте закрытый начальный ключ ML-KEM. Буфер pbOutput получает BCRYPT_MLKEM_KEY_BLOB структуру сразу после набора параметров и ключевых данных. Примечание. ML-KEM обработчики ключей, которые содержат закрытый ключ, импортированный с помощью BCRYPT_MLKEM_PRIVATE_BLOB имеют недостаточно сведений для экспорта закрытого начального ключа. Программы предварительной оценки Windows (сборка 27843): Начинается поддержка ML-KEM. |
| BCRYPT_MLKEM_PRIVATE_BLOB | Экспортируйте закрытый ключ ML-KEM (decapsulation). Буфер pbOutput получает BCRYPT_MLKEM_KEY_BLOB структуру сразу после набора параметров и ключевых данных. Программы предварительной оценки Windows (сборка 27843): Начинается поддержка ML-KEM. |
| BCRYPT_MLKEM_PUBLIC_BLOB | Экспортируйте открытый ключ ML-KEM (инкапсуляция). Буфер pbOutput получает BCRYPT_MLKEM_KEY_BLOB структуру сразу после набора параметров и ключевых данных. Программы предварительной оценки Windows (сборка 27843): Начинается поддержка ML-KEM. |
| BCRYPT_OPAQUE_KEY_BLOB | Экспорт симметричного ключа в формате, относящееся к одному поставщику служб шифрования (CSP). Непрозрачные BLOB-объекты не переносимы и должны быть импортированы с помощью того же поставщика служб CSP, который создал БОЛЬШОЙ ДВОИЧНЫй объект. Непрозрачные BLOB-объекты предназначены только для межпроцессного передачи ключей и не подходят для сохранения и чтения в разных версиях поставщика. |
| BCRYPT_PQDSA_PRIVATE_SEED_BLOB | Экспорт закрытого начального ключа после квантовой цифровой подписи (PQDSA). Буфер pbOutput получает BCRYPT_PQDSA_KEY_BLOB структуру сразу после набора параметров и ключевых данных. Заметка: Ключ PQDSA, содержащий закрытый ключ, импортированный с помощью BCRYPT_PQDSA_PRIVATE_BLOB , недостаточно информации для экспорта закрытого начального ключа. Программы предварительной оценки Windows (сборка 27843): Начинается поддержка ML-DSA. |
| BCRYPT_PQDSA_PRIVATE_BLOB | Экспорт закрытого ключа PQDSA. Буфер pbOutput получает BCRYPT_PQDSA_KEY_BLOB структуру сразу после набора параметров и ключевых данных. Программы предварительной оценки Windows (сборка 27843): Начинается поддержка ML-DSA. |
| BCRYPT_PQDSA_PUBLIC_BLOB | Экспорт открытого ключа PQDSA. Буфер pbOutput получает BCRYPT_PQDSA_KEY_BLOB структуру сразу после набора параметров и ключевых данных. Программы предварительной оценки Windows (сборка 27843): Начинается поддержка ML-DSA. |
| BCRYPT_PRIVATE_KEY_BLOB | Экспорт универсального закрытого ключа любого типа. Закрытый ключ не обязательно содержит открытый ключ. Тип ключа в этом BLOB-объекте определяется магическим элементом структуры BCRYPT_KEY_BLOB . |
| BCRYPT_PUBLIC_KEY_BLOB | Экспорт универсального открытого ключа любого типа. Тип ключа в этом BLOB-объекте определяется магическим элементом структуры BCRYPT_KEY_BLOB . |
| BCRYPT_RSAFULLPRIVATE_BLOB | Экспорт полной пары открытого и закрытого ключа RSA. Буфер pbOutput получает BCRYPT_RSAKEY_BLOB структуру сразу после ключевых данных. Этот BLOB-объект будет содержать дополнительные ключевые материалы по сравнению с типом BCRYPT_RSAPRIVATE_BLOB . |
| BCRYPT_RSAPRIVATE_BLOB | Экспорт пары открытого и закрытого ключа RSA. Буфер pbOutput получает BCRYPT_RSAKEY_BLOB структуру сразу после ключевых данных. |
| BCRYPT_RSAPUBLIC_BLOB | Экспорт открытого ключа RSA. Буфер pbOutput получает BCRYPT_RSAKEY_BLOB структуру сразу после ключевых данных. |
| LEGACY_DH_PRIVATE_BLOB | Экспорт устаревшей Diffie-Hellman BLOB-объект закрытого ключа версии 3 , содержащий пару открытых и закрытых ключей Diffie-Hellman, которую можно импортировать с помощью CryptoAPI. |
| LEGACY_DH_PUBLIC_BLOB | Экспорт устаревшего blOB-объектаDiffie-Hellman версии 3 с открытым ключом , который содержит открытый ключ Diffie-Hellman, который можно импортировать с помощью CryptoAPI. |
| LEGACY_DSA_PRIVATE_BLOB | Экспорт пары открытого и закрытого ключа DSA в форме, которую можно импортировать с помощью CryptoAPI. |
| LEGACY_DSA_PUBLIC_BLOB | Экспорт открытого ключа DSA в форме, которую можно импортировать с помощью CryptoAPI. |
| LEGACY_DSA_V2_PRIVATE_BLOB | Экспорт закрытого ключа DSA версии 2 в форме, которую можно импортировать с помощью CryptoAPI. |
| LEGACY_RSAPRIVATE_BLOB | Экспорт пары открытого и закрытого ключа RSA в форме, которую можно импортировать с помощью CryptoAPI. |
| LEGACY_RSAPUBLIC_BLOB | Экспорт открытого ключа RSA в форме, которую можно импортировать с помощью CryptoAPI. |
[out] pbOutput
Адрес буфера, который получает ключ BLOB. Параметр cbOutput содержит размер этого буфера. Если этот параметр задан NULL, эта функция будет размещать требуемый размер в байтах в ULONG , на который указывает параметр pcbResult .
[in] cbOutput
Содержит размер в байтах буфера pbOutput .
[out] pcbResult
Указатель на ULONG , получающий количество байтов, скопированных в буфер pbOutput . Если параметр pbOutput имеет NULLзначение, эта функция будет размещать требуемый размер в байтах в ULONG , на который указывает этот параметр.
[in] dwFlags
Набор флагов, изменяющих поведение этой функции. Для этой функции флаги не определены.
Возвращаемое значение
Возвращает код состояния, указывающий на успешность или сбой функции.
Возможные коды возврата включают в себя, но не ограничиваются следующими.
| Возвращаемый код | Описание |
|---|---|
| STATUS_SUCCESS | Функция была успешной. |
| STATUS_BUFFER_TOO_SMALL | Размер, указанный параметром cbOutput , недостаточно велик для хранения зашифрованного текста. Если буфер pbOutput слишком мал, pcbResult получает количество байтов, необходимых для pbOutput. |
| STATUS_INVALID_HANDLE | Дескриптор ключа в параметре hKey hKey недопустим. |
| СТАТУС_НЕДЕЙСТВИТЕЛЬНЫЙ_ПАРАМЕТР | Один или несколько параметров недопустимы. |
| STATUS_NOT_SUPPORTED | Указанный тип BLOB не поддерживается поставщиком. Если предоставленный дескриптор ключа не поддерживает экспорт частного начального значения. См. примечания. |
Замечания
При использовании поддерживаемого поставщика алгоритмов BCryptExportKey можно вызывать из пользовательского режима или режима ядра. Вызывающие серверы режима ядра могут выполняться в PASSIVE_LEVELIRQL или DISPATCH_LEVEL IRQL. Если текущий уровень IRQL DISPATCH_LEVEL, дескриптор, предоставленный параметром hKey , должен быть производным от дескриптора алгоритма, возвращенного поставщиком, который был открыт с флагом BCRYPT_PROV_DISPATCH , и все указатели, передаваемые функции BCryptExportKey , должны ссылаться на неупакованную (или заблокированную) память.
Чтобы вызвать эту функцию в режиме ядра, используйте Cng.libпакет средств разработки драйверов (DDK).
Windows Server 2008 и Windows Vista: Чтобы вызвать эту функцию в режиме ядра, используйте Ksecdd.lib.
Требования
| Требование | Ценность |
|---|---|
| Минимальный поддерживаемый клиент | Windows Vista [классические приложения | Приложения UWP] |
| минимальный поддерживаемый сервер | Windows Server 2008 [классические приложения | Приложения UWP] |
| целевая платформа | Виндоус |
| Заголовок | bcrypt.h |
| Библиотека | Bcrypt.lib |
| Библиотека dll | Bcrypt.dll |