電子署名生成装置により、電子署名を実施する電子文書の情報、あるいは、電子署名を実施する電子文書を一定の長さに圧縮した情報、さらに、電子署名に利用する暗号アルゴリズムを含んだ、電子署名生成要求を生成し、前記電子署名生成要求を、ICカードリーダライタを介して接続されているICカードに送信して、前記ICカードから電子署名生成応答を受信し、電子署名生成処理を実施する、電子署名生成方法であって、前記電子署名生成装置は、ICカード管理情報と、前記ICカードの機能を補完するドライバを記憶する記憶部を具備し、前記ICカード管理情報に基づいて、電子署名を実施する文書を一定の長さに圧縮した情報を、電子署名生成装置で実施するか、前記ICカードで実施するか判定する処理と、前記判定結果に基づき、前記ICカードの機能を補完するドライバを利用して、前記電子署名を実施する文書を一定の長さに圧縮した情報を生成する処理と、を実施する、ことを特徴とする電子署名生成方法。前記ICカード管理情報は、前記ICカードに付属するICカードドライバに関する情報及び前記ICカードが実行可能な暗号アルゴリズムに関する情報である、ことを特徴とする請求項1に記載の電子署名生成方法。前記電子署名生成装置により、前記ICカード導入時に、前記ICカードリーダライタを介して、前記ICカードに付属するICカードドライバに関する情報及び前記ICカードが実行可能な暗号アルゴリズムを取得し、前記ICカード管理情報を作成する処理を実施する、ことを特徴とする請求項2に記載の電子署名生成方法。前記電子署名生成装置により、前記ICカードを導入してから一定期間経過後に、ネットワークを介してICカードドライバ提供装置に接続し、前記ICカードに付属するICカードドライバが更新されているか確認する処理を実施する、ことを特徴とする請求項3に記載の電子署名生成方法。前記電子署名生成装置により、ネットワークを介して前記ICカード提供装置に接続して、最新のICカードドライバを取得し、前記ICカードに付属するICカードドライバに関する情報及び前記ICカードが実行可能な暗号アルゴリズムを取得し、前記ICカードドライバ管理情報を更新する処理を実施する、ことを特徴とする請求項4に記載の電子署名生成方法。コンピュータに、請求項1乃至請求項5の何れか1項に記載の電子署名生成方法を実行させる電子署名生成プログラム。非特許文献2に記載されているように、暗号解読技術の進歩及び電子計算機能力の向上により、暗号アルゴリズムの安全性は、日々変化している。そこで、電子申請など、電子署名を求めるアプリケーションでは、暗号アルゴリズムの技術動向を確認し、安全性が担保された暗号アルゴリズムを電子署名の生成処理に採用する必要がある。さらに、非特許文献3に示すように、安全性の高い暗号アルゴリズムへ移行する際には、現行の暗号アルゴリズムと安全性の高い暗号アルゴリズムの両方を利用できる期間以下、移行期間が設けられている。アプリケーションやICカードなどは、移行期間中の各々の時期に暗号アルゴリズム移行を進めていくことになるため、アプリケーションやICカードによっては、暗号アルゴリズム移行の完了時期が一致しない場合がある。そのため、移行期間中に、アプリケーションがICカードによる電子署名の生成処理を要求する場合には、ICカードで実行可能な暗号アルゴリズムを考慮した上で、電子署名で利用する暗号アルゴリズムを決定する必要がある。しかしながら、非特許文献1においては、電子署名などの暗号演算を実行する際の、アプリケーションとICカード間でインターフェースが記載されているだけであり、ICカードで実行可能な暗号アルゴリズムを管理する方法については記載されていない。そのため、ユーザは、電子署名を求めるアプリケーションを利用する前に、ユーザの保持するICカードが、アプリケーションの求める暗号アルゴリズムに対応しているか確認する必要がある。さらに、定期的に、ユーザは安全性の高い暗号アルゴリズムに対応したICカードドライバが公開されているか確認し、更新されたICカードドライバを再度セットアップする必要がある。ユーザが上記に示すような確認作業を行った結果、アプリケーションが求める安全性の高い暗号アルゴリズムに、ICカードやICカードドライバが対応していない場合には、暗号アルゴリズム移行を完了したICカードやICカードドライバが発行されない限り、電子申請などのオンラインサービスを実施することができない。以上のように、暗号アルゴリズムの移行期間中に、ICカードを利用して、電子署名を実施する上でユーザの利便性が悪いという課題がある。本発明は上記事項に鑑みてなされたものであり、署名生成で利用する暗号方式を柔軟に拡張できる電子署名生成方法及び電子署名生成プログラムを提供することを目的とする。上記課題を解決するための一手段を説明する。本発明は、電子署名生成装置により、電子署名を実施する電子文書の情報、あるいは、電子署名を実施する電子文書を一定の長さに圧縮した情報、さらに、電子署名に利用する暗号アルゴリズムを含んだ、電子署名生成要求を生成し、前記電子署名生成要求を、ICカードリーダライタを介して接続されているICカードに送信して、前記ICカードから電子署名生成応答を受信し、電子署名生成処理を実施する、電子署名生成方法である。前記電子署名生成装置は、ICカード管理情報と、前記ICカードの機能を補完するドライバを記憶する記憶部を具備する。前記電子署名生成装置により、前記ICカード管理情報に基づいて、電子署名を実施する文書を一定の長さに圧縮した情報を、電子署名生成装置で実施するか、ICカードで実施するか判定する処理と、前記ICカードの機能を補完するドライバを利用して、前記電子署名を実施する文書を一定の長さに圧縮した情報を生成する処理とを実施する。本発明によれば、署名生成で利用する暗号方式を柔軟に拡張できる。以下に、本発明の実施形態について、図面を参照して、詳細に説明する。図1は、本発明の実施形態に係る電子署名生成システムの構成を示す図である。本実施形態では、電子署名を生成する複数の電子署名生成装置11a~電子署名生成装置11l電子署名生成装置11と総称すると、電子署名生成装置11からの命令により暗号演算を実行するICカード13a~ICカード13nICカード13と総称すると、電子署名生成装置11とICカード13の間の通信を制御するICカードリーダライタ12a~ICカードリードライタ12mICカードリードライタ12と総称する、ICカード13を実行するためのドライバを提供するICカードドライバ提供装置14と、イーサネット等のネットワーク15からなる。なお、電子署名生成装置11に複数のICカードリーダライタ12を接続し、複数のICカード13を使い分ける場合もある。次に、図2を用いて、電子署名生成装置11を説明する。電子署名生成装置11は、処理部20aと記憶部20bと、ユーザからの指示の受付を行う入出力部20cと、ネットワーク15を介して他装置と通信を行うための通信部20dと、を有する。処理部20aは、電子申請申告や電子契約を行う際に必要となる電子文書を生成する電子文書生成部21と、電子文書生成部21で生成した電子文書に対して電子署名を付与する電子署名生成部22と、電子署名生成装置11にインストールされているICカード13を管理し、電子署名生成部22とICカード13間の命令を制御するICカード管理部23と、ICカード13固有のICカードコマンドを生成するICカードアクセス部24を有する。記憶部20bは、ユーザが入出力20dを介して生成した電子文書を保持する電子文書保持部25と、ICカード13の機能を補完するICカード補完ドライバを保持するICカード補完ドライバ保持部26と、ICカード13に付属するICカードドライバを保持するICカードドライバ保持部27と、電子署名生成装置11で利用するICカード13を管理するための情報を保持する設定情報保持部28を有する。ICカード管理部23は、ユーザがICカード13のICカードドライバを電子署名生成装置11にインストールし、ICカードドライバ保持部27にICカードドライバが保存されたことを検知すると、ICカード13が実行可能な暗号アルゴリズムをリスト化し、暗号アルゴリズム対応リストを設定情報保持部28に保存する。また、ICカード13に付属するICカードドライバをインストールした日時を記憶し、予め設定した時間毎にインストールした日時と現在時刻とを比較する。その結果、一定以上の時間が経過している場合には、ICカードドライバ提供装置14にアクセスし、ICカード13に付属するICカードドライバが更新されているか否か確認する。さらに、ICカード管理部23は、電子署名生成部22から、ハッシュ値生成要求や、署名生成要求を受けると、ICカード13が、ハッシュ値生成要求や署名生成要求に含まれる暗号アルゴリズムで、ハッシュ演算や暗号演算を実行可能であるか確認する。ハッシュ値生成要求の暗号アルゴリズムに対応していない場合には、ICカード補完ドライバを利用して、ハッシュ演算を実行し、電子署名生成部22へハッシュ値を応答する。また、署名生成要求の暗号アルゴリズムに対応していない場合には、要求された署名生成処理をハッシュ演算と暗号演算に分解可能か確認する。分解可能な場合には、最初にハッシュ演算をICカード補完ドライバで実施し、次に、その実行結果に対して暗号演算を行うようにICカード13に命令して署名値を得る。そして、得られた署名値を電子署名生成部22へ応答する。なお、図2に示す電子署名生成装置11は、例えば、図3に示すような、CPU31と、メモリ32と、ハードディスク等の外部記憶装置33と、ネットワーク15を介して他装置と通信を行うための通信装置34と、キーボードやマウス等の入力装置35と、モニタやプリンタ等の出力装置36と、CD-ROM等の可搬性を有する記憶媒体38から情報を読み取る読取装置37と、これらの各装置間のデータ送受を行う内部通信線30とを備えた、一般的な電子計算機コンピュータ上に構築できる。そして、CPU31が外部記憶装置33からメモリ32上にロードされた所定のプログラムを実行することにより、上述の各処理部を実現できる。すなわち、通信部20dは、CPU31が通信装置34を利用することにより、入出力部20cは、CPU31が入力装置35や出力装置36や読取装置37を利用することにより、そして、記憶部20bは、CPU31がメモリ32や外部記憶装置33や可搬性を有する記憶媒体38を利用することにより実現される。また、処理部20aは、CPU31のプロセスとして実現される。上記所定のプログラムは、予め外部記憶装置33に格納されていても良いし、上記電子計算機が利用可能な記憶媒体38に格納されており、読み取り装置37を介して、必要に応じて読み出され、あるいは、上記電子計算機が利用可能な通信媒体であるネットワークまたはネットワーク上を伝搬する搬送波を利用する通信装置34と接続された他の装置から、必要に応じてダウンロードされて、外部記憶装置33に導入されるものであっても良い。次に図4を用いて、電子署名生成装置11の設定情報保持部28に記憶されている、ICカードドライバ管理リスト40を説明する。ICカードドライバ管理リスト40は、ICカード管理部23が、ICカードドライバの初期インストールや更新インストールを実行する際に編集される。また、ICカードドライバ管理リスト40は、ユーザにより、入出力部20cを介して、編集される。各々のICカードドライバについて、番号41の列に、ICカードドライバを識別する番号を、ICカード42の列に、ICカードを識別する名前を、ICカードドライバファイル名43の列に、ICカードドライバのフルパスを、バージョン44の列にICカードドラバのバージョンを記載する。また、ネットワーク15に接続されたICカードドライバ提供装置14がICカードドライバを公開している場合には、ダウンロードサイト45の列に、ダウンロードサイトのアドレスを記載する。さらに、インストール日時46の列に、ICカードドライバを初期インストールあるいは更新インストールした日時を記載する。次に図5を用いて、電子署名生成装置11の設定情報保持部28に記憶されている、暗号アルゴリズムリスト50を説明する。暗号アルゴリズムリスト50は、ICカードドライバの初期インストールや更新インストールを実行する際に、ICカード管理部23により、編集される。また、暗号アルゴリズムリスト50は、ユーザがICカードドライバ提供装置14などからICカード13が実行可能な暗号アルゴリズムリストを取得した際に、ユーザにより、入出力部20cを介して、編集される。暗号アルゴリズム51の列に、ハッシュ演算のアルゴリズムSHA-1、SHA-256、SHA-384、SHA-512や、暗号演算のアルゴリズムRSA、DSA、ECDSAや、ハッシュ演算と暗号演算を併せたアルゴリズムsha1withRSAEncryption、sha256withRSAEncryption、sha384withRSAEncryption、sha512withRSAEncryption、dsaWithSha1、ecdsaWithSha1を記載する。さらに、ICカード52の列に、各々のICカード13において、実行可能な暗号アルゴリズムの項目に○を記載する。次に、図6において、ユーザが、入出力部20cを介して、ICカード13に付属するICカードドライバを初期インストールや更新インストールする際の、ICカード管理部23の処理について示す。電子署名生成装置11のICカード管理部23は、ICカードドライバ保持部27に、新たなICカードドライバがインストールされたことを検知するS101と、ICカードドライバ管理リスト40を作成し、設定情報保持部28に保存するS102。次に、ICカード管理部23は、新たにインストールされたICカード13にアクセスし、ICカード13やICカード13に付属するICカードドライバが、実行可能な暗号アルゴリズムのリストを取得するS103。さらに、ICカード管理部23は、実行可能な暗号アルゴリズムを暗号アルゴリズムリスト50に記載し、設定情報保持部28に保存するS104。なお、S102やS104において、すでに検知したICカードドライバの情報が、ICカードドライバ管理リスト40や暗号アルゴリズムリスト50に記載されている場合は、記載内容を上書きする。次に、図7において、ICカード管理部23が、予め設定した時間毎にインストールしたICカードドライバの更新を確認する処理について示す。電子署名生成装置11のICカード管理部23は、ICカードドライバ管理リスト40の番号41の最初の行を読み込みS201、S201で選択した行に記載されているインストール日時46を取得するS202。ICカード管理部23は、S202で取得したインストール日時46と現在時刻を比較し、予め設定した更新間隔を経過していない場合にはS203でNo、S210へ進む。一方、予め設定した更新間隔を経過している場合にはS203でYes、ICカード管理部23は、ICカードドライバ管理リスト40において、S201で選択した番号41の行に、ダウンロードサイト45が記載されているかを確認する。ダウンロードサイト45が記載されていない場合にはS204でNo、ICカード管理部23は、入出力部20cを介して、ICカードドライバの更新を確認する旨のメッセージを電子署名生成装置11の出力装置36に表示しS205、S210へ進む。なお、ユーザがメッセージを確認し、ICカードドライバを更新すると、図6で示した処理を実施する。一方、ダウンロードサイト45が記載されている場合にはS204でYes、ICカード管理部23は、記載されているアドレスに基づいて、ICカードドライバ提供装置14にアクセスするS206。ICカードドライバ提供装置14で提供されているICカードドライバのバージョンと、S201で選択した番号41の行に記載されているバージョン44が一致する場合にはS207でNo、S210へ進む。一方、ICカードドライバ提供装置14で提供されているICカードドライバのバージョンが、S201で選択した番号41の行に記載されているバージョン44より新しい場合にはS207でYes、ICカード管理部23は、通信部20dを介して、ICカードドライバをダウンロードし、ICカードドライバ保持部27にインストールする。さらに、ICカード管理部23は、ICカードドライバ管理リスト40において、S201で選択した番号41の行に記載されているバージョン44とインストール日時46を更新するS208。次に、ICカード管理部23は、S208で更新インストールしたICカード13にアクセスし、ICカード13やICカード13に付属するICカードドライバが実行可能な暗号アルゴリズムのリストを取得し、暗号アルゴリズムリスト50において、S201で選択した番号41に該当するICカード52の列を更新するS209。次に、ICカードドライバ管理リスト40において、最後の行まで達しているか確認し、最後まで達している場合にはS210でYes、処理を終了する。一方、最後の行まで達していない場合にはS210でNo、S201に進み、ICカードドライバ管理リスト40の次の行を読み込む。次に、図8、図9、図10を用いて、電子署名生成装置11とICカード13において、ユーザが入出力部20cを介して選択した電子文書に対して、電子署名を生成する処理について説明する。最初に、図8において、電子署名生成部22とICカード管理部23が実行する処理について示す。電子署名生成部22は、ユーザが選択した電子文書を電子文書保持部25から取得するS301。署名生成処理をハッシュ演算と暗号演算に分けて実施しない場合にはS302でNo、S307へ進む。一方、電子署名生成部22が、署名生成処理をハッシュ演算と暗号演算に分けて実施する場合にはS302でYes、まず、ハッシュ演算を行うために、電子署名生成部22がICカード管理部23に対してハッシュ値生成要求を送信するS303。ハッシュ値生成要求には、電子文書のデータとハッシュ演算のための暗号アルゴリズムを含む。ICカード管理部23は、ハッシュ値生成要求を受信するとS304、ICカード管理部23あるいはICカード13でハッシュ演算処理を実施する。次に、ハッシュ演算処理の実行結果をもとに、ハッシュ値生成応答を送信するS305。電子署名生成部22は、ハッシュ値生成応答を受信するS306。なお、ハッシュ演算の詳細な処理については、図9で説明する。次に、電子署名値を生成するために、電子署名生成部22は、ICカード管理部23に対して署名生成要求を送信する。署名生成要求には、署名対象データと署名生成のための暗号アルゴリズムが含まれる。なお、署名生成処理をハッシュ演算と暗号演算に分けて実施する場合にはS302でYes場合には、署名対象のデータはS306で受信した電子文書のハッシュ値であり、また、指定する暗号アルゴリズムは、暗号演算の暗号アルゴリズムとなる。一方、署名生成処理をハッシュ演算と暗号演算に分けて実施しない場合にはS302でNo、署名対象のデータは電子文書全体であり、また、指定する暗号アルゴリズムは、ハッシュ演算と暗号演算を併せた暗号アルゴリズムとなる。ICカード管理部23は、署名生成要求を受信するとS308、署名生成処理を実施する。次に、署名生成処理の実行結果をもとに、署名生成応答を送信するS309。電子署名生成部22は、署名生成応答を受信するS310。なお、署名生成処理の詳細な処理については、図9で説明する。次に、図9において、電子署名生成装置11のICカード管理部23とICカードアクセス部24と、ICカード13が実行するハッシュ演算の処理について示す。最初に、ICカード管理部23は、S304で受信したハッシュ値生成要求に含まれる暗号アルゴリズムにICカードが対応しているか確認する。具体的には、暗号アルゴリズムリスト50において、暗号アルゴリズム51の中でハッシュ値生成要求に含まれる暗号アルゴリズムに該当する行と、ICカード52の中で署名生成処理を実行するICカードに該当する列を検索し、○となっているか確認するS401。S304で受信したハッシュ値生成要求に含まれる暗号アルゴリズムにICカードが対応している場合にはS401でYes、ICカードドライバ保持部27に保存されているICカードドライバを利用して、ICカード13固有のハッシュ値生成コマンドを作成しS402、ICカードアクセス部24へ送信するS403。ICカードアクセス部24は、ICカード管理部23からのハッシュ値生成コマンドを受信するS404。ハッシュ演算をICカードで実行する場合にはS405でYes、ICカードリーダライタ12を介して、ICカード13へハッシュ値生成を命令し、ICカード13でハッシュ演算を実行するS406。一方、ハッシュ演算をICカードで実行しない場合にはS405でNo、ICカードドライバを利用してハッシュ演算を実行するS407。ICカードアクセス部24は、ハッシュ演算結果であるハッシュ値をICカード管理部23へ送信するS408。ICカード管理部23は、ICカードアクセス部24からハッシュ値を受信するとS409、S411へ進む。一方、S304で受信したハッシュ値生成要求に含まれる暗号アルゴリズムにICカードが対応していない場合にはS401でNo、ICカード補完ドライバ保持部26に保存されているICカード補完ドライバを利用してハッシュ演算を実行するS410。ICカード管理部23は、S409で受信した、あるいは、S410で生成したハッシュ値を含むハッシュ値生成応答を作成するS411。なお、ICカードリーダライタ12は、ICカードアクセス部24とICカード13の通信を制御するS400。次に、図10において、電子署名生成装置11のICカード管理部23とICカードアクセス部24と、ICカード13が実行する署名生成処理について示す。ICカード管理部23は、S308で受信した署名生成要求に含まれる暗号アルゴリズムにICカードが対応しているか確認する。具体的には、暗号アルゴリズムリスト50において、暗号アルゴリズム51の中で署名生成要求に含まれる暗号アルゴリズムに該当する行と、ICカード52の中で署名生成処理を実行するICカードに該当する列を検索し、○となっているか確認するS501。S308で受信した署名生成要求に含まれる暗号アルゴリズムにICカードが対応していない場合にはS501でNo、ICカード管理部23は、前記暗号アルゴリズムにハッシュ演算と暗号演算を両方共含むかを確認するS502。ICカード管理部23では、秘密鍵利用した暗号演算を補完できないため、暗号演算のみの場合はS502でNoの場合は、エラー値を含んだ署名生成応答を作成するS503。一方、ハッシュ演算と暗号演算を両方共含む場合にはS502でYes、ICカード管理部23は、暗号アルゴリズムをハッシュ演算と暗号演算に分解する。分解した暗号演算の暗号アルゴリズムがICカード13に対応しているか、S501と同様に確認するS504。例えば、暗号アルゴリズムがsha256withRSAEncryptionであれば、SHA-256とRSAに分解し、RSAにICカードが対応しているか確認する。分解した暗号演算の暗号アルゴリズムにICカード13が対応していない場合にはS504でNo、ICカード管理部23は、S503へ進む。一方、分解した暗号演算の暗号アルゴリズムにICカード13が対応している場合にはS504でYes、ICカード管理部23は、ICカード補完ドライバを用いて、分解したハッシュ演算を実行するS505。さらに、ICカード管理部23は、S505で生成したハッシュ値を署名対象とし、S504で分解した暗号演算の暗号アルゴリズムによる署名コマンドを作成するS506。S308で受信した署名生成要求に含まれる暗号アルゴリズムにICカードが対応している場合にはS501でYes、ICカード管理部23は、ICカードドライバ保持部27に保存されているICカードドライバを利用して、S308に含まれる署名対象データを署名対象とし、S308に含まれる暗号アルゴリズムによる署名コマンドを作成するS507。ICカード管理部23は、S506あるいはS507で生成した署名コマンドをICカードアクセス部24へ送信するS508。ICカードアクセス部24は、ICカード管理部23からの署名コマンドを受信するとS509、ICカードリーダライタ12を介して、ICカード13へ署名コマンドを送信するS510。次に、ICカード13は、ICカードアクセス部24から署名コマンドを受信するとS511、署名コマンドに含まれる暗号アルゴリズムで署名生成を実行するS512。さらに、ICカード13は、ICカードリーダライタ12を介して、S512で生成した署名値をICカードアクセス部24へ送信するS513。次に、ICカードアクセス部24は、ICカード13から署名値を受信するとS514、ICカード管理部23へ送信するS515。ICカード管理部23は、ICカードアクセス部24から署名値を受信するとS516、署名値を含んだ署名生成応答を作成するS517。以上、本発明の実施形態について詳述したが、上記実施形態によれば、署名生成で利用する暗号方式を柔軟に拡張できる電子署名生成方法、これを実施する電子署名生成装置及び電子署名生成プログラムを提供することができる。また、本発明は上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。