問題タブ [xml-dsig]
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.
java - 古い仕様の javax.xml.crypto カスタム CanonicalizationMethod
で署名されたxmlを検証しようとしています
しかし、例外があります:
javax.xml.crypto.MarshalException: java.security.NoSuchAlgorithmException: no such algorithm: http://www.w3.org/TR/1999/WD-xml-c14n-19991115 for provider XMLDSig
xml 入力を変更するオプションが好きではありません。いくつかのカスタム正規化メソッドを実装するか、Javaに他のメソッドを強制的に使用させる方がはるかに優れているように見えますが、これを行う方法がわかりません。
java - xades4j.UnsupportedAlgorithmException: XML 署名プロバイダーでサポートされていない変換
特定のブロブの XAdES-BES 署名を作成しようとしています。この署名では、署名する前にコンテンツに 2 つの変換を追加する必要があります。 .
問題は、そのオプションの変換にあります。カスタム Transform を実装して登録し、最終的に Xades4J で使用する方法を見つけようとしています。
これまでのところ、(Google と多くの時間をありがとう) 多くのことを考え出したので、大まかに次のようになりました。コンストラクターに新しい TransformService を配置するプロバイダー クラスがあります。私のメイン コードでは、私の Provider を Security インスタンスに追加します。次に、実際の署名対象オブジェクトに変換を追加しようとします。
残念ながら、常に同じエラーが発生します。
したがって、私のコードは次のようになります (ここで必要と思われるものに省略されています)。
TransformService
クラス:
Provider
サブクラス:
最後にTest
、実際の署名を含むメイン クラスです。その変換がなくても機能します (ただし、必要な変換は追加されません)。したがって、Base64 は機能します。
ご覧のとおり、いくつかのものを印刷します。たとえば、インストールが正常に機能することをログに記録し、インストールされたプロバイダーもログに記録しました。これを出力として取得します:
私が見る限り、プロバイダーは正常に登録されており、transformservice は問題なくロードできます...では、実際に何が起こっているのかわかりませんか?
Xades4j のソース コードも確認しましたが、内部で何が起こっているか.withTransform(new GenericAlgorithm("urn:xml:sig:transform:optional-deflate"))
は非常に単純です。
エラーが発生している正確な行はtransforms.addTransform(dObjTransf.getUri())
. このtransforms
オブジェクトは、「標準」の Apache オブジェクト (org.apache.xml.security.transforms.Transforms
オブジェクト) です。だから、私がコードで行っているのと同じ TransformService を2行上に取得できるはずだと思いますか? しかし、そうではありませんか?
私が欠けているものを指摘できる人はいますか? 永遠に感謝します。
c++ - libxmlsec1 で XML 署名を検証する
Java 用の Apache Santuario XML セキュリティで XML 署名を検証できます。コードは次のようになります。
今、私はそれをC++で実装したいと考えています。C++ 用の Apache Santuario XML セキュリティを試してみましたが、c14n11 をサポートしていないとのことで失敗しました (間違っていることを願っています)。そこで、libxmlsec1 を使うように変更したのですが、問題は libxmlsec1 での実装方法がわからないことです。Reference 要素のすべてのファイルを検証する必要はありません。SignedInfo 要素を確認したいだけです。私は次のコードを実行しただけです。
次のエラーで失敗します。
xmlsec1 に signature.xml からすべての x509Certificate 要素を読み込ませ、signature.xml を検証する方法を知っている人はいますか?
以下は signature.xml です。
xpath - XAdES4j を使用して xpath 変換で切り離された署名を生成する際のエラー
xades署名を生成するためにxades4jを使用しています。参照に xpath 変換を含めたい。私の問題は、それが分離された署名であり、xpath に名前空間があるという事実です...
次のxml(抜粋)で試しました:
コードを使用して、このドキュメントのエンベロープ署名を実行しようとすると:
それは正常に動作し、参照は次のようになります。
しかし、切り離されたバージョンを試してみると、コードは次のようになります。
次のエラーが表示されます: プレフィックスは名前空間に解決する必要があります: t
私の問題は、ここで説明されている名前空間と xpathに似てい ますが、答えはなく、私が持っているものは少し異なります。その問題への答えが私を助けるかもしれないことをゲストに...
では、xades4j で名前空間をトランスフォームに設定するにはどうすればよいですか?
xades4j - xades4j: signedproperties リファレンスで変換を使用して署名を生成する方法
xades4j(「テンプレートのように」)を使用して再現する必要があるxades署名の例を受け取りました。
署名の例は次のとおりです (抜粋)。
そこには属性 Type がないため、この参照が xades に準拠していないことはわかっています。
私の問題は、その参照の変換にあります。xades4j でこのオプションを設定する方法がわかりません。これはできますか?
また、それがここにあるかどうかはわかりません。署名の上部に、正規化方法が1つであると書かれているため、signedpropertiesリファレンスでは、正規化方法が別のものであると書かれているためです...私はこれを正しく読んでいますか?
.net - dsig プレフィックスを使用した SignedXml の検証
dsig プレフィックスを使用して SignedXML を生成しようとしています ( xml signature DS prefix?での George Dima の回答のおかげで、これを行うことができました)。
問題は、CheckSignature メソッドが false を返すようになったことです。ComputeSignature メソッドと同じように、このメソッドもオーバーライドする必要があると考えていますが、その方法がわかりません。
プレフィックス付きの SignedXML を生成する方法について完全な回答を持っている人はいますか? CheckSignature で確認することもできますか?
このトピックに関連するすべての投稿を確認したことは保証できますが、完全な解決策を提供するものには遭遇していません。
.NET は、非標準の XMLDSIG 署名要素名をサポートしていません
ありがとう!