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"" に設定します。 |
関連トピック