次の方法で共有


XML デジタル署名暗号化拡張機能

CryptXML を使用すると、開発者はシステム全体の暗号化拡張機能 DLL を登録することで、ネイティブでサポートされる暗号アルゴリズムを拡張できます。 拡張 DLL は、SignatureMethod および digestMethod XML 要素 でサポートされるアルゴリズムを拡張します。 拡張 DLL では、追加のパラメーターを XML デジタル署名にエンコードするアルゴリズムをサポートできます。

すべての拡張 DLL は、CRYPT_XML_CRYPTOGRAPHIC_INTERFACE 構造体へのポインターを返す CryptXmlDllGetInterface 関数をサポートする必要があります。 この構造体は、実装されている暗号拡張関数への関数ポインターを提供します。 サポートされる関数は、サポートされている暗号アルゴリズムの種類と、アルゴリズムでパラメーターを XML デジタル署名にエンコードする必要があるかどうかによって異なります。

暗号化拡張機能関数には、次の関数ポインターが含まれます。

必要な関数

ダイジェスト メソッド関数

Signature メソッド関数

既定のエンコードされたパラメーターを持つアルゴリズムの場合

暗号化拡張 DLL は、システム全体で登録されます。 暗号化拡張機能 DLL を登録するには、管理者特権が必要です。

すべての CryptXML 暗号化拡張機能は、SignatureMethod または DigestMethod 要素のアルゴリズム属性フィールドに設定された URI 値によって登録されます。

拡張 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"" に設定します。

 

XML デジタル署名暗号化アルゴリズムの