Функция CryptXmlSign (cryptxml.h)

Функция CryptXmlSign создает криптографическую подпись элемента SignedInfo .

Синтаксис

HRESULT CryptXmlSign(
  [in]           HCRYPTXML                       hSignature,
  [in, optional] HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hKey,
                 DWORD                           dwKeySpec,
                 DWORD                           dwFlags,
                 CRYPT_XML_KEYINFO_SPEC          dwKeyInfoSpec,
  [in, optional] const void                      *pvKeyInfoSpec,
  [in]           const CRYPT_XML_ALGORITHM       *pSignatureMethod,
  [in]           const CRYPT_XML_ALGORITHM       *pCanonicalization
);

Параметры

[in] hSignature

Дескриптор структуры CRYPT_XML_SIGNATURE .

[in, optional] hKey

Дескриптор закрытого ключа , используемого для подписывания элемента SignedInfo . Этот параметр должен иметь значение NULL для алгоритмов подписи на основе HMAC.

dwKeySpec

Значение DWORD , указывающее тип ключа. Этот параметр может принимать одно из указанных ниже значений.

Значение Значение
AT_KEYEXCHANGE
1
Пара ключей — это пара обмена ключами.
AT_SIGNATURE
2
Пара ключей является парой подписей.
CERT_NCRYPT_KEY_SPEC
0xFFFFFFFF
Ключ — это api шифрования: ключ следующего поколения (CNG).

dwFlags

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

Значение Значение
CRYPT_XML_SIGN_ADD_KEYVALUE
0x00000001
Заполните элемент KeyValue из дескриптора, указанного в параметре hKey .
Важно Флаг CRYPT_XML_SIGN_ADD_KEYVALUE нельзя использовать, если для параметра dwKeyInfoSpec задано значение CRYPT_XML_KEYINFO_SPEC_ENCODED.
 
CRYPT_XML_FLAG_DISABLE_EXTENSIONS
0x10000000
Используются только реализации по умолчанию для подписи и дайджеста. Если этот флаг установлен, другие зарегистрированные расширения не загружаются.

dwKeyInfoSpec

Тип структуры данных, на которую указывает параметр pvKeyInfoSpec . Ниже приведены некоторые возможные сочетания.

dwKeyInfec pvKeyInfoSpec
CRYPT_XML_KEYINFO_SPEC_NONE Задано значение NULL
CRYPT_XML_KEYINFO_SPEC_ENCODED Указывает на структуру CRYPT_XML_BLOB
CRYPT_XML_KEYINFO_SPEC_PARAM Указывает на структуру CRYPT_XML_KEYINFO_PARAM

[in, optional] pvKeyInfoSpec

Указатель на структуру, тип которой определяется значением параметра dwKeyInfoSpec .

[in] pSignatureMethod

Указатель на структуру CRYPT_XML_ALGORITHM , задающую метод сигнатуры.

[in] pCanonicalization

Указатель на структуру CRYPT_XML_ALGORITHM , задающую метод канонизации.

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

Если функция выполнена успешно, функция возвращает ноль.

Если функция завершается сбоем, она возвращает значение HRESULT , указывающее на ошибку.

Комментарии

Если сертификат не найден, CryptXmlSign создаст пользовательский интерфейс для выбора сертификата. Если это окно создается из процесса, запущенного в сеансе 0, приложение может неожиданно завершить работу.

Требования

   
Минимальная версия клиента Windows 7 [только классические приложения]
Минимальная версия сервера Windows Server 2008 R2 [только классические приложения]
Целевая платформа Windows
Header cryptxml.h
Библиотека Cryptxml.lib
DLL Cryptxml.dll