Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Функция NCryptExportKey экспортирует ключ CNG в большой двоичный объект памяти.
Синтаксис
SECURITY_STATUS NCryptExportKey(
[in] NCRYPT_KEY_HANDLE hKey,
[in, optional] NCRYPT_KEY_HANDLE hExportKey,
[in] LPCWSTR pszBlobType,
[in, optional] NCryptBufferDesc *pParameterList,
[out, optional] PBYTE pbOutput,
[in] DWORD cbOutput,
[out] DWORD *pcbResult,
[in] DWORD dwFlags
);
Параметры
[in] hKey
Дескриптор ключа для экспорта.
[in, optional] hExportKey
Дескриптор криптографического ключа целевого пользователя. Данные ключа в экспортируемом BLOB-объекте шифруются с помощью этого ключа. Это гарантирует, что только целевой пользователь может использовать ключевой BLOB-объект.
[in] pszBlobType
Строка Юникода, завершающая значение NULL, содержащая идентификатор, указывающий тип экспортируемых 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_PUBLIC_BLOB
Экспорт открытого ключа DSA. Буфер pbOutput получает BCRYPT_DSA_KEY_BLOB структуру сразу после ключевых данных.
BCRYPT_ECCPRIVATE_BLOB
Экспорт закрытого ключа с многоточием кривой (ECC). Буфер pbOutput получает BCRYPT_ECCKEY_BLOB структуру сразу после ключевых данных.
BCRYPT_ECCPUBLIC_BLOB
Экспорт открытого ключа ECC. Буфер pbOutput получает BCRYPT_ECCKEY_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_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_PUBLIC_KEY_BLOB
Экспорт универсального открытого ключа любого типа. Тип ключа в этом BLOB-объекте определяется магическим элементом структуры BCRYPT_KEY_BLOB .
BCRYPT_PRIVATE_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
Экспорт устаревшей Diffie-Hellman BLOB-объекта закрытого ключа версии 3 , содержащего открытый ключ Diffie-Hellman, который можно импортировать с помощью CryptoAPI.
LEGACY_DSA_PRIVATE_BLOB
Экспорт пары открытого и закрытого ключа DSA в форме, которую можно импортировать с помощью CryptoAPI.
LEGACY_DSA_PUBLIC_BLOB
Экспорт открытого ключа DSA в форме, которую можно импортировать с помощью CryptoAPI.
LEGACY_RSAPRIVATE_BLOB
Экспорт пары открытого и закрытого ключа RSA в форме, которую можно импортировать с помощью CryptoAPI.
LEGACY_RSAPUBLIC_BLOB
Экспорт открытого ключа RSA в форме, которую можно импортировать с помощью CryptoAPI.
NCRYPT_CIPHER_KEY_BLOB
Экспорт ключа шифра в NCRYPT_KEY_BLOB_HEADER структуре .
Windows 8 и Windows Server 2012: Начинается поддержка этого значения.
NCRYPT_OPAQUETRANSPORT_BLOB
Экспорт ключа в формате, относящееся к одному поставщику служб CSP, и подходит для транспорта. Непрозрачные BLOB-объекты не переносимы и должны быть импортированы с помощью того же поставщика служб CSP, который создал БОЛЬШОЙ ДВОИЧНЫй объект.
NCRYPT_PKCS7_ENVELOPE_BLOB
Экспорт большого двоичного объекта PKCS #7. Параметры, определяемые параметром pParameterList , могут или должны содержать следующие параметры, как указано в столбце "Обязательный" или "Необязательный".
| Параметр | Обязательно или необязательно |
|---|---|
| NCRYPTBUFFER_CERT_BLOB | Обязательно |
| NCRYPTBUFFER_PKCS_ALG_OID | Обязательно |
| NCRYPTBUFFER_PKCS_ALG_PARAM | Необязательно |
NCRYPT_PKCS8_PRIVATE_KEY_BLOB
Экспорт BLOB-объекта закрытого ключа PKCS #8. Параметры, определяемые параметром pParameterList , могут или должны содержать следующие параметры, как указано в столбце "Обязательный" или "Необязательный".
| Параметр | Обязательно или необязательно |
|---|---|
| NCRYPTBUFFER_PKCS_ALG_OID | Необязательно |
| NCRYPTBUFFER_PKCS_ALG_PARAM | Необязательно |
| NCRYPTBUFFER_PKCS_SECRET | Необязательно |
NCRYPT_PROTECTED_KEY_BLOB
Экспорт защищенного ключа в структуру NCRYPT_KEY_BLOB_HEADER .
Windows 8 и Windows Server 2012: Начинается поддержка этого значения.
NCRYPT_PQ_PRIVATE_KEY_BLOB
Экспорт универсального закрытого ключа любого типа алгоритма Post-Quantum. Тип ключа в этом BLOB-объекте определяется магическим элементом структуры NCRYPT_PQ_BLOB .
[in, optional] pParameterList
Адрес структуры NCryptBufferDesc , получающей сведения о параметрах ключа. Этот параметр может иметь значение NULL , если эти сведения не требуются.
[out, optional] pbOutput
Адрес буфера, который получает ключ BLOB. Параметр cbOutput содержит размер этого буфера. Если этот параметр имеет значение NULL, эта функция поместит требуемый размер в байтах в DWORD , на который указывает параметр pcbResult .
[in] cbOutput
Размер в байтах буфера pbOutput .
[out] pcbResult
Адрес переменной DWORD , получающей количество байтов, скопированных в буфер pbOutput . Если параметр pbOutput имеет значение NULL, эта функция поместит требуемый размер в байтах в DWORD , на который указывает этот параметр.
[in] dwFlags
Флаги, изменяющие поведение функции. Это может быть ноль или сочетание одного или нескольких следующих значений. Набор допустимых флагов зависит от каждого поставщика хранилища ключей. Следующий флаг применяется ко всем поставщикам.
| Ценность | Значение |
|---|---|
| NCRYPT_SILENT_FLAG | Запрашивает, чтобы поставщик хранилища ключей (KSP) не отображал пользовательский интерфейс. Если поставщик должен отобразить пользовательский интерфейс для работы, вызов завершается ошибкой, и KSP должен задать код ошибки NTE_SILENT_CONTEXT в качестве последней ошибки. |
Возвращаемое значение
Возвращает код состояния, указывающий на успешность или сбой функции.
Возможные коды возврата включают в себя, но не ограничиваются следующими.
| Код возврата | Описание |
|---|---|
| ОШИБКА_УСПЕХ | Функция была успешной. |
| NTE_BAD_FLAGS | Параметр dwFlags содержит недопустимое значение. |
| NTE_BAD_KEY_STATE | Недопустимый ключ, указанный параметром hKey . Наиболее распространенной причиной этой ошибки является то, что ключ не был завершен с помощью функции NCryptFinalizeKey . |
| NTE_BAD_TYPE | Ключ, указанный параметром hKey , нельзя экспортировать в тип BLOB, указанный параметром pszBlobType . |
| NTE_INVALID_HANDLE | Недопустимый параметр hKey или hExportKey . |
| NTE_INVALID_PARAMETER | Один или несколько параметров недопустимы. |
Замечания
Служба не должна вызывать эту функцию из функции StartService. Если служба вызывает эту функцию из функции StartService , может произойти взаимоблокировка, а служба может перестать отвечать.
Требования
| Требование | Ценность |
|---|---|
| Минимальный поддерживаемый клиент | Windows Vista [классические приложения | Приложения UWP] |
| минимальный поддерживаемый сервер | Windows Server 2008 [классические приложения | Приложения UWP] |
| целевая платформа | Виндоус |
| Заголовок | ncrypt.h |
| Библиотека | Ncrypt.lib |
| Библиотека dll | Ncrypt.dll |