エンベロープ XML デジタル署名 (XMLDSIG) を必要とする業界仕様を実装しようとしています。例 ( ) に準拠する代わりに、<Signature>
私の仕様では署名要素に独自の名前を使用しています。
<xs:element name="ensembleSignature" type="dsig:SignatureType" />
<!-- wish this was: <xs:element ref="dsig:Signature" /> -->
したがって、要素は「署名」という名前ではなく、dsig XML 名前空間ではなく、ドメインの XML 名前空間にあります。
多くの余分な作業を行うことで、このカスタム シグネチャを .NET で作成できます。
- .NET SignedXml クラスを使用して <dsig:Signature> 要素を作成します
- DOM を操作して <dsig:Signature> を削除し、要素を <myns:ensembleSignature> として再作成します。
しかし、着信要素の名前を <dsig:Signature> に戻しても、.NET は着信 <myns:ensembleSignature> を検証できないようです。
私は何度も XMLDSIG 仕様を検討してきました。すべての例で <Signature> が使用されていますが、エンベロープされた変換であっても、この要素名は特に必要ないようです。これは、XMLDSIG 仕様にそのような要件がない場合に、この単一の要素名しかサポートしないという SignedXml のバグですか?