========================================             XML長期署名ライブラリ LE:XAdES:Lib V3             Ver 3.01.R1版 「最初にお読みください」           有限会社ラング・エッジ 2024年08月19日 ======================================== ■ 最初にお読みください 本ドキュメントは、有限会社ラング・エッジが開発した以下のXML電子署名ライブラリの V3についての全体の説明をするファイルです。 ・XML長期署名ライブラリ LE:XAdES:Lib V3   ISO 14533-2:2021のXML長期署名対応 詳しくは以下のサイトをご覧ください。 http://www.langedge.jp/biz/LeXAdES3/about.html なおAPI互換性が無い XML長期署名ライブラリ LE:XAdES:Lib V2 をご利用の場合にはこの ファイルでは無く、readme-LeXAdES.txt をご覧ください。 ■ LE:XAdES:Lib V2(前バージョンとの差異) XML長期署名ライブラリLE:XAdES:LibのV3はこれまでリリースしていたV2とはAPI互換性が ありませんのでご注意ください。この為に既存のLE:XAdES:Lib V2も当面はメンテナンス 対象として引き続きサポートして行きますが新機能はV3へ実装して行くことになります。 XML長期署名ライブラリLE:XAdES:LibのV3をV2と比較した差異は以下となります。 1)V3ではWindows版に加えてLinux版も提供 > V2ではWindows版のみだった  ※ 対応LinuxはRHE/CentOS系だがソースコード付属しており他もほぼ対応が可能 2)V3では.NET以外にJavaとC++(g++)のAPIも提供 > V2では.NETとC++/CLIのみだった  ※ ただしJavaのAPIにはJNIを使っておりネイティブJava対応では無い 3)V3では同一XMLファイル内の複数署名に対応 > V2では1ファイル1署名のみだった  ※ 署名付与と署名検証に対応(処理時にXPathや署名番号にて対象の指定が可能) 4)V3では多階層のManifest構造に対応 > V2では1階層のみ対応だった  ※ Manifestの参照先はアーカイブタイムスタンプ保証外なので注意が必要  ※ 詳しくはマニュアル doc/LeXAdES-manual.pdf を参照 5)V3ではPKI機能にLE:PKI:Libを利用(LE:PAdES:Libと共通化) > V2では独自PKI実装  ※ LE:PKI:Libは主としてOpenSSLを利用、V2は主として.NETの暗号APIを利用 いずれもV3での機能追加であり今後新規開発時にはV2では無くV3をお使いください。 ■ 評価版について 評価版については以下の制限があります。 1.評価版でセットできる参照数(LeXAdES/LeManifest)は最大4つまでとなります。 2.評価版で付与する電子署名の署名Idには常に「LeEval-」が最初に追加されます。 3.評価版にソースコードは付属しません。 評価版の確認はLx3Cmdを実行することで確認可能です。 ・Windows版の実行方法 > bin_win/Release/Lx3Cmd.exe ・Linux版の実行方法 $ bin_linux/Lx3Cmd.sh ○ 以下のように "[EVAL]" が表示された場合は評価版です。 Lx3Cmd : LeXAdES(V3.0X.RX)/LePKI(V1.0X.RX) [EVAL] LangEdge XAdES V3 Command. ^^^^^^ ○ 以下のように表示された場合は製品版です。 Lx3Cmd : LeXAdES(V3.0X.RX)/LePKI(V1.0X.RX) LangEdge XAdES V3 Command. ■ ドキュメント説明 readme-LeXAdES3.txt : 本ファイル、全体に関する説明とリリース履歴。 doc/LeXAdES3-manual.pdf : LE:XAdES:Lib V3の製品マニュアル。 doc/LeXAdES3/cmd/*-help.txt : コマンドラインの利用方法のヘルプファイル。 doc/LeXAdES3/cpp/index.html : CPPのAPIリファレンスファイル。 doc/LeXAdES3/java/index.html : JavaのAPIリファレンスファイル。 doc/LeXAdES3/dotnet/index.html : .NETのAPIリファレンスファイル。 ■ LE:XAdES:Lib V3モジュール構成 LE:XAdES:Lib V3は大きく2つのモジュールに分けられます。 ・LePKI : LangEdge PKI 操作モジュール   長期署名に対応したPKI操作の為のモジュール。   ※ LE:PAdES:Lib等と共有されるモジュールです。 ・LeXAdES3 : LangEdge XAdES 操作モジュール   XAdES署名に対応したXML操作の為のモジュール。 モジュールやライブラリ・ソース等もモジュール毎に分けられています。 LE:XAdES:Lib V3を利用するにはLePKIとLeXAdES3の両方のモジュールが必要と なります。 ■ フォルダ構成 1)LE:XAdES:Lib V3を利用するのに必要なフォルダ // 実行に必要なフォルダ bin_win : 実行ファイル(Windows用) 必要なDLLファイルやコマンドが入っている。※1 lib_linux : リンクライブラリ(Linux用) 必要なsoファイル等が入っている。※2 bin_linux : 実行ファイル(Linux用) 実行スクリプト Lx3Cmd.sh が入っている。 java/lib : Java用のライブラリフォルダ。※3 // API組み込み時に必要なフォルダ include : インクルードフォルダ この下へインクルードパスを通す。 lib_win : リンクライブラリ(Windows用) この下へライブラリパスを通す。※1 // クライアント署名用フォルダ clientV2 : クライアント署名Ver2用のフォルダ。 client : クライアント署名Ver1用のフォルダ(過去互換性の為)。 // ドキュメント関連 doc : マニュアルファイルやAPIリファレンス用フォルダ。 license : フリーライブラリのライセンス用フォルダ。 ※1 Windows環境用は更にbin_win下が以下のサブフォルダに分かれている。    Release : Windows 32bit リリース版    Release64 : Windows 64bit リリース版    Debug : Windows 32bit デバッグ版    Debug64 : Windows 64bit デバッグ版    なお.NETのDLL(LeXAdES3dnet.dll)はPATHを通すだけでは使えない場合があります。    利用する実行ファイル(例:Lx3Cmd.exe)と同じディレクトリに入れるかアセンブリの    解決が必要となる場合があります。 ※2 Linux環境でC++/Javaから使う場合には、lib_linux に対して LD_LIBRARY_PATH    環境変数をセットするか、lib_linux の中にあるファイルを標準のライブラリ    ディレクトリ(/usr/lib 等)にコピーをする必要がある。 ※3 JavaのAPIを利用しないなら不要 2)LE:XAdES:Lib V3をビルドするのに必要なフォルダ src : LE:PAdES:Libビルド用ソースフォルダ ※4 local : フリーライブラリ用フォルダ ※4 java : Java用のソースとビルド用フォルダ dotnet : .NET用のソースとビルド用フォルダ(DLLファイルはbin_winの下) clientV2 : クライアント署名Ver2用のフォルダ ※4 評価版には含まれない 3)その他 sample/LeXAdES3/cmd : Lx3Cmdによるサンプルソース ※5 sample/LeXAdES3/cpp : C++のAPI実装によるサンプルソース ※5 sample/LeXAdES3/java : JavaのAPI実装によるサンプルソース ※5 sample/LeXAdES3/cs : .NETのAPI実装によるC#用サンプルソース ※5 ※5 Windowsの64ビットを利用する場合にはバッチファイルに引数 "64" を指定する。 ■ コマンド利用サンプル sample/LeXAdES3/cmd の下に格納されています。 // Windows CmdAll.bat : 全サンプルの実行 ※6 CmdXadesTest.bat : 長期署名サンプル(署名+検証情報保存+タイムスタンプ)の実行バッチファイル ※6 CmdXadesPrefixTest.bat : プレフィックス付き長期署名サンプルの実行バッチファイル ※6 CmdDetachedIdTest.bat : Id参照の内部Detachedサンプルの実行バッチファイル ※6 CmdEnvelopedTest.bat : XMLへの署名埋め込みの実行バッチファイル ※6 CmdManifestTest.bat : 間接参照Manifest試験の実行バッチファイル ※6 CmdClientTest.bat : クライアント署名対応サンプルの実行バッチファイル ※6 CmdHsmTest.bat : HSM利用サンプルの実行バッチファイル(署名値はPKCS#12ファイルで計算) ※6 // Linux CmdAll.sh : 全サンプルの実行 CmdXadesTest.sh : 長期署名サンプル(署名+検証情報保存+タイムスタンプ)の実行シェルファイル CmdXadesPrefixTest.sh : プレフィックス付き長期署名サンプルの実行シェルファイル CmdDetachedIdTest.sh : Id参照の内部Detachedサンプルの実行シェルファイル CmdEnvelopedTest.sh : XMLへの署名埋め込みの実行シェルファイル CmdManifestTest.sh : 間接参照Manifest試験の実行シェルファイル CmdClientTest.sh : クライアント署名対応サンプルの実行シェルファイル CmdHsmTest.sh : HSM利用サンプルの実行シェルファイル(署名値はPKCS#12ファイルで計算) ※6 Windowsの64ビットを利用する場合にはバッチファイルに引数 "64" を指定する。 sample/LeXAdES3/LeTest.p12 : サンプル実行用の証明書(PKCS#12/パスワード"test") sample/LeXAdES3/store/ : サンプル用の独自証明書ストアディレクトリ ■ 更新履歴 Ver3.01.R1版 : 2024-08-19 ・OCSPの失効日時の取得に失敗して常に現在時刻での失効確認になっていた問題の修正。 ・OCSP優先時でも埋め込みか外部から提供されたCRLをまずチェックするように仕様変更。 ・CRL優先時でも埋め込みか外部から提供されたOCSPをまずチェックするように仕様変更。 ・PKCS#11の署名時に例外になる箇所があり修正した。 ・CRLへの署名証明書の認証パス構築に間違いがあったので修正した。  この問題はCRL用の署名証明書を別にした場合にのみ問題があった。 ・ECDSA(楕円曲線暗号)の署名と検証にベータ対応した。  ただしベータ版につきPKCS#11の署名は非対応、OCSP/CVSによる検証は動作未確認。  ECDSA対応に伴い以下APIを追加。  LpkCert::getKeyAlg() // 証明書の公開鍵方式をLPK_RSAかLPK_ECDSAで返す ・検証時のオプションフラグとしてCVS(証明書検証サーバー)向け機能を2つ追加。  LPKV_OPT_USECVS: CVSで検証済みの検証処理をおこなう ※1  LPKV_OPT_USECONSTR: 証明書の基本制約とCRL/ARLのチェックをおこなう ※2  ※1 LPKV_OPT_USECVSはCRLへの署名証明書の公開鍵が一致しない場合であっても    Issuerが一致すれば検証する等の処理をおこなう為のフラグ。CVSの場合には    CRLの認証パスまでは返さない為の措置であり通常は指定しないことを推奨。    CVS検証結果を使う時のみ利用する。  ※2 LPKV_OPT_USECONSTRはCVS等でCRL/ARLが混在して返される場合に正しいもの    を識別して利用する為のフラグ。CVS利用に限らずARLを正しく識別して利用    したい場合に利用する。 ・V1.3.2のArchiveTimeStampのみの場合の判定に失敗しており時ハッシュ値計算においての  Object要素の扱いに誤りがあった問題の修正。 ・検証フラグ XV_DATE_SIG_REVO と XV_DATE_TSA_REVO に未対応であった為に実装。  検証時のLx3Cmdの引数として -gpchk sign tsa を追加。 ・タイムスタンプトークン自体への署名の検証が抜けていたので修正した。 Ver3.00.R2a版 : 2024-03-04 ・タイムスタンプリクエストのNonceの1バイト目を0x04固定とした。  Nonceの1バイト目が 0x00 or 0xFF の場合に処理できない他社実装がある為。 Ver3.00.R2版 : 2024-01-22 ・SigningCertificateV2では無くSigningCertificateを指定して署名した場合に正しく情報を  出力していなかった問題の修正。 ・DataObjectFormat要素のEncodingとDescriptionを指定した署名をした場合に正しく情報を  出力していなかった問題の修正。 ・OpenSSLを3.1.1にしたことで一部のタイムスタンプの情報取得に失敗していた問題の修正。 ・Windows版の認証付きプロキシ環境でWinHTTP(デフォルト)を使った場合にエラーになり  通信できない問題の修正。現在Basic認証のみサポート。NTLM/PASSPORT/DIGEST等の認証が  必要な場合にはご連絡ください。 ・OpenSSLを3.1.1にしたことで属性証明書を含むタイムスタンプトークンの検証に失敗を  していた問題の修正。なおOpenSSLの修正となる。 ・証明書にV_ASN1_BMPSTRING(UTF-16BE)が使われていた場合に情報取得に失敗をする問題  の修正。 ・証明書にDN形式のCRLDPがある時にLPKV_NOUSE_LDAPを指定してもCRL取得しようとする  問題の修正。DN形式のCRLDPはGPKI証明書等で使われている。 ・OpenSSLの3.1.1完全移行に向けてOpenSSLレガシーAPIの利用停止。 ・LE:PKI:LibのV1.08.R3への更新。 ・LE:XAdES3:LibマニュアルとLE:PKI:Libマニュアルの更新。 Ver3.00.R1版 : 2023-08-30 ・最初のリリース版。 ========================================      Copyright (C) 2006-2024 LangEdge,Inc. All rights reserved.               https://www.langedge.jp/ ========================================