Бөлісу құралы:


Функция NCryptExportKey (ncrypt.h)

Функция 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

См. также