2

基本的なアプリのライセンスに XML dsig を使用することを検討しています。アプリはネイティブ Windows コード (.net なし) です。.net を使用して dsig をオフラインで簡単に作成できますが、ネイティブの C++ で検証したいと考えています。私がこれまでに見つけたものから、MSXML V5 は仕事をしますが、使用してはならず、V6 は dsig のサポートを削除します。

では、ネイティブ C++ の .net コードによって生成された XML dsig を簡単に検証するにはどうすればよいでしょうか?

4

1 に答える 1

2

残念ながら、XML 署名は MSXML 5.0 のみに付属しています。問題は、XML-DSig が実際には MSXML の機能と見なされていないことです。MSXML 5.0 は、系列の一部ではなく、派生物 (MSXML の奇妙な異母兄弟) と考えるのが最善です。混乱を招いてしまったので、MSXML 以外の名前を付けたほうがよかったでしょう。それに関するドキュメントはほとんどなく、配布する方法もありません。Microsoft の XML チームでさえ、「使用しないでください」と言っています。

しかし、それだけでは役に立ちません。本当の問題は、XML デジタル署名が扱いにくいことです。MS Office が XML を完全に制御していたため、MSXML 5.0 はそれを実装しただけです。そのため、一貫した結果を得ることができます。.NET から生成された XML 署名が MSXML 5.0 と相互運用できるという保証はありません。場合によっては機能し、別の場合には機能しないなど、一貫性のない結果が得られることさえあります。

最初に署名を生成したのと同じ .NET 機能を使用できるマネージ C++ コードを作成する必要があります。ネイティブ C++ ではありませんが、一貫した結果が得られます。他の唯一の方法は、デジタル署名を生成できる .NET と C++ の両方で使用できるライブラリを見つけることです。

于 2011-08-07T21:13:48.840 に答える