問題タブ [signedxml]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - .Net 4.0 C# SHA256 キーをロードすると、SignatureAlgorithm が SHA1 に変更されます
私は今、これに丸一週間苦労しており、誰かが私を助けてくれることを願っています.
SHA256 と xmldsig を使用して xml に署名する必要があります。このために、SignedXML クラスを使用します。このクラスを調べると、読み込まれたキーの SignatureAlgorithm 値を使用して、使用するハッシュ タイプを決定していることがわかります。
キーをどのようにロードしても(証明書ファイルのロードを介して証明書ストアを介して)、SHA1がSignatureAlgorithmとして表示されます。MMC 証明書ストアで証明書の詳細を調べると、SHA256 が SignatureAlgorithm として表示されます。
openssl と makecert の両方を使用して SHA256 証明書キーを生成しようとしましたが、どちらも .Net で SHA1 として読み込まれます。SignatureMethod として SHA1 を使用します
.Net 4.0 は SHA256 をサポートする必要があります。
c# - SQL CE 4.0 データベースに大きな署名付き UTF-8 文字列を格納する
(潜在的に) 大きい署名付き XML 文字列を格納している SQL CE 4.0 データベースがあります。ntext現在、 4000 バイトの制限があるため、この文字列を type の列に格納していますnvarchar(この投稿を参照)。
行の挿入
したがって、このテーブルに行を挿入するには、次のようになります。
これは「小さな」文字列 (4000 バイト未満) では機能しますが、それよりも大きい文字列ではサイレントに失敗します。コマンドの実行は例外をスローしませんが、空の文字列が SignedObject 列に表示されます。
入力パラメータの変更
stringしたがって、いくつか読んだ後、 aが として正しく挿入され、ntextとして解釈されないことを確認するにはnvarchar、次のようにパラメーターの型を指定する必要があることがわかりました。
これにより、大きな文字列を正しく挿入できるようになり、問題が解決されました。
署名検証
SignedXmlしたがって、私のプログラムはデータベースからこの文字列を読み取り、それを XML ファイルに入力し、.NETクラスを使用して署名を検証しようとします。問題は、署名が正しく検証されないことです。
本当の質問
なぜこれが起こるのでしょうか? 私の XML ファイルは UTF-8 であるため、これが文字列を格納する形式です。これを列に格納ntextすると、UTF-16 として格納されている場合、文字列がわずかに変更されますか? また、SQL が以前のように入力を解釈するとnvarchar、署名の検証が成功するのはなぜでしょうか? エンコーディングに影響を与えないデータベースにこのデータを保存するより良い方法はありますか? どんな助けでも大歓迎です!
saml-2.0 - SignedXml.CheckSignature() は true ですが、SignedXml.CheckSignature(certificate) は false
証明書によって署名された ADFS から SAML2 トークンを生成しています。今、同じ証明書を使用して、その署名を検証しようとしています。
CheckSignature() は、トークンに含まれる公開鍵に対して署名を検証します。CheckSignature(cert, [true/false]) は、証明書の秘密鍵に対して署名を検証します。
一方が機能し、他方が機能しないというのはどうしてでしょうか?
c# - SHA-256 .Net 4.5 サポートを使用したパラメーターなしの RSASSA-PSS
System.Security.Cryptography (ターゲット フレームワーク .NET 4.5) を使用して xml デジタル署名を作成しようとしていますが、これまでのところ、次のスキームを使用して署名を作成および検証できました: RSA PKCS#1 v1.5 および SHA-256: http://www.w3.org/2001/04/xmldsig-more#rsa-sha256
ただし、次のスキームを使用することはできません。 MGF1
表示されているエラーは、「指定された署名アルゴリズムに対して SignatureDescription を作成できませんでした」という明確なものです。
「RSA PKCS#1 v1.5 および SHA-256」の場合、署名として次のパブリック クラスを追加しました。
ただし、「SHA-256 を使用したパラメーターなしの RSASSA-PSS」が .Net 4.5 でサポートされているかどうか、サポートされている場合はその署名定義を設定する方法がわかりません。
どなたか同じような経験をお持ちの方で、少しでもお力になれれば幸いです。
xml - キーセットが存在しません
X509Certificate2証明書ファイルが 1 つあり、クラスに割り当てます。
これcertには、ファイルの署名に使用する公開鍵のみがありxmlます。
そして、私はこれを行います、
行signedXml.ComputeSignature()に何か問題があります。
「キーセットが存在しません」。
このケースについてはわかりません。どうすればこれを解決できますか?
.net - dsig プレフィックスを使用した SignedXml の検証
dsig プレフィックスを使用して SignedXML を生成しようとしています ( xml signature DS prefix?での George Dima の回答のおかげで、これを行うことができました)。
問題は、CheckSignature メソッドが false を返すようになったことです。ComputeSignature メソッドと同じように、このメソッドもオーバーライドする必要があると考えていますが、その方法がわかりません。
プレフィックス付きの SignedXML を生成する方法について完全な回答を持っている人はいますか? CheckSignature で確認することもできますか?
このトピックに関連するすべての投稿を確認したことは保証できますが、完全な解決策を提供するものには遭遇していません。
.NET は、非標準の XMLDSIG 署名要素名をサポートしていません
ありがとう!