Функция CryptGetKeyParam (wincrypt.h)
Синтаксис
BOOL CryptGetKeyParam(
[in] HCRYPTKEY hKey,
[in] DWORD dwParam,
[out] BYTE *pbData,
[in, out] DWORD *pdwDataLen,
[in] DWORD dwFlags
);
Параметры
[in] hKey
Дескриптор запрашиваемого ключа.
[in] dwParam
Указывает тип выполняемого запроса.
Для всех типов ключей этот параметр может содержать одно из следующих значений.
Значение | Значение |
---|---|
|
Получение алгоритма ключа. Параметр pbData является указателем на значение ALG_ID , которое получает идентификатор алгоритма, указанного при создании ключа.
Если для параметра Algid функции CryptGenKey указано AT_KEYEXCHANGE или AT_SIGNATURE, идентификаторы алгоритма, используемые для создания ключа, зависят от используемого поставщика. Дополнительные сведения см. в разделе ALG_ID. |
|
Если ключ сеанса указан параметром hKey , получите длину блока шифра ключа. Параметр pbData является указателем на значение DWORD , которое получает длину блока в битах. Для потоковых шифров это значение всегда равно нулю.
Если пара открытого и закрытого ключей указана с помощью hKey, получите степень детализации шифрования пары ключей. Параметр pbData является указателем на значение DWORD , которое получает степень детализации шифрования в битах. Например, базовый поставщик шифрования Майкрософт создает 512-разрядные пары ключей RSA, поэтому для этих ключей возвращается значение 512. Если алгоритм открытого ключа не поддерживает шифрование, полученное значение не определено. |
|
pbData — это адрес буфера, получающего сертификат X.509, закодированный с помощью Distinguished Encoding Rules (DER). Открытый ключ в сертификате должен соответствовать соответствующей подписи или ключу обмена. |
|
Это значение не используется. |
|
Получение фактической длины ключа. Параметр pbData является указателем на значение DWORD , которое получает длину ключа в битах. KP_KEYLEN можно использовать для получения длины ключа любого типа. Поставщики служб шифрования (CSP) Майкрософт возвращают длину ключа в 64 бита для CALG_DES, 128 бит для CALG_3DES_112 и 192 бита для CALG_3DES. Эти длины отличаются от длины, возвращаемой при перечислении алгоритмов со значением dwParam функции CryptGetProvParam , равным PP_ENUMALGS. Длина, возвращаемая этим вызовом, представляет собой фактический размер ключа, включая биты четности, включенные в ключ.
Поставщики служб конфигурации Майкрософт, поддерживающие CALG_CYLINK_MEK ALG_ID возвращают 64 бита для этого алгоритма. CALG_CYLINK_MEK является 40-разрядным ключом, но имеет четность и нулевые биты ключа, чтобы сделать ключ длиной 64 бита. |
|
Получение значения соли ключа. Параметр pbData является указателем на массив BYTE , который получает значение соли в форме с малым эндианом . Размер значения соли зависит от используемого CSP и алгоритма. Значения salt не применяются к парам открытых и закрытых ключей. |
|
Получите разрешения ключа. Параметр pbData является указателем на значение DWORD , которое получает флаги разрешений для ключа.
В настоящее время определены следующие идентификаторы разрешений. Разрешения ключа могут быть равны нулю или сочетанию одного или нескольких из следующих значений.
|
Если ключ стандарта цифровой подписи (DSS) указан параметром hKey , для значения dwParam также можно задать одно из следующих значений.
Если ключ сеансаблочного шифра указан параметром hKey, для значения dwParam также можно задать одно из следующих значений.
Значение | Значение |
---|---|
|
Получение эффективной длины ключа RC2. Параметр pbData является указателем на значение DWORD , которое получает действующую длину ключа. |
|
Получение вектора инициализации ключа. Параметр pbData является указателем на массив BYTE , получающий вектор инициализации. Размер этого массива равен размеру блока в байтах. Например, если длина блока составляет 64 бита, вектор инициализации состоит из 8 байт. |
|
Получение режима заполнения. Параметр pbData является указателем на значение DWORD , которое получает числовой идентификатор, идентифицирующий метод заполнения , используемый шифром. Это может быть одно из следующих значений.
|
|
Получение режима шифра. Параметр pbData является указателем на значение DWORD , которое получает идентификатор режима шифра. Дополнительные сведения о режимах шифра см. в разделе Шифрование и расшифровка данных.
В настоящее время определены следующие идентификаторы режима шифра.
|
|
Получение количества битов для обратной отправки. Параметр pbData — это указатель на значение DWORD , которое получает количество битов, обрабатываемых за цикл при использовании режимов шифра OFB или CFB. |
Если ключ алгоритма Диффи-Хелмана или алгоритма цифровой подписи (DSA) указан с помощью hKey, то для значения dwParam можно также задать следующее значение.
Значение | Значение |
---|---|
|
Проверяет параметры алгоритма Diffie-Hellman или ключа DSA. Параметр pbData не используется, и значение, на которое указывает pdwDataLen , получает ноль.
Эта функция возвращает ненулевое значение, если параметры ключа допустимы, или ноль в противном случае. |
|
Это значение не используется.
Windows Vista, Windows Server 2003 и Windows XP: Получите значение соглашения секрета из импортированного ключа алгоритма Диффи-Хелмана типа CALG_AGREEDKEY_ANY. Параметр pbData — это адрес буфера, который получает значение соглашения секрета в формате с минимальным байтом. Длина этого буфера должна совпадать с длиной ключа. Параметру dwFlags необходимо задать значение 0xF42A19B6. Это свойство может получить только поток, работающий под локальной системной учетной записью. Это свойство доступно для использования в перечисленных выше операционных системах. В последующих версиях он может быть изменен или недоступен. |
Если сертификат указан с помощью hKey, то для значения dwParam можно также задать следующее значение.
[out] pbData
Указатель на буфер, который получает данные. Форма этих данных зависит от значения dwParam.
Если размер этого буфера неизвестен, требуемый размер можно получить во время выполнения, передав значение NULL для этого параметра и задав значение, на которое указывает pdwDataLen , равным нулю. Эта функция поместит требуемый размер буфера в байтах в значение, на которое указывает pdwDataLen. Дополнительные сведения см. в разделе Извлечение данных неизвестной длины.
[in, out] pdwDataLen
Указатель на значение DWORD , которое в записи содержит размер буфера в байтах, на который указывает параметр pbData . При возврате функции значение DWORD содержит количество байтов, хранящихся в буфере.
[in] dwFlags
Этот параметр зарезервирован для использования в будущем и должен иметь нулевое значение.
Возвращаемое значение
Если функция выполняется успешно, функция возвращает ненулевое значение.
Если функция завершается сбоем, она возвращает ноль. Для получения дополнительных сведений об ошибке вызовите Метод GetLastError.
Коды ошибок, предваряемые "NTE", создаются конкретным поставщиком служб конфигурации. Ниже приведены некоторые возможные коды ошибок.
Код возврата | Описание |
---|---|
|
Один из параметров указывает недопустимый дескриптор. |
|
Один из параметров содержит недопустимое значение. Чаще всего это недопустимый указатель. |
|
Если буфер, заданный параметром pbData , недостаточно велик для хранения возвращаемых данных, функция задает код ERROR_MORE_DATA и сохраняет требуемый размер буфера в байтах в переменной, на которую указывает pdwDataLen. |
|
Параметр dwFlags не равен нулю. |
|
Недопустимый ключ, указанный параметром hKey . |
|
Параметр dwParam указывает неизвестное число значений. |
|
Не удается найти контекст CSP, указанный при создании ключа. |
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | wincrypt.h |
Библиотека | Advapi32.lib |
DLL | Advapi32.dll |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по