質問

包み込まれたXMLデジタル署名(XMLDSIG)を必要とする業界仕様を実装しようとしています。例に準拠する代わりに(<Signature>)私の仕様は、署名要素に独自の名前を使用します。

<xs:element name="ensembleSignature" type="dsig:SignatureType" />
<!-- wish this was:  <xs:element ref="dsig:Signature" />  -->

そのため、要素は「署名」という名前ではなく、DSIG XMLネームスペースの代わりにドメインのXMLネームスペースにあります。

多くの余分な作業を使用して、.NETでこのカスタム署名を作成できます。

  1. .net signedxmlクラスI作成を使用しますu003Cdsig:Signature>エレメント
  2. DOMを操作して削除しますu003Cdsig:Signature>要素を再作成しますu003Cmyns:ensembleSignature>。

しかし、.NETは受信を確認できないようですu003Cmyns:ensembleSignature>、たとえ私が着信要素の名前を変更してもu003Cdsig:Signature>。

私は何度もXMLDSIG仕様を介していますが、すべての例は使用していますがu003CSignature>包み込まれた変換であっても、この要素名を具体的に必要としないようです。これは、XMLDSIG仕様にそのような要件がない場合にのみこの単一の要素名をサポートするというSignedXMLのバグですか?

役に立ちましたか?

解決

.NETでは、標準以外の要素名を使用することは不可能です。ただし、署名要素名はダイジェストの一部ではないため、「カスタム」署名要素を削除して、「標準」署名要素名を追加できます(u003CSignature> )signedinfoのため、signedInfo要素の白人や名前空間を変更しないように注意してください ダイジェストの一部。標準化方法では、私は空白を使用しています。要素の名前空間も使用しています。

  1. XMLをXmldocumentにロードします
  2. 探すu003CcustomSignature xmlns="http://b-to-b.com/Namespace">
  3. 新しい要素を作成しますu003CSignature>
  4. すべての子供を動かしますu003CcustomSignature>に
    • の空白や名前空間のコンテキストを邪魔しないように注意してくださいu003CSignedInfo>。
  5. 交換u003CcustomSignature>とu003CSignature>
  6. .NET SignedXMLクラスを使用して署名を確認します
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top