PDF電子署名を長期署名化するPAdESと言う仕様の検討がETSIを中心に進められています。既に英語と
日本語のWikipediaには記載されています。日本語版はETSI にも行かれているUさんが編集されてました。で私もPAdESの事をこのブログに書こうと思いつつ…ずるずる伸ばしていたらUさんのブログで
PAdESに関する説明が開始されていました。
しまった!どう考えてもPKIの仕様の話でUさんに勝てるとは思えない(笑) これはもうあちらのブログを楽しみにするしか無いか… とは言え時間があったら私なりのPAdESの話を書くかも。こちらは入門編的な内容になるだろうし、勝ち負けの問題でも無いだろうし… と自分をなぐさめてみる。
なお弊社ではPDF電子署名に関しては
アンテナハウスのPDF電子署名モジュールの販売代理店でもあります。PDF電子署名に関しては多少はノウハウもあります。一括してバッチ的にPDF署名を付与するようなツールを受託開発した経験も複数ありますので、ご興味がありましたら
お問い合わせ下さい。カスタマイズを含めてご相談にのります。ちなみに最近は署名ではありませんが
PDF/Aに関係する仕事もしていたりします。
何とかPAdESに対応したPDF署名ツールが提供できるようになると良いなぁとは思っていますがさてどうなりますか。その前に(入門的な)記事をちゃんと書かなきゃなぁ。とりあえずPAdESに(特にPKI的な)興味がある方はUさんのブログ
「自堕落な技術者の日記」は必読ですよ。
Windows環境で証明書ストアを利用するAPIはWin32の時代ではCryptoAPI(CAPI)が使われてきました。.NET Frameworkの時代になって、CryptoAPIに対してCOMインターフェイスを提供するAPIが
CAPICOMでした。CAPICOMにより.NET FrameworkからCryptoAPIの利用が可能になります。証明書の選択ダイアログを表示して選択したり、証明書情報をGUIで表示したり、証明書を検証したりする事ができます。しかしCAPICOMのDLLファイルは標準では提供されていません。更に色々なアプリケーションがCAPICOMをインストールする事が多く混乱の元になっていました。
実は弊社の
長期署名ライブラリLe-XAdESはCAPICOMを使っています。それは昔Le-XAdESを開発した当時参考にしたのが.NET Framework 1.0用のサンプルだった為でした。しかし.NET Framework 2.0から
X509Certificateが新しく
X509Certificate2として機能が拡張されCAPICOMと同等の処理が可能になっていました。調べた結果、現在Le-XAdESの利用においてもX509Certificate2を使えばCAPICOMを使わなくても良いと言う事が分かりましたので、現在修正してバージョンアップ作業中です。
と言う事で今後.NET Framework 2.0以降にて証明書ストアを利用するならX509Certificate2クラスと
X509Storeクラスを使いましょう。証明書の認証パスの検証も
X509Chainクラスにて可能です。GUIを使った証明書の選択や表示は
X509Certificate2UIクラスを利用します。
これで今後はCAPICOMと決別できそうです。ただCryptoAPI(CAPI)はICカード等のドライバの関係でまだまだ使わなければならなかったりしますが…