XML 数字签名加密扩展
CryptXML 允许开发人员通过注册系统范围的加密扩展 DLL 来扩展本机支持的加密算法。 扩展 DLL 扩展 SignatureMethod 支持的算法,并 DigestMethod XML 元素。 扩展 DLL 可以支持将其他参数编码为 XML 数字签名的算法。
所有扩展 DLL 都必须支持 CryptXmlDllGetInterface 函数,该函数返回指向 CRYPT_XML_CRYPTOGRAPHIC_INTERFACE 结构的指针。 此结构提供用于实现的加密扩展函数的函数指针。 支持的函数取决于支持的加密算法类型以及算法是否必须将参数编码为 XML 数字签名。
加密扩展函数包括以下函数指针:
-
必需函数
-
Digest 方法函数
-
签名方法函数
-
对于具有默认编码参数的算法
加密扩展 DLL 在系统范围内注册。 注册加密扩展 DLL 需要管理员权限。
所有 CryptXML 加密扩展均由 SignatureMethod 中设置的 URI 值或 DigestMethod 元素的算法属性字段注册。
扩展 DLL 的注册表路径如下所示:
-
32 位
-
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\CryptXML\URI\{uri}
-
64 位
-
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\CryptXML\URI\{uri}
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432NODE\Microsoft\Cryptography\CryptXML\URI\{uri}
每个密钥包含以下设置。
名字 | 类型 | 数据 |
---|---|---|
DLL |
可展开字符串 |
必填。 XML 加密提供程序 DLL 的绝对路径。 **注意:**我们建议加密扩展 DLL 位于只能由具有管理权限的应用程序写入的目录中。 LoadLibrary 用于加载加密扩展 DLL。 |
名字 |
字符串 | 自选。 与此 URI 关联的显示名称。 |
GroupId |
DWORD | 必填。 与此加密算法关联的组标识符。 可能的值包括:CRYPT_XML_GROUP_ID_HASH<强> = 1 CRYPT_XML_GROUP_ID_SIGN<强> = 2 |
CNGAlgid |
字符串 | 必填。 要传递给 BCrypt 或 NCrypt 函数的 CNG 算法名称。 |
CNGExtraAlgid |
字符串 | 自选。 除了 CNGAlgid 成员中的字符串外,还可以传递给 CNG 函数的额外算法字符串。 对于签名算法(CRYPT_XML_GROUP_ID_SIGN),此成员是传递给 CNG 函数的公钥算法字符串。 对于 GroupId 的其他值,请将 pwszCNGExtraAlgid 成员设置为空字符串 L“”。 |
相关主题