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


Криптографические расширения цифровой подписи XML

CryptXML позволяет разработчикам расширять криптографические алгоритмы, поддерживаемые в собственном коде, регистрируя библиотеку DLL-библиотеки расширения шифрования на уровне системы. Библиотеки DLL расширений расширяют алгоритмы, поддерживаемые XML-элементами SignatureMethod и DigestMethod . Библиотеки DLL расширений могут поддерживать алгоритмы, которые кодируют дополнительные параметры в цифровой подписи XML.

Все библиотеки DLL расширений должны поддерживать функцию CryptXmlDllGetInterface , которая возвращает указатель на структуру CRYPT_XML_CRYPTOGRAPHIC_INTERFACE . Эта структура предоставляет указатели на функции для реализованных функций расширения шифрования. Поддерживаемые функции зависят от типа поддерживаемого алгоритма шифрования и от того, должен ли алгоритм кодировать параметры в цифровую подпись XML.

Функции криптографических расширений включают следующие указатели функций:

Обязательные функции

Функции метода Digest

Функции метода signature

Для алгоритмов с параметрами по умолчанию

Библиотеки DLL криптографического расширения регистрируются на уровне всей системы. Для регистрации библиотеки DLL криптографического расширения требуются права администратора.

Все криптографические расширения CryptXML регистрируются значением URI, заданным в поле SignatureMethod или атрибутом алгоритма элемента DigestMethod .

Ниже приведены пути реестра для библиотек DLL расширений.

32-разрядная версия

HKEY_LOCAL_MACHINE\ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ\Microsoft\Криптографии\CryptXML\URI\{uri}

64-разрядная версия

HKEY_LOCAL_MACHINE\ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ\Microsoft\Криптографии\CryptXML\URI\{uri}

HKEY_LOCAL_MACHINE\ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ\\ WOW6432NODEMicrosoft\Криптографии\CryptXML\URI\{uri}

Каждый ключ содержит следующие параметры.

Имя Тип Данные
DLL
Расширяемая строка
Обязательный.
Абсолютный путь к библиотеке DLL поставщика шифрования XML.
**Примечание. **Библиотеки DLL криптографического расширения рекомендуется размещать в каталогах, в которые могут записываться только приложения с правами администратора.
LoadLibrary используется для загрузки библиотеки DLL криптографического расширения.
Имя
String Необязательный элемент.
Отображаемое имя, связанное с этим URI.
GroupId
DWORD Обязательный.
Идентификатор группы, связанный с этим алгоритмом шифрования. Возможные значения: CRYPT_XML_GROUP_ID_HASH<strong> = 1
< CRYPT_XML_GROUP_ID_SIGNstrong> = 2
CNGAlgid
String Обязательный.
Имя алгоритма CNG, передаваемого в функции BCrypt или NCrypt.
CNGExtraAlgid
String Необязательный элемент.
Дополнительная строка алгоритма, отличающаяся от строки в элементе CNGAlgid, которую можно передать в функции CNG.
Для алгоритмов подписи (CRYPT_XML_GROUP_ID_SIGN) этот член является строкой алгоритма открытого ключа, передаваемой функциям CNG.
Для других значений GroupId задайте для члена pwszCNGExtraAlgid пустую строку L "".

 

Алгоритмы шифрования цифровой подписи XML