Поделиться через


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

Функция NCryptTranslateHandle преобразует дескриптор CryptoAPI в дескриптор ключа CNG.

Синтаксис

SECURITY_STATUS NCryptTranslateHandle(
  [out, optional] NCRYPT_PROV_HANDLE *phProvider,
  [out]           NCRYPT_KEY_HANDLE  *phKey,
  [in]            HCRYPTPROV         hLegacyProv,
  [in, optional]  HCRYPTKEY          hLegacyKey,
  [in, optional]  DWORD              dwLegacyKeySpec,
  [in]            DWORD              dwFlags
);

Параметры

[out, optional] phProvider

Указатель на переменную NCRYPT_PROV_HANDLE , которая получает дескриптор поставщика хранилища ключей CNG, которому принадлежит ключ CNG, помещенный в параметр phKey . Этот параметр может иметь значение NULL , если этот дескриптор не требуется.

[out] phKey

Указатель на переменную NCRYPT_KEY_HANDLE , получающую дескриптор ключа CNG.

[in] hLegacyProv

Дескриптор поставщика CryptoAPI, содержащий ключ для преобразования. Эта функция преобразует ключ CryptoAPI, который находится в контейнере в этом поставщике.

[in, optional] hLegacyKey

Дескриптор ключа CryptoAPI, используемый для определения спецификации ключа для возвращаемого ключа. Этот параметр игнорируется, если параметр dwLegacyKeySpec содержит значение, отличное от нуля.

Если hLegacyKey имеет значение NULL , а dwLegacyKeySpec равно нулю, эта функция попытается определить спецификацию ключа из дескриптора hLegacyProv .

[in, optional] dwLegacyKeySpec

Задает спецификацию ключа для ключа. Это может быть одно из следующих значений.

Значение Значение
0
Ключ не является ни одним из указанных ниже типов.
AT_KEYEXCHANGE
1
Ключ является ключом обмена ключами.
AT_SIGNATURE
2
Ключ является ключом подписи.
 

Если hLegacyKey имеет значение NULL , а dwLegacyKeySpec равно нулю, эта функция попытается определить спецификацию ключа из дескриптора hLegacyProv .

[in] dwFlags

Набор флагов, которые изменяют поведение этой функции. Для этой функции не определены флаги.

Возвращаемое значение

Возвращает код состояния, указывающий на успешное или неудачное выполнение функции.

Возможные коды возврата включают, помимо прочего, следующие.

Код возврата Описание
ERROR_SUCCESS
Функция выполнена успешно.
NTE_BAD_FLAGS
Параметр dwFlags содержит недопустимое значение.
NTE_INVALID_PARAMETER
Один или несколько параметров недопустимы.
NTE_NO_MEMORY
Произошел сбой выделения памяти.

Комментарии

Это вспомогающая функция, предназначенная для помощи приложениям и системным компонентам, которые в настоящее время используют CryptoAPI, для корректного перехода на использование CNG.

Эта функция будет успешной, только если поставщик хранилища ключей CNG зарегистрирован с именем или псевдонимом, идентичным имени поставщика служб шифрования (CSP), на который ссылается параметр hLegacyProv .

Эта функция выполняет следующие действия для преобразования дескриптора CSP в дескриптор ключа CNG:

  1. Получите имя CSP из дескриптора hLegacyProv .
  2. Откройте поставщик CNG, имя или псевдоним которого идентично имени CSP.
  3. Получите имя текущего контейнера ключей в CSP.
  4. Получите ключ CryptoAPI, преобразуйте его в ключ CNG и верните его в параметре phKey .
Служба не должна вызывать эту функцию из функции StartService. Если служба вызывает эту функцию из функции StartService, может возникнуть взаимоблокировка, и служба может перестать отвечать.

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header ncrypt.h
Библиотека Ncrypt.lib
DLL Ncrypt.dll