問題タブ [xml-signature]
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 - XML 署名のチェック + ECC アルゴリズム
現在の Android プロジェクトで、.pdf ファイル (pdf ファイルは XML ファイルで署名されています) を使用して XML 署名を検証する必要があるポイントに到達しましたが、1 つの大きな問題が発生しました。これは、iaik-libaries を使用できないことと関連しています。
署名は、標準の Java ライブラリでは処理できない ECC アルゴリズム (楕円曲線) で作成されます。これらの署名を処理する方法を知っている人はいますか?
だから私が探しているのは、別のlibarieかjavax-Problemの回避策です。
アイデアをありがとう!
追加情報:
- Apache Santuario については知っていますが、javax に追加されるクラスが含まれており、DalvikVM では許可されていないため、使用できません。
- iaikで簡単にできることは知っていますが、ライセンスの問題(+ javaxの問題)のため、オプションではありません。
- コードは投稿しません。自分のやり方では実行できないためです。完全に立ち往生しており、ゼロから新しいアイデアが必要です:/
java - Bouncycastle XmlSignatureFactory NoSuchAlgorithmException
ECDSAを使用するSiganturesを検証するためにBouncyCastleを使用してXMLSignatureをチェックすることに問題があります。
関連するコード行は次のとおりです。
最後の行で、次の例外がスローされます。
行をに変更すると
私は得る
誰かがこれを引き起こす原因について何かアイデアを持っていますか?
java - ユーザー入力による xsd to xml ツール
誰かが次のことを行うJavaのツールまたはコンバーターを提案できますか(1)ユーザーはXSDファイルをツールに提供します。(2) ツールは XSD を解釈し、(XSD で定義されたタイプに従って) データ入力を許可する画面を表示します。(3) ユーザーは値を入力し、[XML の生成] をクリックします。(4) ツールは、ユーザーが入力した値を使用し、XSD 定義に準拠する XML を生成します。
java - サポートされていないSignatureMethodアルゴリズムですが、アルゴリズムはBCプロバイダーによって利用可能なサービスとしてリストされています
短くするために、私の問題は次のとおりです。
関数の先頭にBCプロバイダーを追加します。
すべてのサービスを一覧表示するとき
リストには「RIPEMD160WITHECDSA」が含まれています
このコードスニペットの最後の行:
メッセージで例外が発生します:
サポートされていないSignatureMethodアルゴリズム:http ://www.w3.org/2007/05/xmldsig-more#ecdsa-ripemd160
どういう意味ですか?RIPEMD160WITHECDSAとこのURLで指定されたアルゴリズムの違いは何ですか?または、URLがこのAlgorithmnameにマップされていないだけですか?
スタックトレースは次のとおりです。
java - pkcs12keystoreusongエイリアスから署名証明書を取得する簡単な方法
xades4jに、エイリアスを使用してpkcs12から署名証明書を取得する簡単な方法があるかどうか誰かに教えてもらえますか?
c# - SignedXmlクラスに依存しないXmlDsigEnvelopedSignatureTransformを使用する方法
インターネット上のすべての例は、SignedXmlクラスの一部としてのXmlDsigEnvelopedSignatureTransformクラスの使用法を示しています。
このクラスを単独で使用したいと思います。nodeListを指定するだけで、署名ノードなしで結果が得られます。
しかし、出力nodeListには、削除したいds:Signatureノードがまだ含まれています。
これを行う正しい方法は何ですか?あなたの助けは非常にありがたいです。
x509certificate - Web アプリケーションのスマートカードに含まれる秘密鍵を使用して XML に署名する方法は?
Web アプリケーションの USB トークン (スマートカードなど) に含まれる、エクスポートできない秘密鍵 (これを使用してハッシュを作成するためのユーザー入力によってパスフレーズ/秘密パスワードを通知する必要があります) を使用して XML に署名するソリューションを探していました。これを作成するためにac#クラスライブラリを作成しましたが、明らかにコードはサーバー側で実行されるため、サーバーPCに接続されていない限り、インターネット経由でクライアントのusbtoken /スマートカードにアクセスできません(私の解決策は顧客のローカル ネットワークにインストールされ、usbtoken がサーバーの USB に差し込まれています。今日はそのように動作していますが、顧客が自分のマシンでそのトークンを使用するためにこれを変更したいと思います)
これを実現するために、SignedXml、X509Certificates、およびその他のクラスを使用してコードを作成しましたが、これらすべてをカプセル化してクライアント側で実行するために、Silverlight クラス ライブラリで同等のものを探していましたが、残念ながら SignedXml は Silverlight では使用できません (存在しません..)。
これを正常に行うために ActiveX を作成しましたが、私のソリューションは Internet Explorer/Windows でのみ機能するようになりました。また、ビジネス ロジックが原因で保守が容易ではありません。
誰でもこれで私を助けてくれますか?どんな提案でも大歓迎です。
ActiveX ソリューションを Silverlight に移植できる場合、または他のブラウザー/OS で実行できる他の MS テクノロジを使用して移植できる場合。
ネイティブスピーカーではなく、下手な英語で申し訳ありません。ありがとうございました。
xml - 名前空間を変更するXSLT変換
私は次のXMLを持っています(データの多くはダミーです)
そして、私がやりたいのは、msg
要素の名前(にnewmsg
)とデフォルトの名前空間をに変更することだけhttp://someaddress.com/m2
です。それ以外はすべてそのままにしておく必要があります。私が得ることができた最も近いものはこのxsltです
テストにxalanを使用しています。これは、上記を実行したときに取得する出力xmlです。
これには2つの主な問題があります。
- 名前
ds
空間が出力から消えるだけで、理由はわかりません。 xsi
2番目の問題は、から名前空間を削除し、calcnode
がcalcnode
署名の計算(および検証)に使用されるノード(そのセクションの下にあります)であるとすると、そのような変更により、署名の検証が理解できなくなることです。
私はxsltのいくつかの異なる反復を試しましたが、多くの結果は得られませんでした。誰かがその状況に光を当てることができますか?
java - XML の特定の部分だけに署名する方法
XML の一部のみに署名することで XML 署名を実行しようとしていますが、多くの検索を行った後、解決策を見つけることができませんでした。
Xpath2変換とEXCLUSIVE正規化を使用してXMLに署名するためにJavaを使用しています。次の XML がある場合
署名すると、次の出力が得られます (実際のデータはダミーに置き換えられます)
署名を検証すると、すべて問題ありませんが、この直後に XML で XSLT を実行し、一部の要素に変更を加えますが、署名された要素 ( ns0:addr
) は変更されません。「addr」要素のみが署名されるべきだと明示的に言っていますが、その親 ( payload
、msg
またはaddr
) のいずれかに変更を加えようとすると、(私の理解によれば) すべきではないときに署名に失敗します。ヘッダー内のものなど、他の要素に変更を加えても、署名は引き続き有効です。
XPath 式 ( //*[local-name()='addr']/*
) をテストしたところ、署名する正しいデータが選択されました ( ns2:data
) が、ルート要素 ( msg
、addr
) から始まるすべての要素も取得しているようです。
UNION などのさまざまな変換も使用しようとしましたが、まったく機能しません。
問題が何であるかを知っている人はいますか?Javaで、デバッグ目的でXMLに署名するときに署名されているものを正確に確認する方法はありますか?
編集:
後で実行される xslt は、名前空間を ns0:addr 要素からルート要素 (msg) に移動するなどのことを行います。また、メイン要素の名前と名前空間を msg から newmsg (および別のデフォルトの名前空間) に変更しますが、署名済みデータ ( ns2:data
) はそのままです。
署名に使用されるコードは、多かれ少なかれここで言及されているコードですhttp://docs.oracle.com/javase/7/docs/technotes/guides/security/xmldsig/XMLDigitalSignature.html
ENVELOPED 変換の代わりに、XPATH2 変換を使用しています。
また、ENVELOPED の代わりに EXCLUSIVE を使用しています
EDIT2:
XML署名プロセスのより細かいデバッグを有効にすることができ、次のようになりました。
FINER: Pre-digested input:
21-Sep-2012 10:51:39 org.jcp.xml.dsig.internal.DigesterOutputStream write
FINER: <ns2:data xmlns="http://someaddress/ad/m1" xmlns:ns0="http://someaddres/ad/m3" xmlns:ns1="http://someotheraddres/ad/m2" xmlns:ns2="http://someaddres/ad/m3"> <ns2:name>somevalue</ns2:name> <ns2:value>354</ns2:value> </ns2:data>
正しいデータに署名しているように見えますが、名前空間が親要素から取得されているため、名前空間が問題であるかどうか疑問に思うように、署名にいくつかの追加の名前空間も追加されています。
余分な名前空間がすべて追加されないようにする方法を知っている人はいますか?
java - XML 署名 Java を検証する
次の XML ドキュメントを検証することは可能ですか。
問題は、コードを実行すると、このエラーが表示されることです
同じコードで次の XML を正常に検証しました。
この 2 つの XML 署名の違いは何ですか? また、最初の XML の例ではなく、2 番目の XML の例で動作するのはなぜですか ???