携帯可能電子装置、ICカード、および携帯可能電子装置の制御方法
【課題】既存のコマンド体系のままであっても、エラーの詳細な内容などのコマンド処理結果の詳細な情報を追加情報として外部装置に通知できる携帯可能電子装置を提供する。
【解決手段】携帯可能電子装置は、実行部S13と、生成部S17と、記憶部S18と、第1の処理部S19、S16と、第2の処理部S20、S16とを有する。実行部は、外部装置から受信したコマンドに応じたコマンド処理を実行する。生成部は、実行部により実行したコマンド処理の結果に関連する追加情報を生成する。記憶部は、生成部により生成した追加情報を記憶する。第1の処理部は、記憶部により生成部が生成した追加情報を記憶した場合、実行部によるコマンド処理の結果とともに、追加情報が有ることを示す情報を含むレスポンスを外部装置へ送信する。第2の処理部は、外部装置から追加情報を要求するコマンドを受信した場合、記憶部に記憶している追加情報を外部装置へ送信する。
【解決手段】携帯可能電子装置は、実行部S13と、生成部S17と、記憶部S18と、第1の処理部S19、S16と、第2の処理部S20、S16とを有する。実行部は、外部装置から受信したコマンドに応じたコマンド処理を実行する。生成部は、実行部により実行したコマンド処理の結果に関連する追加情報を生成する。記憶部は、生成部により生成した追加情報を記憶する。第1の処理部は、記憶部により生成部が生成した追加情報を記憶した場合、実行部によるコマンド処理の結果とともに、追加情報が有ることを示す情報を含むレスポンスを外部装置へ送信する。第2の処理部は、外部装置から追加情報を要求するコマンドを受信した場合、記憶部に記憶している追加情報を外部装置へ送信する。
【発明の詳細な説明】
【技術分野】
【0001】
たとえば、携帯可能電子装置、ICカード、および携帯可能電子装置の制御方法に関する。
【背景技術】
【0002】
従来、携帯可能電子装置としてのICカードは、たとえば、メモリやCPUなどの機能を有したICモジュールがプラスチック板などで構成される筐体内に埋設されている。このようなICカードは、入退出管理、クレジットカード、携帯電話、電子商取引などの高いセキュリティ性が必要ないろいろな分野で使用されている。ICカードは、単体で動作することはなく、上位装置からのコマンドを受信し、受信したコマンドを解釈して処理を実行し、処理結果をレスポンスとして上位装置へ返信することによって動作する。つまり、ICカードは、通常、上位装置に対して完全なスレーブ状態であり、上位装置からのコマンドが無ければ動作することができない。このようなICカード処理システムでは、上位装置からICカードへ供給するコマンドのフォーマットとICカードから上位装置へ返信されるレスポンスのフォーマットとが厳格に決められる必要がある。たとえば、一般的なICカードに適用される国際標準規格としてのISO/IEC7816では、コマンドのフォーマットとレスポンスのフォーマットとの体系(コマンド体系)が規定されている。ICカードでは、上記のようなコマンド体系が予め規定されているため、レスポンスの自由度が少ないのが現状である。
【0003】
従来、ICカードを処理するICカード処理システムでは、実際の運用形態として、ICカードに対して簡単な処理を要求することがほとんどである。ICカードに要求する処理が簡単な処理のみであれば、ICカードから上位装置へのレスポンスに自由度がなくてもほとんど問題がない。これは、レスポンスに必ず含まれるステータスワードによって、簡単な情報をICカードから上位装置へ送信可能であるためである。たとえば、書込み系のコマンドに対するレスポンスに含まれるステータスワードでは、当該コマンドに対する処理結果として、「正常終了」、「ハードウェアが故障している」、「アクセス権限がない」、「対象のファイルが存在しない」などの情報を示すことが可能である。
【0004】
しかしながら、近年では、ICカード処理システムあるいはICカードに要求する処理が複雑化してきている。ICカード処理システムあるいはICカードに要求する処理が複雑化すると、コマンドに対する処理結果を示す情報が「ステータスワード」だけでは不十分なことが多くなる。エラーが発生した後の処理を効率的に実施するためには、エラー内容の詳細な情報を上位装置が把握することが必要となる。たとえば、書込み系のコマンドに対する処理に対するエラー時のレスポンスとしては、単に書込みエラーが発生したことだけでなく、「アドレスの○○○○○○○○番地が故障している」、もしくは、「論理チャネル○番が、既にファイルを占有しているために、書込みが実施できない」、といったエラー内容の詳細な情報を必要となる。しかしながら、現状のICカード処理システムでは、ステータスワード以外でエラーの詳細な内容を示す情報をICカードから上位装置へ提供することができない。
【0005】
また、書込み系コマンドに対しては、ステータスワードのみでレスポンスを返すコマンド体系が一般的である。すなわち、書込み系コマンドに対するレスポンスにステータスワード以外のエラーの詳細な内容を示す情報(レスポンスデータ)を追加するのは、書込み系コマンドに対するレスポンスのフォーマット自体を変更する必要がある。特定のコマンドに対するレスポンスのフォーマットを変更するには、コマンド体系全体を大きく変更しなければならなくなる。このようなコマンド体系全体の変更は、現実的ではないと考えられる。
【先行技術文献】
【非特許文献】
【0006】
【非特許文献1】ISO/IEC7816
【発明の概要】
【発明が解決しようとする課題】
【0007】
コマンド体系を変更することなく、コマンドに対する処理結果としての詳細な情報を送信可能な携帯可能電子装置、ICカード、および携帯可能電子装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
実施の形態としての携帯可能電子装置は、実行部と、生成部と、記憶部と、第1の処理部と、第2の処理部とを有する。実行部は、前記外部装置から受信したコマンドに応じたコマンド処理を実行する。生成部は、前記実行部により実行した前記コマンド処理の結果に関連する追加情報を生成する。記憶部は、前記生成部により生成した前記追加情報を記憶する。第1の処理部は、前記記憶部により前記生成部が生成した前記追加情報を記憶した場合、前記実行部によるコマンド処理の結果とともに、前記追加情報が有ることを示す情報を含むレスポンスを前記外部装置へ送信する。第2の処理部は、前記外部装置から前記追加情報を要求するコマンドを受信した場合、前記記憶部に記憶している前記追加情報を前記外部装置へ送信する。
【図面の簡単な説明】
【0009】
【図1】実施の形態に係る携帯可能電子装置としてのICカードのハードウエア構成を概略的に示すブロック図。
【図2】不揮発性メモリに記憶されるデータのファイル構成例を示す図。
【図3】ICカードにおけるソフトウエア構成を説明するための模式図。
【図4】ICカード処理システムに用いられるコマンド体系の例を示す図である。
【図5】ICカードにおけるコマンドに対する処理の流れを説明するためのフローチャートである。
【図6】書込み系のコマンド処理においてエラーが発生した場合の処理例を示すシーケンス図である。
【図7】複数の論理チャネルによる各ファイルへのアクセス状態の例を示す図である。
【図8】複数の追加情報が記憶可能な追加情報テーブルの構成例を示す図である。
【図9】ICカードにおけるコマンドに対する処理の流れを説明するためのフローチャートである。
【図10】最新の追加情報を読み出す場合の処理例を示すシーケンス図である。
【図11】別のコマンドを実行後に過去の追加情報を読み出す場合の処理例を示すシーケンス図である。
【図12】複数の追加情報が記憶可能な追加情報テーブルの構成例を示す図である。
【図13】ICカードにおけるコマンドに対する処理の流れを説明するためのフローチャートである。
【図14】最新の追加情報を読み出す場合の処理例を示すシーケンス図である。
【図15】別のコマンドを実行後に過去の追加情報を読み出す場合の処理例を示すシーケンス図である。
【発明を実施するための形態】
【0010】
以下、実施の形態について図面を参照して説明する。
【0011】
図1は、実施の形態に係る携帯可能電子装置としてのICカード1のハードウエア構成を概略的に示すものである。
ICカード1は、上位装置としてのICカード処理装置2からのコマンドに応じて処理を実行する。すなわち、ICカード1とICカード処理装置2とは、図1に示すようなICカード処理システムを構成している。
【0012】
図1に示すように、ICカード1は、CPU(セントラル・プロセッシング・ユニット)11、ROM(リード・オンリ・メモリ)12、RAM(ランダム・アクセス・メモリ)13、通信ユニット(UART)14、コプロセッサ(Co−Processor)15、および、不揮発性メモリ(NV(EEPROM))16などを有している。
【0013】
上記CPU11、ROM12、RAM13、通信ユニット14、コプロセッサ15および不揮発性メモリ16は、ICチップなどにより一体的に形成されたモジュールCaにより構成される。このモジュールCaは、当該ICカード1を形成する筐体(本体)Cの内部に埋設される。すなわち、上記ICカード1は、モジュールCaが埋設された筐体Cにより構成されている。
【0014】
また、上記ICカード1は、上位装置としての上記ICカード処理装置2から電力などの供給を受けた際、活性化し(動作可能な状態となり)、上記ICカード処理装置2からのコマンドに応じて動作するようになっている。ICカード処理装置2は、本ICカード1の通信方式に適合したリーダライタが接続されたパーソナルコンピュータなどにより構成される。たとえば、ICカード処理装置2は、図示しない制御部がアプリケーションプログラムを実行することにより、ICカード1に対してコマンドを送信したり、ICカード1からのレスポンスを受信したりする機能を実現している。
【0015】
上記CPU11は、当該ICカード1全体の制御およびデータ処理などを司るものである。上記CPU11は、制御プログラム等に基づいて動作することにより種々の処理を行う。上記ROM12は、制御用プログラムおよび制御データなどが予め格納されている不揮発性メモリである。上記RAM13は、ワーキングメモリとして機能する揮発性のメモリである。
【0016】
上記RAM13には、追加情報テーブル13a(13a´)が設けられる。上記追加情報テーブル13a(13a´)には、コマンドの処理結果などを示す追加情報(詳細情報)を複数件分保存する。上記追加情報テーブル13a(13a´)に保存される追加情報は、コマンドのレスポンスでは送信しきれない処理内容の詳細な内容を示す情報である。たとえば、コマンドの実行結果がエラーとなった場合、エラー内容の詳細を示す情報が追加情報(詳細情報)として追加情報テーブル13a(13a´)に保存される。上記追加情報テーブル13a(13a´)には、記憶する追加情報の最大件数が設定されるようにしても良い。なお、上記追加情報テーブル13a(13a´)がRAM13に設けられる場合、当該ICカード1の非活性化されると、追加情報テーブル13a(13a´)に記憶した追加情報がクリアされる。
【0017】
上記通信ユニット14は、通信手段として機能し、上位装置としてのICカード処理装置2とのデータ通信を制御するものである。また、上記通信ユニット14は、上記ICカード1が動作するための電源を受給する手段としても機能する。上記コプロセッサ15は、暗号化あるいは復号化などの演算の補助を行うものである。上記不揮発性メモリ16は、各種データやアプリケーション(アプリケーションプログラム)などを記憶する書き換え可能な不揮発性メモリである。なお、上記追加情報テーブル13aは、上記不揮発性メモリ16上に設けても良い。上記追加情報テーブル13aが不揮発性メモリ16に設けられる場合、当該ICカード1の非活性化されても、追加情報テーブル13aに記憶した追加情報は保持される。
【0018】
また、上記通信ユニット14は、ICカード1の通信方式に応じた構成を有している。たとえば、上記ICカード1の通信方式が接触式の通信方式である場合、上記通信ユニット14は、上位装置としてのICカード処理装置2のコンタクト部と物理的に接触するためのコンタクト部などにより構成される。この場合、ICカード1は、ICカード処理装置2と物理的に接触している上記通信ユニット14によりICカード処理装置2からの電源を受給する。つまり、上記ICカード1が接触式ICカードである場合、上記ICカード1は、通信ユニット14としてのコンタクト部を介してICカード処理装置2からの動作電源および動作クロックの供給を受けて活性化される。
【0019】
また、上記ICカード1の通信方式が非接触式(無線式)の通信方式である場合、上記通信ユニット14は、電波の送受信を行うアンテナおよび通信を制御する通信制御部等により構成される。この場合、上記ICカード1は、通信ユニット14により受信した電波から図示しない電源部により動作電源および動作クロックを生成するようになっている。つまり、上記ICカード1が非接触式ICカードである場合、上記ICカード1は、通信ユニット14としてのアンテナおよび通信制御部等を介してICカード処理装置2からの電波を受信し、その電波から図示しない電源部により動作電源および動作クロックを生成して活性化するようになっている。
【0020】
次に、上記不揮発性メモリ16に記憶されるデータの構成について説明する。
上記不揮発性メモリ16には、たとえば、ISO/IEC7816において定義されたファイル構造で各種のデータが記憶される。たとえば、上記不揮発性メモリ16には、複数階層構造(ツリー構造)で管理されるデータファイルとしてのファイル(EF:Elementary File)、および、データフォルダとしてのファイル(DF:Dedicated File)が記憶されている。
【0021】
図2は、上記不揮発性メモリ16に記憶されているファイル構造の例を示す図である。
図2に示す例では、最上位がマスタファイルとしてのファイル(MF:Master File)21である。上記MF21の配下には、フォルダとしてのDF(アプリケーションA)22A、および、フォルダとしてのDF(2アプリケーションB)22Bが設けられている。さらに、上記DF(アプリケーションA)22Aの配下には、データの格納などに使用されるEF(ファイルA1)23A1およびEF(ファイルA2)23A2が設けられている構成になっている。さらに、上記DF(アプリケーションB)22Bの配下には、データの格納などに使用されるEF(ファイルB1)23B1が設けられている構成になっている。このようなファイル構造では、各種のデータは、データファイルとしてのEFに記憶される。
【0022】
次に、上記ICカード1におけるソフトウエア構成について説明する。
上記ICカード1では、上述したように、CPU11がROM12あるいは不揮発性メモリ16に記憶されているプログラムを実行することにより、種々の処理を実現している。すなわち、上記ICカード1では、CPU11が実行するソフトウエアによってROM12、RAM13、不揮発性メモリ16、通信ユニット14あるいはコプロセッサ15などを制御することにより種々の処理を実現している。
【0023】
図3は、上記ICカード1におけるソフトウエア構成を模式的に示す図である。
上記ICカード1におけるソフトウエアは、ハードウエア(H/W)層31、OS(オペレーティングシステム)層32、および、アプリケーション層33から構成される。図3に示すように、上記ICカード1では、上記アプリケーション層33が最上位に位置し、上記OS層32が上記H/W層31の上位に位置するような構造となっている。
【0024】
上記H/W層31は、上記CPU11、ROM12、RAM13、通信ユニット14、コプロセッサ15、不揮発性メモリ16などのハードウエアから構成される。上記H/W層31の各ハードウエアは、上記OS層32からの処理要求に応じて処理を実行したり、実行した処理の結果を上記OS層32に送ったりするものである。
【0025】
上記OS層32は、当該ICカード1における基本的な制御を実行するためのプログラムとしてのカードOS(オペレーティングシステム)41を有する。なお、上記OS層32は、環境設定モジュール、アプリケーションインタフェース群などのモジュールなどを有するようにしても良い。上記カードOS41としてのソフトウエアは、当該ICカードの基本的な動作を司るプログラムであり、上記H/W層31の各ハードウエアを制御したり、各ハードウエアからの処理結果などの情報を受けて動作したりするプログラムである。上記カードOS41としてのソフトウエアは、ICカード内における不揮発性のメモリに予め記憶されているものであり、たとえば、上記ROM12などに記憶される。
【0026】
また、上記カードOS41は、当該ICカード1の基本動作を実現するためのH/W層の各ハードウエアを制御する基本機能に加えて、ロジカルチャネル管理機能42を有している。ロジカルチャネルとは、上記不揮発性メモリ16内の各ファイルあるいは各アプリケーションに対してアクセスするための論理的なチャネルを管理するものである。たとえば、複数の通信方式で通信を行っている場合、各通信方式ごとにロジカルチャネルが割り当てられる。このようなロジカルチャネルによる制御を行うことにより、ICカード1では、各チャネルごとに複数系列のコマンド群を処理することができる。たとえば、アプリケーションAでは、第1のチャネルでコマンド処理を実行し、アプリケーションBでは、第2のチャネルでコマンド処理を実行するという処理が可能となっている。
【0027】
上記ロジカルチャネル管理機能42は、上記のようなロジカルチャネルを管理する機能である。すなわち、上記ロジカルチャネル管理機能42は、ロジカルチャネルのオープン及びクローズを制御したり、アプリケーションプログラムに対してロジカルチャネルを割り当てたり、チャネル管理テーブル42aを用いてファイルあるいはアプリケーションに対する各ロジカルチャネルのアクセス順番を管理したりするものである。また、上記チャネル管理テーブル42aに記憶される情報は、各ロジカルチャネルでカレントとして設定するファイルあるいはアプリケーションプログラムなどの変更に応じて、テーブル更新機能42bにより更新される。
【0028】
上記アプリケーション層33は、各種の処理を実現するためのプログラムとしての各種のアプリケーション(アプリケーションA、アプリケーションB、…)から構成される。上記各アプリケーションとしてのソフトウエアは、当該ICカード1の運用形態に応じた各種の処理を実現するためのプログラムおよびデータなどにより構成される。上記アプリケーションとしてのソフトウエアは、予めICカード1内の不揮発性のメモリ16に記憶されたり、適宜外部装置からダウンロードしてICカード1内の不揮発性メモリ16に記憶されたりするものである。
すなわち、上記H/W層31の各ハードウエアは、上記OS層32のカードOS41により制御される。上記OS層32のカードOS41は、上記アプリケーション層33の各アプリケーションから要求に応じて各ハードウエアの動作を制御する。また、上記H/W層31の各ハードウエアによる処理結果等は、上記OS層32のカードOS41を介してアプリケーションへ供給される。たとえば、外部装置からのコマンドは、上記H/W層31のハードウエアにより受信され、上記OS層32のカードOS41へ供給される。上記カードOS41では、上記H/W層31で受信したコマンドを選択的にアプリケーション層33における特定のアプリケーションへ供給する。
【0029】
たとえば、上記H/W層31で外部装置からアプリケーション選択コマンドを受信した場合、上記カードOS41は、上記アプリケーション層33から当該アプリケーション選択コマンドで指定されたアプリケーションをカレント状態とする。この状態において上記H/W層31で外部装置からコマンドを受信した場合、上記カードOS41は、当該コマンドをカレント状態のアプリケーションへ供給する。これにより、アプリケーション層33の各アプリケーションは、上記OS層32のカードOS41から供給されるコマンドに応じた処理を実行する。すなわち、上記カードOS41は、カレント状態のアプリケーション(以下、カレントアプリケーションとも称する)を指定し、カレントアプリケーションに対してコマンドを供給するようになっている。
【0030】
次に、ICカード処理システムに用いられるコマンド体系について説明する。
上述したように、ICカード1は、ICカード処理装置2からのコマンドに応じて処理を実行し、その処理結果をレスポンスとしてICカード処理装置2へ送信する。このようなシステムでは、コマンドとレスポンスとによる動作を実現するためのコマンド体系を予め規定しておく必要がある。つまり、ICカード処理システムでは、事前に定められているコマンド体系で実現される。
【0031】
図4は、ICカード処理システムに用いられるコマンド体系の例を示す図である。図4に示すコマンド体系は、ICカードの国際標準規格であるISO/IEC7816で規定されているものを想定している。図4に示す例では、コマンド体系として、コマンドのフォーマットに対応するICカードが出力するレスポンスのフォーマットが予め規定されている。図4に示す例では、4通りのパターンが規定されている。
【0032】
図4に示すCASE1では、コマンドヘッダのみからなるコマンドに対して、ICカードがステータスワードのみからなるレスポンスを返すように規定されている。なお、コマンドヘッダは、コマンドの種類を示す情報と処理のパラメータとからなる。また、ステータスワードは、所定のコード情報(番号)により処理結果を示す。このCASE1に該当するコマンドは、データを供給する必要がない処理をICカードに要求し、ICカードから処理が成功したか否かのみを受信するためのコマンドである。
【0033】
図4に示すCASE2は、コマンドヘッダとレスポンスデータ長(Le)とからなるコマンドに対して、ICカードがレスポンスデータとステータスワードとからなるレスポンスを返すように規定されている。なお、レスポンスデータ長は、コマンドに対するレスポンスにおいてICカードが送信するレスポンスデータのサイズを指定する情報である。このCASE2に該当するコマンドは、データの供給無しで、かつ、処理結果としてのデータが得られる処理をICカードに要求し、ICカードから処理結果としてのデータ(レスポンスデータ)を受信するためのコマンドである。たとえば、ICカードに対してメモリに記憶されているデータの読出しを要求するコマンドは、CASE2のコマンドに含まれる。
【0034】
図4に示すCASE3では、コマンドヘッダ、データ長(Lc)、および、コマンドデータからなるコマンドに対して、ICカードがステータスワードのみからなるレスポンスを返すように規定されている。なお、コマンドデータは、データ長で指定されるサイズのデータである。このCASE3に該当するコマンドは、供給するコマンドデータを用いた処理の実行をICカードに要求し、ICカードから処理が成功したか否かを示すステータスワードを受信するためのコマンドである。たとえば、ICカードに対してコマンドデータの書込みを要求するコマンドは、CASE3のコマンドに含まれる。
【0035】
図4に示すCASE4では、コマンドヘッダ、データ長(Lc)、コマンドデータ、および、レスポンスデータ長(Le)からなるコマンドに対して、ICカードがレスポンスデータとステータスワードとからなるレスポンスを返すように規定されている。このCASE4に該当するコマンドは、コマンドデータを用いた処理をICカードに要求し、ICカードから処理結果としてのレスポンスデータを受信するためのコマンドである。
【0036】
次に、コマンドに対応する処理でエラーが発生した場合のICカードにおける処理について説明する。
【0037】
以下、本実施の形態では、ICカード1は、図4に示すようなISOで規定されたコマンド体系で動作するものであることを前提とする。図4に示すようなコマンド体系では、レスポンスデータ長が設定されていないコマンドに対しては、ステータスワード以外のレスポンスデータを送信することができない。ステータスワードは、データサイズ(たとえば、2バイト)が規定されており所定のコード情報によってコマンド処理の結果を通知するものである。
【0038】
すなわち、上述したCASE1或いはCASE3のコマンドに対するレスポンスとして許容されるステータスワードだけでは、各コマンドに対する処理において発生した種々の状況を詳細に通知することができないことがある。たとえば、CASE3の書込みコマンドに対する処理において書込みエラーが発生した場合、ICカード1は、当該書込みコマンドに対するレスポンスとして、書込みエラーが発生したことをステータスワードのみを通知することが許容されているが、書込みエラーの詳細な内容(エラーの原因、エラーが発生したメモリアドレス等)を通知することはできない。
【0039】
また、CASE2或いはCASE4のコマンドであっても、コマンドに対するレスポンスとして送信可能なレスポンスデータは、規定のデータでなければならない。これは、システム全体としての処理の整合性を保つために、コマンドで指定されたデータ以外のデータをレスポンスデータとすることができないことを意味している。たとえば、CASE2の読出しコマンドに対してレスポンスにおけるレスポンスデータは、指定された読出しデータでなければならず、それ以外のデータをレスポンスデータすることはできない。
【0040】
上記のようなコマンド体系は、予め規定されているものであるから遵守しなければならない。本ICカード1では、上記のようなコマンド体系に従って動作しつつ、エラーの詳細な内容などの情報を上位装置へ提供できるものである。すなわち、ICカード1は、上位装置からのコマンドに対する処理においてエラーが発生した場合、エラーの詳細な内容を示す追加情報を生成してメモリに保持する機能を有する。さらに、ICカード1は、メモリに保持した追加情報を上位装置からの要求(コマンド)に応じて送信する。
【0041】
次に、上記のような動作を実現するICカード1におけるコマンド処理の例について説明する。
まず、第1の処理例について説明する。
図5は、ICカード1におけるコマンドに対する第1の処理例の流れを説明するためのフローチャートである。
電源供給を受けているICカード1では、待機状態において、通信ユニット14によりICカード処理装置2からのコマンドが受信可能となっている(ステップS11)。この状態においてICカード処理装置2からのコマンドを上記通信ユニット14が受信した場合(ステップS11、YES)、ICカード1のCPU11は、受信したコマンドが追加情報を要求するコマンドであるか否かを判断する(ステップS12)。追加情報を要求するコマンドは、予め規定される特殊コマンドである。たとえば、追加情報有りを含むステータスワードをセットしたレスポンスを送信した直後に受信するゲットレスポンスコマンド(ISOで規定されているCASE2のGET RESPONSE Command)を追加情報を要求する特殊コマンドとして規定しても良い。
【0042】
上記判断により受信したコマンドが追加情報を要求するコマンドでないと判断した場合(ステップS12、NO)、CPU11は、当該受信したコマンドに応じた処理(コマンド処理)を実行する(ステップS13)。CPU11は、当該コマンドのコマンドヘッダで指定されている処理内容を判別することによりコマンド処理を実行する。
このコマンド処理が正常に成功した場合(ステップS14、NO)、CPU11は、ステータスワード(SW)に処理成功を示す情報(コード情報)をセットしたレスポンスを生成し(ステップS15)、生成したレスポンスをICカード処理装置2へ送信する(ステップS16)。
【0043】
また、コマンド処理においてエラーが発生した場合(ステップS14、YES)、CPU11は、エラーの詳細な内容を示す追加情報を生成する(ステップS17)。エラーの詳細な内容としては、エラーの原因、あるいは、エラーの具体的な内容(エラーが発生した処理工程)などが考えられる。たとえば、書込み系のコマンド処理におけるエラーでは、エラー原因としては、アクセス権無し、メモリ異常、あるいは、動作電圧低下などが考えられ、エラーの具体的な内容としては、書込みエラーとなったメモリアドレスを示す情報などが考えられる。
【0044】
上記のような追加情報を生成すると、CPU11は、生成した追加情報をRAM13或いは不揮発性メモリ16に保持する(ステップ18)。追加情報をRAM13あるいは不揮発性メモリ16に保持すると、CPU11は、ステータスワード(SW)に、エラーが発生したことを示す情報(コード情報)と追加情報有りを示す情報とをセットしたレスポンスを生成する(ステップS19)。ステータスワードをセットしたレスポンスを生成すると、CPU11は、生成したレスポンスをICカード処理装置2へ送信する(ステップS16)。
なお、ICカード1のCPU11は、追加情報有りのステータスワードを送信したことを示す情報(あるいは追加情報を保持していることを示す情報)をRAM13等に保持しておくようにしても良い。たとえば、追加情報有りのレスポンスを送信した直後の特定のコマンド(例えばゲットレスポンスコマンド)を追加情報の読出しを要求する特殊コマンドとする場合、追加情報を保持していることを示す情報は、当該レスポンスを送信した後、次のコマンドを受信するまで保持するようにすれば良い。
【0045】
また、上記ステップS12の判断により受信したコマンドが追加情報を要求するコマンドであると判断した場合(ステップS12、YES)、CPU11は、RAM13あるいは不揮発性メモリ16から追加情報を読み出す(ステップS20)。追加情報を読み出すと、CPU11は、読み出した追加情報をレスポンスデータにセットし(ステップS21)、ステータスワードに処理成功を示す情報をセットしたレスポンスを生成する(ステップS13)。追加情報をレスポンスデータにセットしたレスポンスを生成すると、CPU11は、生成したレスポンスを追加情報を要求するコマンドに対するレスポンスとしてICカード処理装置2へ送信する(ステップS16)。
【0046】
なお、上記した第1の処理例では、コマンド処理においてエラーが発生した場合にエラーの詳細な内容を示す追加情報を生成するものとしたが、これに限らず、コマンド処理が成功した場合であっても、コマンド処理の詳細な結果を示す追加情報を生成するようにしても良い。すなわち、コマンド処理が成功した場合であっても処理結果としてステータスワードだけでは通知しきれない情報がある場合には、追加情報してメモリに保持しておき、当該コマンドに対するレスポンスで追加情報があることを通知するようにしても良い。
【0047】
上記のように、第1の処理例のICカード1では、上位装置から受信したコマンドに対する処理においてエラーが発生した場合、エラーの詳細な内容を示す追加情報を生成してメモリに保持しておき、当該コマンドに対するレスポンスでは追加情報があることを通知する。このようなレスポンスに対して上位装置から追加情報が要求するコマンドを受信した場合、ICカード1は、保持した追加情報をレスポンスデータにセットしたレスポンスを送信する。
【0048】
言い換えれば、第1の処理例のICカード1は、ICカード処理装置2からのコマンドの実行結果としてステータスワードだけでは示せない詳細情報(追加情報)がある場合、当該コマンドに対するレスポンスのステータスワードにおいて上記詳細情報が存在することを示し、当該レスポンス後に上記詳細情報の読出しを要求するコマンドを受信した場合、上記詳細情報をICカード処理装置2へ送信する。
【0049】
上記のような第1の処理例のICカード1によれば、既存のコマンド体系のままであっても、エラーの詳細な内容などのコマンド処理結果の詳細情報(追加情報)を上位装置に通知する機能を提供できる。この結果として、上位装置では、詳細情報(追加情報)で示される情報に基づいて効率的な処理をICカードに実行させることができる。
【0050】
次に、ICカード処理システム全体におけるコマンド処理の例について説明する。
ここでは、書込み系のコマンドに対する処理においてエラーが発生した場合の処理について説明するものとする。また、書込み処理におけるエラーの原因としては、アクセス権無し、メモリ異常、あるいは、動作電圧低下などが考えられる。
【0051】
たとえば、書込み系のコマンドを受信した場合に、既に他の論理チャネルが書込み対象とするファイルを占有している状態であれば、アクセス権無しのため、書込みエラーとなるものとする。このような場合、ICカード1は、書込みが出来なかった理由(他の論理チャネルによるアクセス対象ファイルの占有)を追加情報として生成して保持しておく。この状態で、ICカード1は、「書込み失敗」と共に「追加情報あり」を示すステータスワードをセットしたレスポンスを送信することにより受信したコマンドに対する処理を終了する。その後、追加情報を要求する特殊コマンドを受信した場合、ICカード1は、書込みが出来なかった理由を示す追加情報を送信する。
【0052】
図6は、第1の処理例としての書込み系のコマンド処理においてエラーが発生した場合のシーケンス図である。
以下の説明では、ICカード1は、図2に示すように、アプリケーションA、B、ファイル(EF)A1,A2,B1が存在することを想定する。さらに、ICカード1は、ロジカルチャネル管理機能42により管理する複数の論理チャネルでのアクセス状態が図7に示すような状態である場合を想定する。図7に示す例では、論理チャネル(Ch.0)がファイルA1をカレントに設定している状態を示している。
【0053】
上位装置としてのICカード処理装置2は、ICカード1内のファイルA1にデータを書き込むための準備として、論理チャネル(Ch.1)の開設とアプリケーションAの選択を要求するコマンドをICカード1に送信する(ステップS31)。これに対して、ICカード1は、論理チャネル(Ch.1)を開設してアプリケーションAを選択するコマンド処理を実行する。論理チャネル(Ch.1)の開設とアプリケーションAの選択とが成功すると、ICカード1は、当該コマンド処理が成功したことを示すステータスワードをセットしたレスポンスをICカード処理装置2へ送信する(ステップS32)。
【0054】
論理チャネル(Ch.1)の開設とアプリケーションAの選択を要求するコマンドに対する処理が成功した旨のレスポンスを受けると、ICカード処理装置2は、ファイルA1の選択を要求するコマンドをICカード1に対して送信する(ステップS33)。これに対して、ICカード1は、論理チャネル(Ch.1)におけるカレントファイルをファイルA1に設定するコマンド処理を実行する。論理チャネル(Ch.1)におけるカレントファイルをファイルA1に設定する処理が成功すると、ICカード1は、コマンド処理が成功したことを示すステータスワードをセットしたレスポンスをICカード処理装置2へ送信する(ステップS34)。
【0055】
ファイルA1の選択を要求するコマンドに対する処理が成功した旨のレスポンスを受けると、ICカード処理装置2は、ファイルA1に対するデータの書込みを要求する書込みコマンドをICカード1に対して送信する(ステップS35)。この書込みコマンドは、CASE3のファーマットで構成される。これに対して、ICカード1は、書込みコマンドに応じた書込み処理を実行する(ステップS36)。
【0056】
このような書込みコマンドに対する処理において、まず、ICカード1のCPU11は、カレントファイルに設定されているファイルA1へのアクセス権限の確認する(ステップS36−1)。当該書込みコマンドに対する処理は、論理チャネルが「Ch.1」でカレントファイルとしてのファイルA1にデータを書込む処理である。ここでは、ICカード1は、図7に示すように、論理チャネル「Ch.0」でファイルA1をカレントファイルに設定している状態である。このため、ICカード1のCPU11は、論理チャネル「Ch.1」でのファイルA1に対する書込み権限がないものと判断する(ステップS36−2)。このような書込み権限無しの判断に基づいて、ICカード1のCPU11は、当該コマンド処理(データの書込み処理)を実施せずに中止する(ステップS36−3)。
【0057】
受信した書込みコマンドに対応するコマンド処理を中止すると、ICカード1のCPU11は、当該コマンド処理を中止した詳細な理由を示す追加情報を作成する(ステップS36−4)。ここでは、コマンド処理を中止した理由(エラーの詳細な内容)は、論理チャネル「Ch.0」が既にファイルA1にアクセス中であることである。このため、ICカード1のCPU11は、コマンド処理を中止の理由(例えば、「ファイルA1に対する当該論理チャネル(Ch.1)のアクセス優先権が2番目」、「ファイルA1には論理チャネル(Ch.0)がアクセス中」など)を示す追加情報を作成する。このように作成した追加情報は、CPU11によりRAM13あるいは不揮発性メモリ16に保持される。
【0058】
上記追加情報を保持した状態において、ICカード1のCPU11は、「書込み異常」となったことを示すコード情報とともに、「追加情報あり」を示すステータスワードをセットしたレスポンスを作成する(ステップS36−5)。「書込み異常」と「追加情報有り」とを示すステータスワードをセットしたレスポンスを作成すると、ICカード1のCPU11は、作成したレスポンスをICカード処理装置2へ送信し(ステップS37)、当該書込みコマンドに対する処理を終了する。
【0059】
ICカード処理装置2は、追加情報有りを含むレスポンスを受信すると、追加情報が必要であるか否かを判断する。追加情報の要否は、予め設定しておくようにしても良いし、ICカード処理装置2のオペレータが適宜選択するようにしても良い。ICカード処理装置2は、追加情報の要否の判断結果に基づいて当該ICカード1に次に供給するコマンドを決定する。
【0060】
たとえば、上記追加情報が必要であると判断した場合、ICカード処理装置2は、次のコマンドとして、追加情報を取得するためのCASE2の特殊コマンド(例えば、CASE2のGET RESPONSEコマンド)を送信する(ステップS38)。これに対して、ICカード1は、追加情報を読出すコマンド処理を実行する(ステップS39)。この場合、特殊コマンドは、CASE2であるため、ICカード1のCPU11は、ステータスワードだけでなくレスポンスデータを返信することが可能である。
【0061】
すなわち、追加情報を要求する特殊コマンドに対する処理として、ICカード1のCPU11は、RAM13あるいは不揮発性メモリ16に保持している追加情報を読み出し、読み出した追加情報をレスポンスデータにセットしたレスポンスとしてICカード処理装置2へ送信する。レスポンスデータとして追加情報を送信した場合、ICカード1のCPU11は、RAM13あるいは不揮発性メモリ16に保持している追加情報を削除する。なお、追加情報は削除せずに保持しておくようにしても良い。
【0062】
また、上記追加情報が不要であると判断した場合、ICカード処理装置2は、追加情報を取得するための特殊コマンドを送信する必要はない。この場合、ICカード処理装置2は、追加情報を取得するための特殊コマンド以外の通常のコマンドを送信しても良い。なお、ICカード1では、追加情報有りのステータスワードを含むレスポンスを送信した後に追加情報を取得するための特殊コマンド以外の通常のコマンドを受信した場合、受信したコマンドに応じたコマンド処理を実行する。このような通常のコマンドを実行した場合、ICカード1は、RAM13あるいは不揮発性メモリ16に保持している追加情報を削除する。なお、この場合も、追加情報は削除せずに保持しておくようにしても良い。
【0063】
上記のように、本第1の処理例のICカードは、書込みコマンドで指定された書込み処理において書込みエラーが発生した場合、書込みエラーとなった原因あるいは書込みエラーとなったメモリアドレスなどを示す情報を追加情報として保持しておき、上記書込みコマンドに対するレスポンスとして「正常終了しなかったこと(書込みエラーとなったこと)」と「追加情報があること」とを示すステータスワードを送信する。その後、ICカードは、上位装置からの追加情報を要求する特殊コマンドを受信した場合に、保持している上記追加情報を送信する。
【0064】
たとえば、書込みコマンドで指定された書込み対象とするファイルが別のチャネルでアクセスされているためにデータの書込みが出来ない場合、本ICカードは、別のチャネルが書込み対象のファイルにアクセスしているという情報を追加情報として保持しておき、上記書込みコマンドに対するレスポンスとして「正常終了しなかったこと」と「追加情報があること」とを示すステータスワードを送信する。その後、ICカードは、上位装置から追加情報を要求する特殊コマンドを受信した場合、別のチャネルが書込み対象のファイルにアクセスしている旨の追加情報を送信する。
【0065】
また、書込みコマンドで指定された書込み処理においてメモリ異常によりデータの書込みが出来ない場合、第1の処理例のICカードは、メモリ異常が発生したメモリアドレスを示す情報を追加情報として保持しておき、上記書込みコマンドに対するレスポンスとして「正常終了しなかったこと」と「追加情報があること」とを示すステータスワードを送信する。その後、ICカードは、上位装置からの追加情報を要求する特殊コマンドを受信した場合、メモリ異常が発生したメモリアドレスを示す追加情報を送信する。
【0066】
上記のような第1の処理例によれば、ICカードは、既存のコマンド体系のままであっても、コマンドに対するレスポンスで送信しきれない追加情報を上位装置へ提供することが可能となる。この結果として、上位装置では、追加情報から得られる書込みエラーの詳細な内容に応じて効率的な処理をICカードに実行させることができる。
【0067】
次に、ICカード1におけるコマンド処理の第2の処理例について説明する。
第2の処理例においても、ICカード1は、予め規定されている上記したコマンド体系を遵守するものとする。本第2の処理例において、ICカード1は、上記のようなコマンド体系に従って動作しつつ、エラーの詳細な内容などの情報を上位装置へ提供する。たとえば、ICカード1は、上位装置から与えられたコマンドの実行処理においてエラーが発生した場合、エラー内容の詳細な情報を示す追加情報を生成し、生成した追加情報を追加情報テーブル13aに保存する。さらに、ICカード1は、追加情報テーブル13aに保存した追加情報を上位装置からの要求に応じて送信する。
【0068】
次に、第2の処理例に係る追加情報テーブル13aの構成について説明する。
図8は、第2の処理例に係る追加情報テーブル13aの構成例を示す図である。
上記追加情報テーブル13aには、複数件の追加情報(詳細情報)が保存可能である。上記追加情報テーブル13aに追加情報として保存可能な件数(最大件数)は、予め設定可能である。たとえば、上記追加情報テーブル13aに保存可能な追加情報の最大件数は、当該ICカード1の発行処理時に設定される。
【0069】
上記追加情報テーブル13aには、作成順番、処理コマンド情報、および追加情報などを対応づけて記憶する。追加情報は、実行した処理コマンドの実行結果に関連する詳細な情報である。ここで、追加情報としては、実行した処理コマンドのレスポンスデータでは伝えきれない情報を想定する。たとえば、実行した処理コマンドの実行結果がエラーとなった場合、ICカード1は、エラー内容の詳細を示す情報を追加情報として生成する。図8に示す例では、書込みコマンドに対する追加情報として、書込み対象のファイルにはチャネル「Ch.0」でアクセス中であったため、書込みがエラーとなった旨が記憶されている。追加情報は、処理結果としてステータスワードだけでは通知しきれない情報であり、エラー内容の詳細を示す情報に限らない。たとえば、コマンドの処理が成功した場合であっても、ICカード1では、当該コマンドの実行結果に関連する情報を追加情報として生成するようにしても良い。
【0070】
また、作成順番は、対応する追加情報を作成した順番(保存した順番)を示す情報である。複数の追加情報を追加情報テーブル13aに保存する場合、各追加情報には、新しい順に作成順番が付与される。このため、追加情報テーブル13aに追加情報が保存されるごとに、各追加情報の作成順番が更新される。
【0071】
処理コマンド情報は、追加情報が発生した処理コマンドの内容を示す情報である。処理コマンド情報は、実行結果に関連する追加情報が生成された処理コマンド自体を示す情報である。たとえば、処理コマンド情報としては、実際に受信したコマンドの一部が記憶される。図8に示す例では、処理コマンド情報として、WRITE COMMANDの一部のデータ(00h D0h 00h 00h 10h 11h 12h)が記憶されている。これにより、上位装置としてのICカード処理装置2は、後述する追加情報の読出を要求する特殊コマンドにおいて、特定の追加情報を処理コマンド情報により指定することが可能となる。
【0072】
次に、上記ICカード1におけるコマンド処理の第2の処理例の流れを説明する。
図9は、ICカード1におけるコマンドに対する第2の処理例の流れを説明するためのフローチャートである。
電源供給を受けているICカード1では、待機状態において、通信ユニット14によりICカード処理装置2からのコマンドが受信可能となっている(ステップS111)。この状態においてICカード処理装置2からのコマンドを上記通信ユニット14が受信した場合(ステップS111、YES)、ICカード1のCPU11は、受信したコマンドが追加情報を要求するコマンドであるか否かを判断する(ステップS112)。追加情報の読出しを要求するコマンドは、予め規定される特殊コマンドであるものとする。この場合、CPU11は、受信コマンドが特殊コマンドか否かを判断する。
【0073】
なお、追加情報の読出しを要求する特殊コマンドとしては、後述する図7或は図8に示す例のように、ゲットレスポンスコマンド(ISOで規定されているCASE2のGET RESPONSE Command)を用いることができる。このような特殊コマンドでは、読出対象とする追加情報、あるいは、読出し後の追加情報に対する処理内容(削除するか否か)がパラメータなどにより指定可能となっている。
【0074】
上記判断により受信したコマンドが追加情報の読出しを要求する特殊コマンドでないと判断した場合(ステップS112、NO)、CPU11は、当該受信したコマンド(処理コマンド)に応じた処理を実行する(ステップS113)。CPU11は、コマンドヘッダで指定される処理内容を判別することにより当該処理コマンドで要求された処理を実行する。
当該処理コマンドの実行結果として追加情報(詳細情報)が無い場合(ステップS114、NO)、CPU11は、ステータスワード(SW)に処理結果を示す情報(コード情報)をセットしたレスポンスデータを生成し(ステップS115)、生成したレスポンスデータをICカード処理装置2へ送信する(ステップS116)。たとえば、書込みコマンドに対して正常に処理が完了した場合、CPU11は、処理成功を示す情報(コード情報)をセットしたレスポンスデータを生成してICカード処理装置2へ送信する。当該レスポンスを送信した後、ICカード1は、次のコマンドが受信可能な状態となる。
【0075】
また、処理コマンドの実行結果として追加情報(詳細情報)が有る場合(ステップS114、YES)、CPU11は、処理コマンドの実行結果に関連する詳細な内容を示す追加情報(詳細情報)を生成する(ステップS117)。追加情報は、処理コマンドの実行結果として、当該処理コマンドに対する通常のレスポンスデータでは送信しきれない情報である。たとえば、書込みコマンドの処理でエラーが発生した場合、CPU11は、追加情報として、エラーの原因、あるいは、エラーの具体的な内容(エラーが発生した処理工程)などを示す情報を含む詳細情報を生成する。なお、書込み系のコマンド処理におけるエラーでは、エラー原因としては、アクセス権無し、メモリ異常、あるいは、動作電圧低下などが考えられ、エラーの具体的な内容としては、書込みエラーとなったメモリアドレスを示す情報などが考えられる。
【0076】
上記のような追加情報を生成すると、CPU11は、既に追加情報テーブル13aに記憶されている追加情報の件数が所定の最大件数であるか否かを判断する(ステップS118)。最大件数は、たとえば、ICカード1の発行処理時に設定される値である。既存の追加情報の件数が最大件数未満である場合(ステップS118、NO)、CPU11は、生成した追加情報を追加情報テーブル13aに新規に記憶(追記)する(ステップS119)。また、既存の追加情報の件数が最大件数である場合(ステップS118、YES)、CPU11は、生成した追加情報を追加情報テーブル13aに保存されている最古の追加情報に上書きする(ステップS120)。これにより、既存の追加情報の件数が最大件数である場合、追加情報テーブル13aでは、既存の追加情報のうち最古の追加情報が削除され、新たに生成した最新の追加情報が保存される。
【0077】
追加情報テーブル13aに生成した追加情報を記憶すると、CPU11は、当該追加情報が発生したコマンドの内容を示す情報(図5に示す処理コマンド情報)を当該追加情報に対応付けて追加情報テーブル13aに記憶する(ステップS121)。追加情報が発生したコマンドの内容を示す情報は、上位装置(ICカード処理装置)が特定の追加情報を指定するための情報である。たとえば、追加情報が発生したコマンドの内容を示す情報としては、図5に示すような当該コマンドの一部の情報を用いることができる。
【0078】
上記追加情報テーブル13aに追加情報とコマンド内容を示す情報とを記憶すると、CPU11は、追加情報テーブル13aに保存されている各追加情報に対応する作成順番を更新する(ステップS122)。たとえば、追加情報テーブル13aに1つ目の追加情報を記憶する場合、CPU11は、当該追加情報に対する作成順番を「1」として記憶する。また、追加情報テーブル13aに既に追加情報が記憶されている場合、CPU11は、既存の追加情報の作成順番をインクリメント(1加算)し、新たに記憶した追加情報(最新の追加情報)に対する作成順番を「1」として記憶する。これにより、追加情報テーブル13aでは、各追加情報に対する作成順番が新しい順になるように更新される。
【0079】
なお、上記追加情報テーブル13aは、RAM13に設けられる。RAM13に設けた追加情報テーブル13aは、当該ICカード1がリセットされるごとに保存した追加情報としての詳細情報をクリアする。つまり、RAM13に設けたエラー情報テーブル13aは、ICカード1のリセットに伴ってリセットされる。言い換えると、ICカード1のリセットするごとに追加情報もリセットしたい場合、エラー情報テーブル13aは、RAM13に設けられる。
【0080】
また、エラー情報テーブル13aは、不揮発性メモリ16に設けても良い。不揮発性メモリ16に設けたエラー情報テーブル13aは、ICカード1の電源がオフとなっても追加情報を保持する。つまり、不揮発性メモリ16に設けたエラー情報テーブル13aは、コマンドによって上書き或は削除などの処理が行われなければ、追加情報としての詳細情報が保持される。言い換えると、ICカードが非活性化されても追加情報を保持したい場合、エラー情報テーブル13aは、不揮発性メモリ16に設けられる。
【0081】
追加情報テーブル13aに追加情報、処理コマンド情報、および作成順番を保存すると、CPU11は、ステータスワード(SW)にコマンド処理結果を示す情報(コード情報)と追加情報有りを示す情報とをセットしたレスポンスデータを生成する(ステップS123)。追加情報有りを示す情報をセットしたレスポンスデータを生成すると、CPU11は、生成したレスポンスをICカード処理装置2へ送信する(ステップS116)。当該レスポンスを送信した後、ICカード1は、次のコマンドが受信可能な状態となる。
【0082】
また、上記ステップS112で受信したコマンドが追加情報の読出しを要求する特殊コマンド(以下、単に特殊コマンドとも称する)であると判断した場合(ステップS112、YES)、CPU11は、追加情報テーブル13aに記憶されている追加情報から読出対象とする追加情報を特定する処理を行う(ステップS125)。読出対象とする追加情報は、追加情報の読出しを要求する特殊コマンドの内容(パラメータ或は受信タイミング)に基づいて判断される。
【0083】
上記第2の処理例では、追加情報テーブル13aは、追加情報に対応づけて、作成順序および処理コマンド情報を記憶している。このため、追加情報の読出しを要求する特殊コマンドでは、作成順番、あるいは処理コマンド情報により特定の追加情報を指定することが可能である。また、特定の追加情報が指定されない特殊コマンドに対しては、最新の追加情報を読出対象の追加情報とするようにしても良い。なお、上記特殊コマンドでは、複数の追加情報を指定したり、全ての追加情報を指定したりすることもできる。このような特殊コマンドに対しては、CPU11は、複数の追加情報、或は全ての追加情報を読出対象と判定する。
【0084】
読出対象の追加情報を特定すると、CPU11は、特定した読出対象の追加情報を追加情報テーブル13aから読み出し(ステップS126)、読み出した追加情報をセットしたレスポンスデータを生成する(ステップS127)。
読出対象の追加情報をセットしたレスポンスデータを生成すると、CPU11は、読み出した追加情報を削除するか保存しておくかを判断する(ステップS128)。読み出した追加情報を削除するか否かは、前記特殊コマンドのパラメータで指定できるようにしても良いし、予め何れかに設定しておくようにしても良い。たとえば、前記特殊コマンドで読出した追加情報を削除するか否かを指定できるようにする場合、CPU11は、受信した特殊コマンドのパラメータにより読出し後の追加情報を削除するか否かを判断する。
【0085】
読出した追加情報を削除すると判断した場合(ステップS128、YES)、CPU11は、読み出した追加情報を追加情報テーブル13aから削除する(ステップS129)。この場合、CPU11は、追加情報テーブル13aに残った追加情報に対する作成順番を更新するようにしても良い。なお、ステップS128及びS129の処理は、読み出した追加情報をレスポンスデータにセットした後、或はレスポンスデータを送信した後に実行するようにしても良い。
【0086】
上記特殊コマンドで指定された読出対象の追加情報をレスポンスデータにセットすると、CPU11は、読出対象の追加情報をセットしたレスポンスデータにステータスワードに処理成功を示す情報をセットし(ステップS115)、上記特殊コマンドに対するレスポンスとしてICカード処理装置2へ送信する(ステップS116)。
【0087】
上記のように、第2の処理例のICカードでは、上位装置から受信した処理コマンドに対する実行結果としてステータスワードでは示せない追加情報(詳細情報)がある場合、追加情報を生成し、生成した追加情報を当該処理コマンドを示す情報および作成順番に対応づけて追加情報テーブルに保存しておき、当該処理コマンドに対するレスポンスでは追加情報があることを通知する。追加情報テーブルに保存した追加情報の読出しを要求する特殊コマンドを上位装置から受信した場合、ICカードは、当該特殊コマンドで指定される追加情報を特定し、特定した追加情報をセットしたレスポンスデータを生成して上位装置へ送信する。
【0088】
上記のような第2の処理例によれば、ICカード1は、既存のコマンド体系のままで、エラー内容の詳細情報などの処理コマンドの実行結果に関わる追加情報(詳細情報)を複数件数分保存することができ、保存した追加情報を上位装置からの要求に応じて任意のタイミングで通知する機能を提供できる。この結果として、上位装置では、詳細情報(追加情報)で示される情報に基づいて効率的な処理をICカードに実行させることができる。
【0089】
次に、ICカード処理システム全体における第2の処理例の流れを具体例を用いて説明する。
まず、コマンドの実行結果として生成した最新の追加情報(詳細情報)を読み出す場合の具体例について説明する。
図10は、最新の追加情報を読み出す場合の処理例を示すシーケンス図である。図10は、書込み系のコマンド処理においてエラーが発生した場合の処理例を示すシーケンスを示している。なお、書込み処理におけるエラーの原因としては、アクセス権無し、メモリ異常、あるいは、動作電圧低下などが考えられる。
【0090】
たとえば、書込み系のコマンドを受信した場合、既に他の論理チャネルが書込み対象とするファイルを占有している状態であれば、アクセス権無しのため、書込みエラーとなるものとする。このような場合、ICカード1は、書込みが出来なかった理由(他の論理チャネルによるアクセス対象ファイルの占有)を追加情報として生成して保持しておく。この状態で、ICカード1は、「書込み失敗」と共に「追加情報あり」を示すステータスワードをセットしたレスポンスを返信することにより、受信した書込みコマンドに対する処理を終了する。その後、追加情報を要求する特殊コマンドを受信した場合、ICカード1は、書込みが出来なかった理由を示す追加情報を送信する。
【0091】
ここで、ICカード1は、図2に示すように、アプリケーションA、B、ファイル(EF)A1,A2,B1が存在することを想定する。さらに、ICカード1は、ロジカルチャネル管理機能42により管理する複数の論理チャネルでのアクセス状態として、論理チャネル「Ch.0」がファイルA1をカレントに設定している状態を想定するものとする。
【0092】
まず、上位装置としてのICカード処理装置2は、ICカード1内のファイルA1にデータを書き込むための準備として、論理チャネル(Ch.1)の開設とアプリケーションAの選択を要求するコマンドをICカード1に送信する(ステップS131)。これに対して、ICカード1は、論理チャネル(Ch.1)を開設してアプリケーションAを選択するコマンド処理を実行する。論理チャネル(Ch.1)の開設とアプリケーションAの選択とが成功すると、ICカード1は、当該コマンド処理が成功したことを示すステータスワードをセットしたレスポンスをICカード処理装置2へ送信する(ステップS132)。
【0093】
論理チャネル(Ch.1)の開設とアプリケーションAの選択を要求するコマンドに対する処理が成功した旨のレスポンスを受けると、ICカード処理装置2は、ファイルA1の選択を要求するコマンドをICカード1に対して送信する(ステップS133)。これに対して、ICカード1は、論理チャネル(Ch.1)におけるカレントファイルをファイルA1に設定するコマンド処理を実行する。論理チャネル(Ch.1)におけるカレントファイルをファイルA1に設定する処理が成功すると、ICカード1は、コマンド処理が成功したことを示すステータスワードをセットしたレスポンスをICカード処理装置2へ送信する(ステップS134)。
【0094】
ファイルA1の選択を要求するコマンドに対する処理が成功した旨のレスポンスを受けると、ICカード処理装置2は、ファイルA1に対するデータの書込みを要求する書込みコマンドをICカード1に対して送信する(ステップS135)。この書込みコマンドは、CASE3のファーマットで構成される。これに対して、ICカード1は、書込みコマンドに応じた書込み処理を実行する(ステップS136)。
【0095】
このような書込みコマンドに対する処理において、まず、ICカード1のCPU11は、カレントファイルに設定されているファイルA1へのアクセス権限の確認する(ステップS136−1)。当該書込みコマンドに対する処理は、論理チャネルが「Ch.1」でカレントファイルとしてのファイルA1にデータを書込む処理である。ここでは、ICカード1は、論理チャネル「Ch.0」でファイルA1をカレントファイルに設定している状態である。このため、ICカード1のCPU11は、論理チャネル「Ch.1」でのファイルA1に対する書込み権限がないものと判断する(ステップS136−2)。このような書込み権限無しの判断に基づいて、ICカード1のCPU11は、当該コマンドで要求されるデータの書込み処理を実施せずに中止(エラー)とする(ステップS136−3)。
【0096】
受信した書込みコマンドに対応するコマンド処理を中止すると、ICカード1のCPU11は、当該コマンドの処理を中止した詳細な理由を示す追加情報(詳細情報)を生成する(ステップS136−4)。ここでは、コマンド処理を中止した理由(エラー内容の詳細情報)は、論理チャネル「Ch.0」が既にファイルA1にアクセス中であることである。このため、ICカード1のCPU11は、コマンド処理を中止の理由(例えば、「ファイルA1には論理チャネル「Ch.0」でアクセス中のため論理チャネル「Ch.1」では書込み不可」、あるいは、「ファイルA1に対する当該論理チャネル(Ch.1)のアクセス優先権が2番目」など)を示す追加情報を生成する。CPU11は、生成した追加情報に処理コマンド情報としてのエラーとなった書込みコマンドを示す情報(当該書込みコマンドの一部(00h D0h 00h 00h 10h 11h 12h))に対応づけ、最新の追加情報(作成番号「1」の情報)として追加情報テーブル13aに記憶する(ステップS36−5)。
【0097】
最新の追加情報を追加情報テーブル13aに記憶すると、ICカード1のCPU11は、「書込み異常」となったことを示すコード情報とともに、「追加情報あり」を示すステータスワードをセットしたレスポンスを作成する(ステップS136−6)。「書込み異常」と「追加情報有り」とを示すステータスワードをセットしたレスポンスを作成すると、ICカード1のCPU11は、作成したレスポンスをICカード処理装置2へ送信し(ステップS137)、当該書込みコマンドに対する処理を終了する。
【0098】
ICカード処理装置2は、追加情報有りを含むレスポンスを受信すると、追加情報が直に必要であるか否かを判断する。追加情報の要否は、予め設定しておくようにしても良いし、ICカード処理装置2のオペレータが適宜選択するようにしても良い。ICカード処理装置2は、追加情報の要否の判断結果に基づいて当該ICカード1に次に供給するコマンドを決定する。ここでは、ICカード処理装置2は、ICカード1に対して、すぐに最新の追加情報の読出しを要求するものとする。
【0099】
最新の追加情報が必要であると判断した場合、ICカード処理装置2は、最新の追加情報を指定した追加情報の読出しを要求する特殊コマンド(例えば、CASE2のGET RESPONSEコマンド)をICカード1へ送信する(ステップS138)。上記特殊コマンドは、特定の追加情報の指定が無い場合、最新の追加情報が読出対象の追加情報と判断されるようにしても良い。また、特殊コマンドでは、作成順番「1」を指定したり、最新の追加情報が発生した処理コマンド情報(ここでは、書込みコマンド)を指定したりすることにより最新の追加情報を指定するようにしても良い。ここでは、追加情報有りのレスポンスを受けたICカード処理装置2が、特定の追加情報を指定しない特殊コマンドにより、最新の追加情報の読出しを要求するものとする。
【0100】
上記特殊コマンドを受信したICカード1のCPU11は、当該特殊コマンドで追加情報の指定が無ければ、当該特殊コマンドが最新の追加情報の読出しを要求するコマンドであると判断する。この判断に基づいて、ICカード1のCPU11は、追加情報テーブル13aから最新の追加情報(作成番号が最も新しい追加情報)を読出し、レスポンスデータにセットする(ステップS39)。最新の追加情報をレスポンスデータにセットすると、ICカード1のCPU11は、当該レスポンスデータをICカード処理装置2へ送信する(ステップS140)。
【0101】
上記のように、追加情報の読出しを要求する特殊コマンドで特定の追加情報が指定されていない場合、ICカードは、追加情報テーブルに保存した最新の追加情報をレスポンスとして送信するようにできる。また、読み出した最新の追加情報は、削除するようにしても良いし、保存しておくようにしても良い。たとえば、読出した追加情報を削除するか否かを特殊コマンドで指定する場合、ICカード1のCPU11は、当該特殊コマンドでの指定に基づいて読み出した追加情報を削除あるいは保存する。
【0102】
なお、最新の追加情報がすぐには必要でない場合、ICカード処理装置2は、追加情報有りのステータスワードを含むレスポンスを送信した後も、追加情報の読出しを要求する特殊コマンド以外の通常のコマンドをICカード1に送信することにより、通常の処理を継続的に実行することが可能である。このような場合であっても、ICカード1は、所定の最大件数までの追加情報を追加情報テーブル13aに保持している。このため、ICカード処理装置2は、別の処理を実行した後に特定の追加情報をICカード1から取得することも可能である。
【0103】
次に、追加情報テーブル13aに記憶した追加情報を複数のコマンド処理を実行した後に読み出す処理例について説明する。
図11は、追加情報テーブル13aに記憶した追加情報を追加情報に関連のない複数のコマンドの処理を実行後に読み出す処理例を示すシーケンス図である。
ここでは、図10に示すステップS131〜S137の処理が実行された状態であることを想定するものとする。この状態(追加情報有りのステータスワードを受信した場合)であっても、最新の追加情報がすぐには必要でなければ、ICカード処理装置2は、通常のコマンドをICカード1に送信することにより、通常の処理を継続的に実行できる。
【0104】
図11の処理例では、ICカード処理装置2は、上記ステップS137で書込みコマンドに対して追加情報有りのステータスワードを受信した後、追加情報に関連のない処理を要求する処理コマンド(CASE2のGET CHALLENGE コマンド)をICカード1へ供給している(ステップS141)。この処理コマンドを受信したICカード1は、当該処理コマンドで要求された処理を実行する(ステップS142)。処理コマンドに対する処理が正常に行われると、ICカード1は、正常終了を示すステータスワードをセットした処理結果(ここでは、乱数)をICカード処理装置2へ送信する(ステップS143)。このように、ICカード処理装置2は、追加情報有りのステータスワードを受信した後も、通常のコマンド処理を実行できる。
【0105】
ここで、ICカード処理装置2が追加情報に関連のない処理を要求する処理コマンド(CASE2のGET CHALLENGE コマンド)をICカード1へ供給したものとする(ステップS151)。この処理コマンドを受信したICカード1のCPU11は、当該処理コマンドで要求された処理を実行する(ステップS152)。当該処理コマンドの実行中にステータスワードでは示せない追加情報が発生した場合、CPU11は、当該処理コマンドの実行結果に関する追加情報(詳細情報)を生成する(ステップS152−1)。追加情報を生成すると、CPU11は、生成した追加情報に当該処理コマンドを示す情報(当該処理コマンドの一部)を対応づけて追加情報テーブル13aに保存する(ステップS152−2)。
【0106】
生成された当該処理コマンドに対する追加情報は、作成番号が「1」の最新の追加情報として追加情報テーブル13aに記憶すべきものである。ここでは、追加情報テーブル13aには既に別の追加情報が記憶されているため、CPU11は、既存の追加情報に対する作成番号を更新する(ステップS152−3)。すなわち、図8の処理例では、追加情報テーブル13aには上記ステップS136−4で生成した追加情報が記憶されている。このため、CPU11は、上記ステップS136−4で生成した追加情報に対する作成番号を「2」に更新する。
【0107】
最新の追加情報を追加情報テーブル13aに記憶すると、ICカード1のCPU11は、当該処理コマンドに対する処理結果を示すコード情報(たとえば、処理異常を示すコード情報)とともに、追加情報ありを示すステータスワードをセットしたレスポンスデータを作成する(ステップS152−4)。処理結果を示すコード情報と追加情報有りを示すステータスワードをセットしたレスポンスデータを作成すると、ICカード1のCPU11は、作成したレスポンスデータをICカード処理装置2へ送信する(ステップS153)。
【0108】
このようなレスポンスデータを受信した場合であっても、ICカード処理装置2では、追加情報に関連のない処理を継続できる。図11に示す例では、ICカード処理装置2は、追加情報に関連のない処理を要求する処理コマンド(CASE2のGET CHALLENGE コマンド)をICカード1へ供給する(ステップS161)。この処理コマンドを受信したICカード1は、当該処理コマンドで要求された処理を実行する(ステップS162)。処理コマンドに対する処理が正常に行われると、ICカード1は、正常終了を示すステータスワードをセットした処理結果(ここでは、乱数)をICカード処理装置2へ送信する(ステップS163)。
【0109】
ここで、ICカード処理装置2が上記ステップS136で生成した追加情報(つまり、ステップS137で通知された追加情報)を読み出したいとする。すると、ICカード処理装置2は、作成番号「2」の追加情報を指定して追加情報の読出しを要求する特殊コマンドをICカード1へ送信する(ステップS171)。ただし、ここでは、ICカード処理装置2が読出対象とする追加情報の作成番号を認識しているものとする。読出対象とする追加情報の作成番号を認識していない場合、ICカード処理装置2は、当該追加情報に対応づけて記憶している処理コマンド情報(ここでは、書込みコマンドの一部を示す情報)により、読出対象とする追加情報を指定しても良い。
【0110】
なお、追加情報の読出しを要求する特殊コマンドでは、特定の追加情報だけでなく、複数の追加情報を読出対象として指定したり、全部の追加情報を読出対象として指定したりすることも可能である。
さらに、追加情報の読出しを要求する特殊コマンドでは、パラメータの設定により読み出した追加情報の削除を指定することも可能である。図11に示す例では、作成番号「2」の追加情報を指定する特殊コマンドにおいて、当該追加情報を読出し後に削除することが指定されているものとする。
【0111】
上記のような作成番号「2」の追加情報を読出対象に指定する特殊コマンドを受信したICカード1のCPU11は、追加情報テーブル13aから指定された作成番号「2」の追加情報を読み出す(ステップS172−1)。指定された作成番号「2」の追加情報を読み出すと、CPU11は、読み出した作成番号「2」の追加情報をセットしたレスポンスデータを作成する(ステップS172−2)。作成番号「2」の追加情報をレスポンスデータにセットすると、CPU11は、作成番号「2」の追加情報を追加情報テーブル13aから削除する(ステップS172−3)。
【0112】
上記特殊コマンドで指定された追加情報をレスポンスデータにセットすると、ICカード1のCPU11は、当該レスポンスデータをICカード処理装置2へ送信する(ステップS173)。このレスポンスデータには、たとえば、作成番号が「2」で、処理コマンド情報が書込みコマンド(一部のデータが(00h D0h 00h 00h 10h 11h 12h))で、追加情報が「書込み対象のファイルA1にはチャネル「Ch.0」でアクセス中のためチャネル「Ch.1」では書込不可」であるという情報がセットされる。
【0113】
上記のように、第2の処理例では、ICカードは、複数件の追加情報を記憶できる。このため、第2の処理例では、ICカード処理装置は、ICカードから追加情報有りが通知された場合であっても、追加情報に関連のないコマンドを継続的に実行させることができる。さらに、追加情報に関連のないコマンドを実行した後であっても、ICカード処理装置は、任意のタイミングで、ICカード1から過去のコマンド処理で生じた追加情報を取得することができる。この結果として、ICカード処理装置では、既存のコマンド体系のままであっても、ICカードにおけるコマンド処理で生じた追加情報(詳細情報)に基づいて効率的な処理をICカードに実行させることができる。
【0114】
次に、ICカード1におけるコマンド処理の第3の処理例について説明する。
第3の処理例においても、ICカード1は、予め規定されている上記したコマンド体系を遵守する。第3の処理例において、ICカード1は、上位装置から与えられたコマンドの実行処理においてエラーが発生した場合、エラー内容の詳細な情報を示す追加情報を生成し、生成した追加情報を追加情報テーブル13aに保存する。さらに、ICカード1は、追加情報テーブル13aに保存した追加情報を上位装置からの要求に応じて送信する。
【0115】
次に、第3の処理例に係る追加情報テーブル13a´の構成について説明する。
図12は、上記追加情報テーブル13a´の構成例を示す図である。
上記追加情報テーブル13a´には、複数件の追加情報(詳細情報)が保存可能である。上記追加情報テーブル13a´に追加情報として保存可能な件数(最大件数)は、予め設定可能である。たとえば、上記追加情報テーブル13a´に保存可能な追加情報の最大件数は、当該ICカード1の発行処理時に設定される。
【0116】
上記追加情報テーブル13a´には、コマンド処理においてエラーなどにより追加情報が発生するごとに、作成順番、優先度および処理コマンド情報を対応づけた追加情報を記憶する。追加情報は、コマンド処理の実行中に発生した事象の詳細な内容を示す情報である。追加情報としては、実行したコマンド処理のレスポンスデータでは伝えきれない情報を想定している。たとえば、コマンド処理においてエラーが発生した場合、ICカード1は、エラー内容の詳細を示す情報を追加情報として生成する。
【0117】
たとえば、図12に示す例では、書込みコマンドに対する追加情報として、書込み対象のファイルにはロジカルチャネル「Ch.0」でアクセス中であったため書込みがエラーとなった旨が記憶されている。既存のコマンド体系においては、書込みコマンドに対するレスポンスでは上記のようなエラー内容を示す情報は通知できない。このため、ICカード1は、上記のようなエラー内容を追加情報として生成する。なお、上記追加情報は、コマンド処理の処理結果を示すレスポンスにおけるステータスワードだけでは通知しきれない情報であり、エラー内容の詳細を示す情報に限らない。たとえば、コマンドの処理が成功した場合であっても、ICカード1では、コマンド処理の実行中に発生した事象を示す情報を追加情報として生成するようにしても良い。
【0118】
作成順番は、追加情報を作成した順番(保存した順番)を示す情報である。複数の追加情報を追加情報テーブル13a´に保存する場合、たとえば、各追加情報には、新しい順に作成順番が付与される。この場合、追加情報テーブル13a´に追加情報が保存されるごとに、各追加情報の作成順番が更新される。
【0119】
処理コマンド情報は、追加情報が発生した処理コマンドの内容を示す情報である。処理コマンド情報は、実行結果に関連する追加情報が生成された処理コマンド自体を示す情報である。たとえば、処理コマンド情報としては、実際に受信したコマンドの一部が記憶される。図12に示す例では、処理コマンド情報として、WRITE COMMANDの一部のデータ(00h D0h 00h 00h 10h 11h 12h)が記憶されている。これにより、上位装置としてのICカード処理装置2は、後述する追加情報の読出を要求する特殊コマンドにおいて、特定の追加情報を処理コマンド情報により指定することが可能となる。
【0120】
優先度は、追加情報の重要度を示す情報である。追加情報の優先度は、追加情報の内容に応じて決定される。ICカード処理システム全体あるいはICカード自体の動作にとって重要な問題となる追加情報には、高い優先度(例えば、5段階の優先度に対して「5」あるいは3段階の優先度に対して「3」)を付与する。重要性或は緊急性が高く、上位装置(ICカード処理装置)に必ず通知すべき追加情報は、優先度を高くする。たとえば、優先度が高い追加情報としては、システム全体あるいはICカードが正常に機能しなくなるような不具合を示す追加情報が考えられる。具体例としては、ICカード1が正常に動作しなくなるようなハードウエアの故障を示す追加情報は、優先度を高くする。また、ICカードの動作を停止させるべき不正攻撃などのセキュリティに関する重要情報を示す追加情報も、優先度を高くする。
【0121】
これに対して、ICカード処理システム全体あるいはICカード自体の動作には問題がなく後段のコマンド処理においても影響が少ない軽微な問題を示す追加情報には、低い優先度(例えば、5段階の優先度に対して「1」あるいは3段階の優先度に対して「1」)を付与する。たとえば、上位装置(ICカード処理装置)が無視しても、後段のコマンド処理に影響がないような追加情報は、優先度を低くする。具体例としては、一時的に電源電圧が不安定であったために書込みエラーとなったことを示す追加情報は、電源電圧が安定すれば解消されるエラーであるため、優先度を低くしても良い。
【0122】
また、ICカード処理システム全体あるいはICカード自体の動作には問題ないが、後段のコマンド処理に影響がある追加情報には、中程度の優先度(例えば、5段階の優先度に対して「2」〜「4」、あるいは、3段階の優先度に対して「2」)を付与する。たとえば、アクセス対象としたファイルへのアクセス権が不備であったためにエラーとなったことを示す追加情報は、優先度を中程度としても良い。また、コマンドで指示されたアクセス対象のファイルが存在しないためにエラーとなったことを示す追加情報は、優先度を中程度としても良い。
【0123】
さらに、追加情報の優先度は、発生頻度、あるいは、連続して発生した回数などに応じて変化させるようにしても良い。たとえば、同一内容の追加情報が既に追加情報テーブルに存在する場合、新しい追加情報に対する優先度を+1することにより、優先度をより高く設定するようにすれば良い。また、連続発生回数が所定閾値以上となった場合、当該追加情報の優先度を高くするようにしても良い。また、当該ICカードにおける同一内容の追加情報の発生頻度に応じて当該追加情報の優先度を高くするようにしても良い。
【0124】
また、ICカード1は、追加情報テーブル13a´に保持している追加情報の優先度に応じてコマンド処理の内容を決定する機能も有する。たとえば、優先度が高い追加情報を保持している場合、ICカード1は、受信したコマンドに対する処理を実行せずに、優先度の高い追加情報を保持していることを通知するようにしても良い。このような運用形態では、優先度が高い追加情報を保持している場合、当該追加情報が読み出されるまで、ICカード1は、優先度の高い追加情報を保持していることを通知し続ける。このような処理によれば、ICカード1は、優先度が高い追加情報を確実に上位装置へ通知することができる。
【0125】
また、優先度が低い追加情報を保持している場合、ICカード1は、上位装置から当該追加情報の読出しが要求されなければ、優先度の低い追加情報を削除するようにしても良い。このような処理によれば、ICカード1は、優先度が低い追加情報で追加情報テーブルが占有されることが少なくなる。
【0126】
なお、本第3の処理例では、主として、追加情報の優先度は、上位装置(ICカード処理装置)への通知の必要性(重要度或は緊急度)に応じて決定されることを想定している。ただし、追加情報の優先度は、追加情報を種別ごとに分類できる情報であれば良い。たとえば、優先度の代わりに追加情報の種別を決定し、追加情報テーブル13a´には、優先度の代りに追加情報の種別を示す情報を記憶するようにしても良い。このような場合であっても、ICカード1は、追加情報の種別に応じた処理を行うことができる。
【0127】
次に、上記ICカード1におけるコマンド処理の第3の処理例の流れを説明する。
図13は、ICカード1におけるコマンドに対する第3の処理例の流れを説明するためのフローチャートである。
電源供給を受けているICカード1では、待機状態において、通信ユニット14によりICカード処理装置2からのコマンドが受信可能となっている(ステップS201)。この状態においてICカード処理装置2からのコマンドを上記通信ユニット14が受信した場合(ステップS201、YES)、ICカード1のCPU11は、受信したコマンドが追加情報を要求するコマンドであるか否かを判断する(ステップS202)。追加情報の読出しを要求するコマンドは、予め規定される特殊コマンドであるものとする。
【0128】
たとえば、追加情報の読出しを要求する特殊コマンドとしては、後述する図14或は図15に示す例のように、ゲットレスポンスコマンド(ISOで規定されているCASE2のGET RESPONSE Command)を用いることができる。このような特殊コマンドでは、読出対象とする追加情報、あるいは、追加情報を読出した後の当該追加情報に対する処理内容(削除するか否か)がパラメータなどにより指定可能となっている。
【0129】
上記判断により受信したコマンドが追加情報の読出しを要求する特殊コマンド(以下、単に特殊コマンドとも称する)でないと判断した場合(ステップS202、NO)、CPU11は、追加情報テーブル13a´に追加情報が記憶されているか否かを判断する(ステップS203)。追加情報テーブル13a´に追加情報が記憶されていると判断した場合(ステップS203、YES)、CPU11は、追加情報テーブル13a´に優先度が第1の閾値以上となる優先度が高い追加情報が存在するか否かを判断する(ステップS204)。第1の閾値は、追加情報が必ず上位装置に通知すべき情報であるか否かを優先度に基づいて判定するための閾値である。
【0130】
すなわち、第3の処理例では、ICカード1は、上位装置としてのICカード処理装置2への通知が必須の追加情報が追加情報テーブル13a´に保持されているか否かを判断する。言い換えると、CPU11は、優先度が第1の閾値以上である否かにより、追加情報テーブル13a´に保持されている追加情報がICカード処理装置2への通知が必須であるか否かを判断する。たとえば、「1」〜「5」の5段階の優先度に対して第1の閾値を「5」と設定した場合、CPU11は、優先度が「5」の追加情報を優先度が高い追加情報と判断する。
【0131】
上記第1の閾値以上の優先度が高い追加情報が存在すると判断した場合(ステップS204、YES)、CPU11は、受信したコマンドに対する処理を実行せずに、追加情報有りを示すステータスワードをセットしたレスポンスデータを作成し(ステップS213)、作成したレスポンスデータをICカード処理装置2へ送信する(ステップS214)。これにより、ICカード1では、追加情報テーブル13a´に第1の閾値以上となる高い優先度の追加情報を存在する限り、特殊コマンド以外の通常コマンドに対してはコマンド処理を実行せずに、追加情報が有りというレスポンスのみを返す。この結果として、ICカード処理装置2では、優先度の高い追加情報をICカード1から読み出すまで、他の処理を当該ICカード1に実行させることが出来なくなる。
【0132】
また、上記第1の閾値以上の優先度が高い追加情報が存在しないと判断した場合(ステップS204、NO)、CPU11は、追加情報テーブル13a´に優先度が第2の閾値以下となる優先度が低い追加情報が存在するか否かを判断する(ステップS205)。第2の閾値は、追加情報が上位装置に通知しなくとも良い情報であるか否かを優先度に基づいて判定するための閾値である。
【0133】
すなわち、第3の処理例では、ICカード1は、追加情報テーブル13a´に保持している追加情報が上位装置に通知しなくても良い追加情報であるか否かを判断する。本実施の形態では、後段のステップS206で、第2の閾値以下の追加情報を削除する。これは、ステップS205の処理が、追加情報テーブル13a´に保持している追加情報が削除しても良い情報であるか否かを判断することを意味している。すなわち、特殊コマンド以外のコマンドを受信した場合、CPU11は、ICカード処理装置2から読出し要求が無った直前のコマンド処理で発生した追加情報を削除しても良いか否かを判断する。たとえば、「1」〜「5」の5段階の優先度に対して第2の閾値を「1」と設定した場合、CPU11は、優先度が「1」の追加情報を優先度が低い追加情報と判断する。
【0134】
上記第2の閾値以下の優先度の追加情報が存在すると判断した場合(ステップS205、YES)、CPU11は、優先度が第2の閾値以下となっている低い優先度の追加情報(直前のコマンド処理で発生した追加情報)を追加情報テーブル13a´から削除する(ステップS206)。なお、追加情報の優先度を発生頻度あるいは連続発生回数に応じて決定する場合、追加情報テーブル13a´から削除する追加情報の内容は、追加情報テーブル13a´以外の記憶領域に保存しておくようにしても良い。また、追加情報を完全に削除せずに、追加情報テーブル13a´に削除済みである旨を対応づけて記録しておくようにしても良い。
【0135】
上記第2の閾値以下の優先度の追加情報が存在しないと判断した場合(ステップS205、YES)、あるいは、優先度が第2の閾値以下の追加情報を削除した場合(ステップS206)、CPU11は、受信したコマンドの内容に従ったコマンド処理を実行する(ステップS207)。コマンド処理において、CPU11は、コマンドヘッダで指定される処理内容を判別することにより受信したコマンドの内容に従った処理を実行する。
【0136】
コマンド処理を実行すると、CPU11は、当該コマンド処理の実行中に追加情報(詳細情報)としてICカード処理装置2に通知すべき事象(例えば、エラー)が発生したか否かを判断する(ステップS208)。当該コマンド処理においてICカード処理装置2へ追加情報として通知すべき事象が発生しなかった場合(ステップS208、NO)、CPU11は、ステータスワード(SW)に処理結果を示す情報(コード情報)をセットしたレスポンスデータを生成し(ステップS215)、生成したレスポンスデータをICカード処理装置2へ送信する(ステップS214)。たとえば、書込みコマンドに対して正常に処理が完了した場合、CPU11は、処理成功を示す情報(コード情報)をセットしたレスポンスデータを生成してICカード処理装置2へ送信する。当該レスポンスを送信した後、ICカード1は、次のコマンドが受信可能な状態となる。
【0137】
また、コマンド処理においてICカード処理装置2へ追加情報として通知すべき事象(例えば、エラー)が発生した場合、つまり、追加情報が発生した場合(ステップS208、YES)、CPU11は、当該コマンド処理の実行結果に関連する詳細な内容を示す追加情報(詳細情報)を生成する(ステップS209)。追加情報は、コマンド処理の実行結果としての当該コマンドに対するレスポンスでは送信しきれない情報である。たとえば、書込みコマンドの処理でエラーが発生した場合、CPU11は、追加情報として、エラーの原因、あるいは、エラーの具体的な内容(エラーが発生した処理工程)などを示す情報を含む詳細情報を生成する。なお、書込み系のコマンド処理におけるエラーにおいて、エラー原因としては、メモリ異常(ハードウエアの故障)、不正攻撃(不正なアクセス手順による処理)、アクセス権無し、あるいは、動作電圧の低下などが考えられる。また、エラーの具体的な内容を示す情報としては、書込みエラーとなったメモリアドレスを示す情報などが考えられる。
【0138】
上記のような追加情報を生成すると、CPU11は、生成した追加情報を追加情報テーブル13a´に新規に記憶する(ステップS210)。さらに、CPU11は、生成した追加情報に対する優先度を決定する処理を行う(ステップS211)。追加情報に対する優先度は、追加情報の重要度或は緊急度などに応じて決定されるものであり、たとえば、上位装置としてのICカード処理装置2への通知の必要性に応じて決定される。追加情報に対する優先度が決定されると、CPU11は、図5に示すように、作成順番、優先度、およびコマンド情報を当該追加情報に対応づけて追加情報テーブル13a´に記憶する(ステップS212)。
【0139】
なお、上記追加情報テーブル13a´は、RAM13に設けられる。RAM13に設けた追加情報テーブル13a´は、当該ICカード1がリセットされるごとに保存した追加情報としての詳細情報をクリアする。言い換えると、ICカード1のリセットするごとに追加情報もリセットしたい場合、追加情報テーブル13a´は、RAM13に設けられる。また、追加情報テーブル13a´は、不揮発性メモリ16に設けても良い。不揮発性メモリ16に設けた追加情報テーブル13a´は、ICカード1の電源がオフとなっても追加情報を保持する。不揮発性メモリ16に設けた追加情報テーブル13a´は、コマンドによって上書き或は削除などの処理が行われなければ、追加情報としての詳細情報が保持される。言い換えると、ICカード1がリセットされても追加情報を保持しておきたい場合、追加情報テーブル13a´は、不揮発性メモリ16に設けられる。
【0140】
追加情報テーブル13a´に優先度、コマンド情報、および作成順番を対応づけた追加情報を保存すると、CPU11は、ステータスワード(SW)にコマンド処理結果を示す情報(コード情報)と追加情報有りを示す情報とをセットしたレスポンスデータを生成する(ステップS213)。追加情報有りを示す情報をセットしたレスポンスデータを生成すると、CPU11は、生成したレスポンスをICカード処理装置2へ送信する(ステップS214)。当該レスポンスを送信した後、ICカード1は、次のコマンドが受信可能な状態となる。
【0141】
また、上記ステップS202で受信したコマンドが追加情報の読出しを要求する特殊コマンドであると判断した場合(ステップS202、YES)、CPU11は、追加情報テーブル13a´に記憶されている追加情報から読出対象とする追加情報を特定する処理を行う(ステップS221)。読出対象とする追加情報は、追加情報の読出しを要求する特殊コマンドの内容(パラメータ或は受信タイミング)に基づいて判断される。
【0142】
上記追加情報テーブル13a´では、追加情報に対応づけて、作成順序および処理コマンド情報を記憶している。このため、追加情報の読出しを要求する特殊コマンドでは、作成順番、あるいは処理コマンド情報により特定の追加情報を指定することが可能である。また、特定の追加情報が指定されない特殊コマンドに対しては、最新の追加情報を読出対象の追加情報とするようにしても良い。なお、上記特殊コマンドでは、複数の追加情報を指定したり、全ての追加情報を指定したりすることもできる。このような特殊コマンドに対しては、CPU11は、複数の追加情報、或は全ての追加情報を読出対象と判定する。
【0143】
読出対象の追加情報を特定すると、CPU11は、特定した読出対象の追加情報を追加情報テーブル13a´から読み出し(ステップS222)、読み出した追加情報をセットしたレスポンスデータを生成する(ステップS223)。読出対象の追加情報をセットしたレスポンスデータを生成すると、CPU11は、読み出した追加情報を削除するか保存しておくかを判断する(ステップS224)。読み出した追加情報を削除するか否かは、前記特殊コマンドのパラメータで指定できるようにしても良いし、予め何れかに設定しておくようにしても良い。たとえば、前記特殊コマンドで読出した追加情報を削除するか否かを指定できるようにする場合、CPU11は、受信した特殊コマンドのパラメータにより読出し後の追加情報を削除するか否かを判断する。
【0144】
読出した追加情報を削除すると判断した場合(ステップS224、YES)、CPU11は、読み出した追加情報を追加情報テーブル13a´から削除する(ステップS225)。この場合、CPU11は、追加情報テーブル13a´に残った追加情報に対する作成順番を更新する。なお、追加情報の優先度を発生頻度あるいは連続発生回数に応じて決定する場合、追加情報テーブル13a´から削除する追加情報の内容は、追加情報テーブル13a´以外の記憶領域に保存しておくようにしても良い。また、追加情報を完全に削除せずに、追加情報テーブル13a´に削除済みである旨を対応づけて記録しておくようにしても良い。また、ステップS224及びS225の処理は、読み出した追加情報をレスポンスデータにセットした後、或はレスポンスデータを送信した後に実行するようにしても良い。
【0145】
上記特殊コマンドで指定された読出対象の追加情報をレスポンスデータにセットすると、CPU11は、読出対象の追加情報をセットしたレスポンスデータに処理成功を示すステータスワードをセットし(ステップS215)、上記特殊コマンドに対するレスポンスとしてICカード処理装置2へ送信する(ステップS214)。
【0146】
上記のように、本実施の形態のICカードでは、上位装置から受信した処理コマンドに対する実行結果としてステータスワードでは示せない追加情報(詳細情報)がある場合、追加情報を生成し、生成した追加情報の優先度を決定し、決定した優先度を当該追加情報に対応づけて追加情報テーブルに保存し、追加情報がある旨のレスポンスを通知する。追加情報テーブルに追加情報を保存した状態でコマンドを受信した場合、ICカードは、追加情報テーブルに保存している追加情報の優先度に応じた処理を行う。
【0147】
たとえば、優先度が所定の閾値よりも高い追加情報を保持している場合、ICカードは、通常の処理を要求するコマンドを受信しても、当該コマンドを実行せずに、追加情報がある旨のレスポンスを送信する。また、優先度が所定の閾値よりも低い追加情報を保持している場合、ICカードは、通常の処理コマンドを受信すると当該コマンドに従ってコマンド処理を実行するとともに、優先度が低い当該追加情報を削除する。
【0148】
上記のような第3の処理例のICカード1によれば、既存のコマンド体系のままであっても、エラー内容の詳細情報などのコマンド処理中に発生した事象を示す追加情報(詳細情報)を、各追加情報の優先度に応じて効率良く上位装置へ通知することを実現できる。
【0149】
次に、ICカード処理システム全体における第3の処理例の流れを具体例を用いて説明する。
まず、コマンドの実行結果として生成した最新の追加情報(詳細情報)を読み出す場合の具体例について説明する。
図14は、第3の処理例により最新の追加情報を読み出す処理の具体例を示すシーケンス図である。図14は、書込み系のコマンド処理においてエラーが発生した場合の処理例を示すシーケンスを示している。なお、書込み処理におけるエラーの原因としては、メモリ異常、不正攻撃、アクセス権無し、あるいは、動作電圧低下などが考えられる。
【0150】
たとえば、書込み系のコマンドを受信した場合、既に他の論理チャネルが書込み対象とするファイルを占有している状態であれば、アクセス権無しのため、書込みエラーとなるものとする。このような場合、ICカード1は、書込みが出来なかった理由(他の論理チャネルによるアクセス対象ファイルの占有)を追加情報として生成して保持しておく。この状態で、ICカード1は、「書込み失敗」と共に「追加情報あり」を示すステータスワードをセットしたレスポンスを返信することにより、受信した書込みコマンドに対する処理を終了する。その後、追加情報を要求する特殊コマンドを受信した場合、ICカード1は、書込みが出来なかった理由を示す追加情報を送信する。
【0151】
ここでは、ICカード1は、図2に示すように、アプリケーションA、B、ファイル(EF)A1,A2,B1が存在することを想定する。さらに、ICカード1は、ロジカルチャネル管理機能42により管理する複数の論理チャネルでのアクセス状態として、論理チャネル「Ch.0」がファイルA1をカレントに設定している状態を想定するものとする。
【0152】
まず、上位装置としてのICカード処理装置2は、ICカード1内のファイルA1にデータを書き込むための準備として、論理チャネル(Ch.1)の開設とアプリケーションAの選択を要求するコマンドをICカード1に送信する(ステップS231)。これに対して、ICカード1は、論理チャネル(Ch.1)を開設してアプリケーションAを選択するコマンド処理を実行する。論理チャネル(Ch.1)の開設とアプリケーションAの選択とが成功すると、ICカード1は、当該コマンド処理が成功したことを示すステータスワードをセットしたレスポンスをICカード処理装置2へ送信する(ステップS232)。
【0153】
論理チャネル(Ch.1)の開設とアプリケーションAの選択を要求するコマンドに対する処理が成功した旨のレスポンスを受けると、ICカード処理装置2は、ファイルA1の選択を要求するコマンドをICカード1に対して送信する(ステップS233)。これに対して、ICカード1は、論理チャネル(Ch.1)におけるカレントファイルをファイルA1に設定するコマンド処理を実行する。論理チャネル(Ch.1)におけるカレントファイルをファイルA1に設定する処理が成功すると、ICカード1は、コマンド処理が成功したことを示すステータスワードをセットしたレスポンスをICカード処理装置2へ送信する(ステップS234)。
【0154】
ファイルA1の選択を要求するコマンドに対する処理が成功した旨のレスポンスを受けると、ICカード処理装置2は、ファイルA1に対するデータの書込みを要求する書込みコマンドをICカード1に対して送信する(ステップS235)。この書込みコマンドは、CASE3のファーマットで構成される。これに対して、ICカード1は、書込みコマンドに応じた書込み処理を実行する(ステップS236)。
【0155】
このような書込みコマンドに対する処理において、まず、ICカード1のCPU11は、カレントファイルに設定されているファイルA1へのアクセス権限の確認する(ステップS236−1)。当該書込みコマンドに対する処理は、論理チャネルが「Ch.1」でカレントファイルとしてのファイルA1にデータを書込む処理である。ここでは、ICカード1は、論理チャネル「Ch.0」でファイルA1をカレントファイルに設定している状態である。このため、ICカード1のCPU11は、論理チャネル「Ch.1」でのファイルA1に対する書込み権限がないものと判断する(ステップS236−2)。このような書込み権限無しの判断に基づいて、ICカード1のCPU11は、当該コマンドで要求されるデータの書込み処理を実施せずに中止(エラー)とする(ステップS236−3)。
【0156】
受信した書込みコマンドに対応するコマンド処理を中止すると、ICカード1のCPU11は、当該コマンドの処理を中止した詳細な理由を示す追加情報(詳細情報)を生成する(ステップS236−4)。ここでは、コマンド処理を中止した理由(エラー内容の詳細情報)は、論理チャネル「Ch.0」が既にファイルA1にアクセス中であることである。このため、ICカード1のCPU11は、コマンド処理を中止の理由(例えば、「ファイルA1には論理チャネル「Ch.0」でアクセス中のため論理チャネル「Ch.1」では書込み不可」、あるいは、「ファイルA1に対する当該論理チャネル(Ch.1)のアクセス優先権が2番目」など)を示す追加情報を生成する。
【0157】
追加情報を生成すると、CPU11は、生成した追加情報に対する優先度を決定する(ステップS236−5)。ここでは、追加情報は、「ファイルA1には論理チャネル「Ch.0」でアクセス中のため論理チャネル「Ch.1」では書込み不可」という情報である。このような追加情報に対しては、図12に示す例では、優先度が「2」と設定される。
【0158】
生成した追加情報に対する優先度を決定すると、CPU11は、生成した追加情報に、優先度(ここでは、「2」)、コマンド情報(ここでは、書込みコマンドの一部(00h D0h 00h 00h 10h 11h 12h))、および、作成番号(ここでは、「1」)を対応づけて追加情報テーブル13a´に記憶する(ステップS236−6)。
【0159】
最新の追加情報を追加情報テーブル13a´に記憶すると、ICカード1のCPU11は、「書込み異常」となったことを示すコード情報とともに、「追加情報あり」を示すステータスワードをセットしたレスポンスを作成する(ステップS236−7)。「書込み異常」と「追加情報有り」とを示すステータスワードをセットしたレスポンスを作成すると、ICカード1のCPU11は、作成したレスポンスをICカード処理装置2へ送信し(ステップS237)、当該書込みコマンドに対する処理を終了する。
【0160】
ICカード処理装置2は、追加情報有りを含むレスポンスを受信すると、追加情報が直に必要であるか否かを判断する。追加情報の要否は、予め設定しておくようにしても良いし、ICカード処理装置2のオペレータが適宜選択するようにしても良い。ICカード処理装置2は、追加情報の要否の判断結果に基づいて当該ICカード1に次に供給するコマンドを決定する。ここでは、ICカード処理装置2は、ICカード1に対して、すぐに最新の追加情報の読出しを要求するものとする。
【0161】
最新の追加情報が必要であると判断した場合、ICカード処理装置2は、最新の追加情報を指定した追加情報の読出しを要求する特殊コマンド(例えば、CASE2のGET RESPONSEコマンド)をICカード1へ送信する(ステップS238)。上記特殊コマンドは、特定の追加情報の指定が無い場合、最新の追加情報が読出対象の追加情報と判断されるようにしても良い。また、特殊コマンドでは、作成順番「1」を指定したり、最新の追加情報が発生した処理コマンド情報(ここでは、書込みコマンド)を指定したりすることにより最新の追加情報を指定するようにしても良い。ここでは、追加情報有りのレスポンスを受けたICカード処理装置2が、特定の追加情報を指定しない特殊コマンドにより、最新の追加情報の読出しを要求するものとする。
【0162】
上記特殊コマンドを受信したICカード1のCPU11は、当該特殊コマンドで追加情報の指定が無ければ、当該特殊コマンドが最新の追加情報の読出しを要求するコマンドであると判断する。この判断に基づいて、ICカード1のCPU11は、追加情報テーブル13a´から最新の追加情報(作成番号が最も新しい追加情報)を読出し、レスポンスデータにセットする(ステップS239)。最新の追加情報をレスポンスデータにセットすると、ICカード1のCPU11は、当該レスポンスデータをICカード処理装置2へ送信する(ステップS240)。
【0163】
上記のように、追加情報の読出しを要求する特殊コマンドで特定の追加情報が指定されていない場合、ICカードは、追加情報テーブルに保存した最新の追加情報をレスポンスとして送信するようにできる。また、読み出した最新の追加情報は、削除するようにしても良いし、保存しておくようにしても良い。たとえば、読出した追加情報を削除するか否かを特殊コマンドで指定する場合、ICカード1のCPU11は、当該特殊コマンドでの指定に基づいて読み出した追加情報を削除あるいは保存する。
【0164】
次に、追加情報テーブル13a´に優先度が高い追加情報を保存している場合の処理例について説明する。
図15は、追加情報テーブル13a´に優先度が高い追加情報を記憶した状態でICカード処理装置2から受信するコマンドに対する処理例を示すシーケンス図である。
ここでは、追加情報テーブル13a´に5段階で「5」の優先度が設定された追加情報を記憶している状態であることを想定するものとする。この状態において、ICカード処理装置2は、追加情報に関連のない処理を要求するコマンド(特殊コマンド以外の通常コマンド)(図15の例では、CASE2のGET CHALLENGE コマンド)をICカード1へ供給している(ステップS241)。
【0165】
通常コマンドを受信したICカード1は、追加情報テーブル13a´に優先度が高い追加情報が存在するか否かを確認する。ここで、CPU111は、追加情報テーブル13a´に優先度が高い追加情報(優先度「5」)が記憶されていることを確認する(ステップS242−1)。このため、ICカード1のCPU11は、当該コマンドで要求された処理を実行することなく、追加情報の読出しを促すレスポンスデータを作成する(ステップS242−2)。たとえば、ICカード1のCPU11は、処理異常である事と追加情報がある事とを示すステータスワードをセットしたレスポンスデータを作成し、ICカード処理装置2へ送信する(ステップS243)。
【0166】
この場合、ICカード1は、上位装置としてのICカード処理装置2からの要求に応じて追加情報を読み出さない限り、通常コマンドを実行しない。すなわち、ICカード処理装置2は、ICカード1から優先度の高い追加情報を読み出さない限り、通常コマンドが実行できない。このため、ICカード処理装置2は、追加情報の読出しを要求する特殊コマンド(図15に示す例では、CASE2のGET RESPONSEコマンド)をICカード1へ送信する(ステップS251)。
【0167】
なお、特殊コマンドでは、読出し対象とする追加情報を作成順番あるいは優先度などにより指定しても良い。また、読出し対象の追加情報を指定しない場合、直前のレスポンスデータで通知された追加情報が読み出されるようにしても良い。また、特殊コマンドでは、1つの追加情報だけでなく、複数の追加情報を読出対象として指定したり、追加情報テーブル13a´に記憶されている全部の追加情報を読出対象として指定したりすることも可能である。
【0168】
さらに、追加情報の読出しを要求する特殊コマンドでは、パラメータの設定により読み出した後の追加情報を削除するか保持するかを指定することも可能である。図15に示す例では、追加情報を指定する特殊コマンドでは、当該追加情報を読出し後に削除することが指定されているものとする。すなわち、図15に示す処理例では、読出し後の追加情報は削除されるものとする。なお、このような場合であっても、追加情報の優先度を発生頻度あるいは連続発生回数に応じて決定する場合には、当該追加情報を完全に削除せずに、当該追加情報の内容を別途記録しておくようにする。
【0169】
上記特殊コマンドを受信したICカード1のCPU11は、追加情報テーブル13a´から読出し対象となる追加情報を読み出し(ステップS252−1)、読み出した追加情報をセットしたレスポンスデータを作成する(ステップS252−2)。追加情報をレスポンスデータにセットすると、CPU11は、当該追加情報を追加情報テーブル13a´から削除する(ステップS252−3)。上記特殊コマンドで指定された追加情報をレスポンスデータにセットすると、ICカード1のCPU11は、当該レスポンスデータに処理の正常終了を示すステータスワードをセットしてICカード処理装置2へ送信する(ステップS253)。
【0170】
上記追加情報を含むレスポンスデータを受信した後、ICカード処理装置2は、追加情報に関連のない処理を要求するコマンド(特殊コマンド以外の通常コマンド)(図15の例では、CASE2のGET CHALLENGE コマンド)をICカード1へ供給したものとする(ステップS261)。通常コマンドを受信した場合、ICカード1は、追加情報テーブル13a´に優先度が高い追加情報が存在するか否かを確認する。
【0171】
ここでは、優先度が高い追加情報(優先度「5」)が削除されたため、CPU11は、追加情報テーブル13a´に優先度が高い追加情報が記憶されていないことを確認する(ステップS262−1)。この場合、ICカード1のCPU11は、当該コマンドの内容に従ってコマンド処理を実行する(ステップS262−2)。このコマンド処理が正常に実行されると、ICカード1のCPU11は、上記コマンド処理の結果として、コマンド処理により生成した乱数と処理が正常終了を示すステータスワードとをセットしたレスポンスデータを作成し、ICカード処理装置2へ送信する(ステップS263)。
【0172】
上記のように、本第3の処理例のICカードは、コマンド処理の実行中に発生したエラーなどの事象を示す詳細情報と当該詳細情報に対する優先度とを対応づけて記憶し、前記詳細情報の読出しを要求する特殊コマンドを受信した場合には前記詳細情報を出力し、前記特殊コマンド以外のコマンドを受信した場合には前記詳細情報の優先度に応じた処理を実行するようにしたものである。このような第3の処理例によれば、ICカードは、コマンド処理で生じた追加情報(詳細情報)を優先度に応じた効率的な処理により上位装置側に提供できる。
【0173】
いくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0174】
Ca…モジュール、C…筐体、1…ICカード、2…ICカード処理装置、11…CPU、12…ROM、13…RAM、13a(13a´)…追加情報(詳細情報)テーブル14…通信ユニット(UART)、15…コプロセッサ、16…不揮発性メモリ。
【技術分野】
【0001】
たとえば、携帯可能電子装置、ICカード、および携帯可能電子装置の制御方法に関する。
【背景技術】
【0002】
従来、携帯可能電子装置としてのICカードは、たとえば、メモリやCPUなどの機能を有したICモジュールがプラスチック板などで構成される筐体内に埋設されている。このようなICカードは、入退出管理、クレジットカード、携帯電話、電子商取引などの高いセキュリティ性が必要ないろいろな分野で使用されている。ICカードは、単体で動作することはなく、上位装置からのコマンドを受信し、受信したコマンドを解釈して処理を実行し、処理結果をレスポンスとして上位装置へ返信することによって動作する。つまり、ICカードは、通常、上位装置に対して完全なスレーブ状態であり、上位装置からのコマンドが無ければ動作することができない。このようなICカード処理システムでは、上位装置からICカードへ供給するコマンドのフォーマットとICカードから上位装置へ返信されるレスポンスのフォーマットとが厳格に決められる必要がある。たとえば、一般的なICカードに適用される国際標準規格としてのISO/IEC7816では、コマンドのフォーマットとレスポンスのフォーマットとの体系(コマンド体系)が規定されている。ICカードでは、上記のようなコマンド体系が予め規定されているため、レスポンスの自由度が少ないのが現状である。
【0003】
従来、ICカードを処理するICカード処理システムでは、実際の運用形態として、ICカードに対して簡単な処理を要求することがほとんどである。ICカードに要求する処理が簡単な処理のみであれば、ICカードから上位装置へのレスポンスに自由度がなくてもほとんど問題がない。これは、レスポンスに必ず含まれるステータスワードによって、簡単な情報をICカードから上位装置へ送信可能であるためである。たとえば、書込み系のコマンドに対するレスポンスに含まれるステータスワードでは、当該コマンドに対する処理結果として、「正常終了」、「ハードウェアが故障している」、「アクセス権限がない」、「対象のファイルが存在しない」などの情報を示すことが可能である。
【0004】
しかしながら、近年では、ICカード処理システムあるいはICカードに要求する処理が複雑化してきている。ICカード処理システムあるいはICカードに要求する処理が複雑化すると、コマンドに対する処理結果を示す情報が「ステータスワード」だけでは不十分なことが多くなる。エラーが発生した後の処理を効率的に実施するためには、エラー内容の詳細な情報を上位装置が把握することが必要となる。たとえば、書込み系のコマンドに対する処理に対するエラー時のレスポンスとしては、単に書込みエラーが発生したことだけでなく、「アドレスの○○○○○○○○番地が故障している」、もしくは、「論理チャネル○番が、既にファイルを占有しているために、書込みが実施できない」、といったエラー内容の詳細な情報を必要となる。しかしながら、現状のICカード処理システムでは、ステータスワード以外でエラーの詳細な内容を示す情報をICカードから上位装置へ提供することができない。
【0005】
また、書込み系コマンドに対しては、ステータスワードのみでレスポンスを返すコマンド体系が一般的である。すなわち、書込み系コマンドに対するレスポンスにステータスワード以外のエラーの詳細な内容を示す情報(レスポンスデータ)を追加するのは、書込み系コマンドに対するレスポンスのフォーマット自体を変更する必要がある。特定のコマンドに対するレスポンスのフォーマットを変更するには、コマンド体系全体を大きく変更しなければならなくなる。このようなコマンド体系全体の変更は、現実的ではないと考えられる。
【先行技術文献】
【非特許文献】
【0006】
【非特許文献1】ISO/IEC7816
【発明の概要】
【発明が解決しようとする課題】
【0007】
コマンド体系を変更することなく、コマンドに対する処理結果としての詳細な情報を送信可能な携帯可能電子装置、ICカード、および携帯可能電子装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
実施の形態としての携帯可能電子装置は、実行部と、生成部と、記憶部と、第1の処理部と、第2の処理部とを有する。実行部は、前記外部装置から受信したコマンドに応じたコマンド処理を実行する。生成部は、前記実行部により実行した前記コマンド処理の結果に関連する追加情報を生成する。記憶部は、前記生成部により生成した前記追加情報を記憶する。第1の処理部は、前記記憶部により前記生成部が生成した前記追加情報を記憶した場合、前記実行部によるコマンド処理の結果とともに、前記追加情報が有ることを示す情報を含むレスポンスを前記外部装置へ送信する。第2の処理部は、前記外部装置から前記追加情報を要求するコマンドを受信した場合、前記記憶部に記憶している前記追加情報を前記外部装置へ送信する。
【図面の簡単な説明】
【0009】
【図1】実施の形態に係る携帯可能電子装置としてのICカードのハードウエア構成を概略的に示すブロック図。
【図2】不揮発性メモリに記憶されるデータのファイル構成例を示す図。
【図3】ICカードにおけるソフトウエア構成を説明するための模式図。
【図4】ICカード処理システムに用いられるコマンド体系の例を示す図である。
【図5】ICカードにおけるコマンドに対する処理の流れを説明するためのフローチャートである。
【図6】書込み系のコマンド処理においてエラーが発生した場合の処理例を示すシーケンス図である。
【図7】複数の論理チャネルによる各ファイルへのアクセス状態の例を示す図である。
【図8】複数の追加情報が記憶可能な追加情報テーブルの構成例を示す図である。
【図9】ICカードにおけるコマンドに対する処理の流れを説明するためのフローチャートである。
【図10】最新の追加情報を読み出す場合の処理例を示すシーケンス図である。
【図11】別のコマンドを実行後に過去の追加情報を読み出す場合の処理例を示すシーケンス図である。
【図12】複数の追加情報が記憶可能な追加情報テーブルの構成例を示す図である。
【図13】ICカードにおけるコマンドに対する処理の流れを説明するためのフローチャートである。
【図14】最新の追加情報を読み出す場合の処理例を示すシーケンス図である。
【図15】別のコマンドを実行後に過去の追加情報を読み出す場合の処理例を示すシーケンス図である。
【発明を実施するための形態】
【0010】
以下、実施の形態について図面を参照して説明する。
【0011】
図1は、実施の形態に係る携帯可能電子装置としてのICカード1のハードウエア構成を概略的に示すものである。
ICカード1は、上位装置としてのICカード処理装置2からのコマンドに応じて処理を実行する。すなわち、ICカード1とICカード処理装置2とは、図1に示すようなICカード処理システムを構成している。
【0012】
図1に示すように、ICカード1は、CPU(セントラル・プロセッシング・ユニット)11、ROM(リード・オンリ・メモリ)12、RAM(ランダム・アクセス・メモリ)13、通信ユニット(UART)14、コプロセッサ(Co−Processor)15、および、不揮発性メモリ(NV(EEPROM))16などを有している。
【0013】
上記CPU11、ROM12、RAM13、通信ユニット14、コプロセッサ15および不揮発性メモリ16は、ICチップなどにより一体的に形成されたモジュールCaにより構成される。このモジュールCaは、当該ICカード1を形成する筐体(本体)Cの内部に埋設される。すなわち、上記ICカード1は、モジュールCaが埋設された筐体Cにより構成されている。
【0014】
また、上記ICカード1は、上位装置としての上記ICカード処理装置2から電力などの供給を受けた際、活性化し(動作可能な状態となり)、上記ICカード処理装置2からのコマンドに応じて動作するようになっている。ICカード処理装置2は、本ICカード1の通信方式に適合したリーダライタが接続されたパーソナルコンピュータなどにより構成される。たとえば、ICカード処理装置2は、図示しない制御部がアプリケーションプログラムを実行することにより、ICカード1に対してコマンドを送信したり、ICカード1からのレスポンスを受信したりする機能を実現している。
【0015】
上記CPU11は、当該ICカード1全体の制御およびデータ処理などを司るものである。上記CPU11は、制御プログラム等に基づいて動作することにより種々の処理を行う。上記ROM12は、制御用プログラムおよび制御データなどが予め格納されている不揮発性メモリである。上記RAM13は、ワーキングメモリとして機能する揮発性のメモリである。
【0016】
上記RAM13には、追加情報テーブル13a(13a´)が設けられる。上記追加情報テーブル13a(13a´)には、コマンドの処理結果などを示す追加情報(詳細情報)を複数件分保存する。上記追加情報テーブル13a(13a´)に保存される追加情報は、コマンドのレスポンスでは送信しきれない処理内容の詳細な内容を示す情報である。たとえば、コマンドの実行結果がエラーとなった場合、エラー内容の詳細を示す情報が追加情報(詳細情報)として追加情報テーブル13a(13a´)に保存される。上記追加情報テーブル13a(13a´)には、記憶する追加情報の最大件数が設定されるようにしても良い。なお、上記追加情報テーブル13a(13a´)がRAM13に設けられる場合、当該ICカード1の非活性化されると、追加情報テーブル13a(13a´)に記憶した追加情報がクリアされる。
【0017】
上記通信ユニット14は、通信手段として機能し、上位装置としてのICカード処理装置2とのデータ通信を制御するものである。また、上記通信ユニット14は、上記ICカード1が動作するための電源を受給する手段としても機能する。上記コプロセッサ15は、暗号化あるいは復号化などの演算の補助を行うものである。上記不揮発性メモリ16は、各種データやアプリケーション(アプリケーションプログラム)などを記憶する書き換え可能な不揮発性メモリである。なお、上記追加情報テーブル13aは、上記不揮発性メモリ16上に設けても良い。上記追加情報テーブル13aが不揮発性メモリ16に設けられる場合、当該ICカード1の非活性化されても、追加情報テーブル13aに記憶した追加情報は保持される。
【0018】
また、上記通信ユニット14は、ICカード1の通信方式に応じた構成を有している。たとえば、上記ICカード1の通信方式が接触式の通信方式である場合、上記通信ユニット14は、上位装置としてのICカード処理装置2のコンタクト部と物理的に接触するためのコンタクト部などにより構成される。この場合、ICカード1は、ICカード処理装置2と物理的に接触している上記通信ユニット14によりICカード処理装置2からの電源を受給する。つまり、上記ICカード1が接触式ICカードである場合、上記ICカード1は、通信ユニット14としてのコンタクト部を介してICカード処理装置2からの動作電源および動作クロックの供給を受けて活性化される。
【0019】
また、上記ICカード1の通信方式が非接触式(無線式)の通信方式である場合、上記通信ユニット14は、電波の送受信を行うアンテナおよび通信を制御する通信制御部等により構成される。この場合、上記ICカード1は、通信ユニット14により受信した電波から図示しない電源部により動作電源および動作クロックを生成するようになっている。つまり、上記ICカード1が非接触式ICカードである場合、上記ICカード1は、通信ユニット14としてのアンテナおよび通信制御部等を介してICカード処理装置2からの電波を受信し、その電波から図示しない電源部により動作電源および動作クロックを生成して活性化するようになっている。
【0020】
次に、上記不揮発性メモリ16に記憶されるデータの構成について説明する。
上記不揮発性メモリ16には、たとえば、ISO/IEC7816において定義されたファイル構造で各種のデータが記憶される。たとえば、上記不揮発性メモリ16には、複数階層構造(ツリー構造)で管理されるデータファイルとしてのファイル(EF:Elementary File)、および、データフォルダとしてのファイル(DF:Dedicated File)が記憶されている。
【0021】
図2は、上記不揮発性メモリ16に記憶されているファイル構造の例を示す図である。
図2に示す例では、最上位がマスタファイルとしてのファイル(MF:Master File)21である。上記MF21の配下には、フォルダとしてのDF(アプリケーションA)22A、および、フォルダとしてのDF(2アプリケーションB)22Bが設けられている。さらに、上記DF(アプリケーションA)22Aの配下には、データの格納などに使用されるEF(ファイルA1)23A1およびEF(ファイルA2)23A2が設けられている構成になっている。さらに、上記DF(アプリケーションB)22Bの配下には、データの格納などに使用されるEF(ファイルB1)23B1が設けられている構成になっている。このようなファイル構造では、各種のデータは、データファイルとしてのEFに記憶される。
【0022】
次に、上記ICカード1におけるソフトウエア構成について説明する。
上記ICカード1では、上述したように、CPU11がROM12あるいは不揮発性メモリ16に記憶されているプログラムを実行することにより、種々の処理を実現している。すなわち、上記ICカード1では、CPU11が実行するソフトウエアによってROM12、RAM13、不揮発性メモリ16、通信ユニット14あるいはコプロセッサ15などを制御することにより種々の処理を実現している。
【0023】
図3は、上記ICカード1におけるソフトウエア構成を模式的に示す図である。
上記ICカード1におけるソフトウエアは、ハードウエア(H/W)層31、OS(オペレーティングシステム)層32、および、アプリケーション層33から構成される。図3に示すように、上記ICカード1では、上記アプリケーション層33が最上位に位置し、上記OS層32が上記H/W層31の上位に位置するような構造となっている。
【0024】
上記H/W層31は、上記CPU11、ROM12、RAM13、通信ユニット14、コプロセッサ15、不揮発性メモリ16などのハードウエアから構成される。上記H/W層31の各ハードウエアは、上記OS層32からの処理要求に応じて処理を実行したり、実行した処理の結果を上記OS層32に送ったりするものである。
【0025】
上記OS層32は、当該ICカード1における基本的な制御を実行するためのプログラムとしてのカードOS(オペレーティングシステム)41を有する。なお、上記OS層32は、環境設定モジュール、アプリケーションインタフェース群などのモジュールなどを有するようにしても良い。上記カードOS41としてのソフトウエアは、当該ICカードの基本的な動作を司るプログラムであり、上記H/W層31の各ハードウエアを制御したり、各ハードウエアからの処理結果などの情報を受けて動作したりするプログラムである。上記カードOS41としてのソフトウエアは、ICカード内における不揮発性のメモリに予め記憶されているものであり、たとえば、上記ROM12などに記憶される。
【0026】
また、上記カードOS41は、当該ICカード1の基本動作を実現するためのH/W層の各ハードウエアを制御する基本機能に加えて、ロジカルチャネル管理機能42を有している。ロジカルチャネルとは、上記不揮発性メモリ16内の各ファイルあるいは各アプリケーションに対してアクセスするための論理的なチャネルを管理するものである。たとえば、複数の通信方式で通信を行っている場合、各通信方式ごとにロジカルチャネルが割り当てられる。このようなロジカルチャネルによる制御を行うことにより、ICカード1では、各チャネルごとに複数系列のコマンド群を処理することができる。たとえば、アプリケーションAでは、第1のチャネルでコマンド処理を実行し、アプリケーションBでは、第2のチャネルでコマンド処理を実行するという処理が可能となっている。
【0027】
上記ロジカルチャネル管理機能42は、上記のようなロジカルチャネルを管理する機能である。すなわち、上記ロジカルチャネル管理機能42は、ロジカルチャネルのオープン及びクローズを制御したり、アプリケーションプログラムに対してロジカルチャネルを割り当てたり、チャネル管理テーブル42aを用いてファイルあるいはアプリケーションに対する各ロジカルチャネルのアクセス順番を管理したりするものである。また、上記チャネル管理テーブル42aに記憶される情報は、各ロジカルチャネルでカレントとして設定するファイルあるいはアプリケーションプログラムなどの変更に応じて、テーブル更新機能42bにより更新される。
【0028】
上記アプリケーション層33は、各種の処理を実現するためのプログラムとしての各種のアプリケーション(アプリケーションA、アプリケーションB、…)から構成される。上記各アプリケーションとしてのソフトウエアは、当該ICカード1の運用形態に応じた各種の処理を実現するためのプログラムおよびデータなどにより構成される。上記アプリケーションとしてのソフトウエアは、予めICカード1内の不揮発性のメモリ16に記憶されたり、適宜外部装置からダウンロードしてICカード1内の不揮発性メモリ16に記憶されたりするものである。
すなわち、上記H/W層31の各ハードウエアは、上記OS層32のカードOS41により制御される。上記OS層32のカードOS41は、上記アプリケーション層33の各アプリケーションから要求に応じて各ハードウエアの動作を制御する。また、上記H/W層31の各ハードウエアによる処理結果等は、上記OS層32のカードOS41を介してアプリケーションへ供給される。たとえば、外部装置からのコマンドは、上記H/W層31のハードウエアにより受信され、上記OS層32のカードOS41へ供給される。上記カードOS41では、上記H/W層31で受信したコマンドを選択的にアプリケーション層33における特定のアプリケーションへ供給する。
【0029】
たとえば、上記H/W層31で外部装置からアプリケーション選択コマンドを受信した場合、上記カードOS41は、上記アプリケーション層33から当該アプリケーション選択コマンドで指定されたアプリケーションをカレント状態とする。この状態において上記H/W層31で外部装置からコマンドを受信した場合、上記カードOS41は、当該コマンドをカレント状態のアプリケーションへ供給する。これにより、アプリケーション層33の各アプリケーションは、上記OS層32のカードOS41から供給されるコマンドに応じた処理を実行する。すなわち、上記カードOS41は、カレント状態のアプリケーション(以下、カレントアプリケーションとも称する)を指定し、カレントアプリケーションに対してコマンドを供給するようになっている。
【0030】
次に、ICカード処理システムに用いられるコマンド体系について説明する。
上述したように、ICカード1は、ICカード処理装置2からのコマンドに応じて処理を実行し、その処理結果をレスポンスとしてICカード処理装置2へ送信する。このようなシステムでは、コマンドとレスポンスとによる動作を実現するためのコマンド体系を予め規定しておく必要がある。つまり、ICカード処理システムでは、事前に定められているコマンド体系で実現される。
【0031】
図4は、ICカード処理システムに用いられるコマンド体系の例を示す図である。図4に示すコマンド体系は、ICカードの国際標準規格であるISO/IEC7816で規定されているものを想定している。図4に示す例では、コマンド体系として、コマンドのフォーマットに対応するICカードが出力するレスポンスのフォーマットが予め規定されている。図4に示す例では、4通りのパターンが規定されている。
【0032】
図4に示すCASE1では、コマンドヘッダのみからなるコマンドに対して、ICカードがステータスワードのみからなるレスポンスを返すように規定されている。なお、コマンドヘッダは、コマンドの種類を示す情報と処理のパラメータとからなる。また、ステータスワードは、所定のコード情報(番号)により処理結果を示す。このCASE1に該当するコマンドは、データを供給する必要がない処理をICカードに要求し、ICカードから処理が成功したか否かのみを受信するためのコマンドである。
【0033】
図4に示すCASE2は、コマンドヘッダとレスポンスデータ長(Le)とからなるコマンドに対して、ICカードがレスポンスデータとステータスワードとからなるレスポンスを返すように規定されている。なお、レスポンスデータ長は、コマンドに対するレスポンスにおいてICカードが送信するレスポンスデータのサイズを指定する情報である。このCASE2に該当するコマンドは、データの供給無しで、かつ、処理結果としてのデータが得られる処理をICカードに要求し、ICカードから処理結果としてのデータ(レスポンスデータ)を受信するためのコマンドである。たとえば、ICカードに対してメモリに記憶されているデータの読出しを要求するコマンドは、CASE2のコマンドに含まれる。
【0034】
図4に示すCASE3では、コマンドヘッダ、データ長(Lc)、および、コマンドデータからなるコマンドに対して、ICカードがステータスワードのみからなるレスポンスを返すように規定されている。なお、コマンドデータは、データ長で指定されるサイズのデータである。このCASE3に該当するコマンドは、供給するコマンドデータを用いた処理の実行をICカードに要求し、ICカードから処理が成功したか否かを示すステータスワードを受信するためのコマンドである。たとえば、ICカードに対してコマンドデータの書込みを要求するコマンドは、CASE3のコマンドに含まれる。
【0035】
図4に示すCASE4では、コマンドヘッダ、データ長(Lc)、コマンドデータ、および、レスポンスデータ長(Le)からなるコマンドに対して、ICカードがレスポンスデータとステータスワードとからなるレスポンスを返すように規定されている。このCASE4に該当するコマンドは、コマンドデータを用いた処理をICカードに要求し、ICカードから処理結果としてのレスポンスデータを受信するためのコマンドである。
【0036】
次に、コマンドに対応する処理でエラーが発生した場合のICカードにおける処理について説明する。
【0037】
以下、本実施の形態では、ICカード1は、図4に示すようなISOで規定されたコマンド体系で動作するものであることを前提とする。図4に示すようなコマンド体系では、レスポンスデータ長が設定されていないコマンドに対しては、ステータスワード以外のレスポンスデータを送信することができない。ステータスワードは、データサイズ(たとえば、2バイト)が規定されており所定のコード情報によってコマンド処理の結果を通知するものである。
【0038】
すなわち、上述したCASE1或いはCASE3のコマンドに対するレスポンスとして許容されるステータスワードだけでは、各コマンドに対する処理において発生した種々の状況を詳細に通知することができないことがある。たとえば、CASE3の書込みコマンドに対する処理において書込みエラーが発生した場合、ICカード1は、当該書込みコマンドに対するレスポンスとして、書込みエラーが発生したことをステータスワードのみを通知することが許容されているが、書込みエラーの詳細な内容(エラーの原因、エラーが発生したメモリアドレス等)を通知することはできない。
【0039】
また、CASE2或いはCASE4のコマンドであっても、コマンドに対するレスポンスとして送信可能なレスポンスデータは、規定のデータでなければならない。これは、システム全体としての処理の整合性を保つために、コマンドで指定されたデータ以外のデータをレスポンスデータとすることができないことを意味している。たとえば、CASE2の読出しコマンドに対してレスポンスにおけるレスポンスデータは、指定された読出しデータでなければならず、それ以外のデータをレスポンスデータすることはできない。
【0040】
上記のようなコマンド体系は、予め規定されているものであるから遵守しなければならない。本ICカード1では、上記のようなコマンド体系に従って動作しつつ、エラーの詳細な内容などの情報を上位装置へ提供できるものである。すなわち、ICカード1は、上位装置からのコマンドに対する処理においてエラーが発生した場合、エラーの詳細な内容を示す追加情報を生成してメモリに保持する機能を有する。さらに、ICカード1は、メモリに保持した追加情報を上位装置からの要求(コマンド)に応じて送信する。
【0041】
次に、上記のような動作を実現するICカード1におけるコマンド処理の例について説明する。
まず、第1の処理例について説明する。
図5は、ICカード1におけるコマンドに対する第1の処理例の流れを説明するためのフローチャートである。
電源供給を受けているICカード1では、待機状態において、通信ユニット14によりICカード処理装置2からのコマンドが受信可能となっている(ステップS11)。この状態においてICカード処理装置2からのコマンドを上記通信ユニット14が受信した場合(ステップS11、YES)、ICカード1のCPU11は、受信したコマンドが追加情報を要求するコマンドであるか否かを判断する(ステップS12)。追加情報を要求するコマンドは、予め規定される特殊コマンドである。たとえば、追加情報有りを含むステータスワードをセットしたレスポンスを送信した直後に受信するゲットレスポンスコマンド(ISOで規定されているCASE2のGET RESPONSE Command)を追加情報を要求する特殊コマンドとして規定しても良い。
【0042】
上記判断により受信したコマンドが追加情報を要求するコマンドでないと判断した場合(ステップS12、NO)、CPU11は、当該受信したコマンドに応じた処理(コマンド処理)を実行する(ステップS13)。CPU11は、当該コマンドのコマンドヘッダで指定されている処理内容を判別することによりコマンド処理を実行する。
このコマンド処理が正常に成功した場合(ステップS14、NO)、CPU11は、ステータスワード(SW)に処理成功を示す情報(コード情報)をセットしたレスポンスを生成し(ステップS15)、生成したレスポンスをICカード処理装置2へ送信する(ステップS16)。
【0043】
また、コマンド処理においてエラーが発生した場合(ステップS14、YES)、CPU11は、エラーの詳細な内容を示す追加情報を生成する(ステップS17)。エラーの詳細な内容としては、エラーの原因、あるいは、エラーの具体的な内容(エラーが発生した処理工程)などが考えられる。たとえば、書込み系のコマンド処理におけるエラーでは、エラー原因としては、アクセス権無し、メモリ異常、あるいは、動作電圧低下などが考えられ、エラーの具体的な内容としては、書込みエラーとなったメモリアドレスを示す情報などが考えられる。
【0044】
上記のような追加情報を生成すると、CPU11は、生成した追加情報をRAM13或いは不揮発性メモリ16に保持する(ステップ18)。追加情報をRAM13あるいは不揮発性メモリ16に保持すると、CPU11は、ステータスワード(SW)に、エラーが発生したことを示す情報(コード情報)と追加情報有りを示す情報とをセットしたレスポンスを生成する(ステップS19)。ステータスワードをセットしたレスポンスを生成すると、CPU11は、生成したレスポンスをICカード処理装置2へ送信する(ステップS16)。
なお、ICカード1のCPU11は、追加情報有りのステータスワードを送信したことを示す情報(あるいは追加情報を保持していることを示す情報)をRAM13等に保持しておくようにしても良い。たとえば、追加情報有りのレスポンスを送信した直後の特定のコマンド(例えばゲットレスポンスコマンド)を追加情報の読出しを要求する特殊コマンドとする場合、追加情報を保持していることを示す情報は、当該レスポンスを送信した後、次のコマンドを受信するまで保持するようにすれば良い。
【0045】
また、上記ステップS12の判断により受信したコマンドが追加情報を要求するコマンドであると判断した場合(ステップS12、YES)、CPU11は、RAM13あるいは不揮発性メモリ16から追加情報を読み出す(ステップS20)。追加情報を読み出すと、CPU11は、読み出した追加情報をレスポンスデータにセットし(ステップS21)、ステータスワードに処理成功を示す情報をセットしたレスポンスを生成する(ステップS13)。追加情報をレスポンスデータにセットしたレスポンスを生成すると、CPU11は、生成したレスポンスを追加情報を要求するコマンドに対するレスポンスとしてICカード処理装置2へ送信する(ステップS16)。
【0046】
なお、上記した第1の処理例では、コマンド処理においてエラーが発生した場合にエラーの詳細な内容を示す追加情報を生成するものとしたが、これに限らず、コマンド処理が成功した場合であっても、コマンド処理の詳細な結果を示す追加情報を生成するようにしても良い。すなわち、コマンド処理が成功した場合であっても処理結果としてステータスワードだけでは通知しきれない情報がある場合には、追加情報してメモリに保持しておき、当該コマンドに対するレスポンスで追加情報があることを通知するようにしても良い。
【0047】
上記のように、第1の処理例のICカード1では、上位装置から受信したコマンドに対する処理においてエラーが発生した場合、エラーの詳細な内容を示す追加情報を生成してメモリに保持しておき、当該コマンドに対するレスポンスでは追加情報があることを通知する。このようなレスポンスに対して上位装置から追加情報が要求するコマンドを受信した場合、ICカード1は、保持した追加情報をレスポンスデータにセットしたレスポンスを送信する。
【0048】
言い換えれば、第1の処理例のICカード1は、ICカード処理装置2からのコマンドの実行結果としてステータスワードだけでは示せない詳細情報(追加情報)がある場合、当該コマンドに対するレスポンスのステータスワードにおいて上記詳細情報が存在することを示し、当該レスポンス後に上記詳細情報の読出しを要求するコマンドを受信した場合、上記詳細情報をICカード処理装置2へ送信する。
【0049】
上記のような第1の処理例のICカード1によれば、既存のコマンド体系のままであっても、エラーの詳細な内容などのコマンド処理結果の詳細情報(追加情報)を上位装置に通知する機能を提供できる。この結果として、上位装置では、詳細情報(追加情報)で示される情報に基づいて効率的な処理をICカードに実行させることができる。
【0050】
次に、ICカード処理システム全体におけるコマンド処理の例について説明する。
ここでは、書込み系のコマンドに対する処理においてエラーが発生した場合の処理について説明するものとする。また、書込み処理におけるエラーの原因としては、アクセス権無し、メモリ異常、あるいは、動作電圧低下などが考えられる。
【0051】
たとえば、書込み系のコマンドを受信した場合に、既に他の論理チャネルが書込み対象とするファイルを占有している状態であれば、アクセス権無しのため、書込みエラーとなるものとする。このような場合、ICカード1は、書込みが出来なかった理由(他の論理チャネルによるアクセス対象ファイルの占有)を追加情報として生成して保持しておく。この状態で、ICカード1は、「書込み失敗」と共に「追加情報あり」を示すステータスワードをセットしたレスポンスを送信することにより受信したコマンドに対する処理を終了する。その後、追加情報を要求する特殊コマンドを受信した場合、ICカード1は、書込みが出来なかった理由を示す追加情報を送信する。
【0052】
図6は、第1の処理例としての書込み系のコマンド処理においてエラーが発生した場合のシーケンス図である。
以下の説明では、ICカード1は、図2に示すように、アプリケーションA、B、ファイル(EF)A1,A2,B1が存在することを想定する。さらに、ICカード1は、ロジカルチャネル管理機能42により管理する複数の論理チャネルでのアクセス状態が図7に示すような状態である場合を想定する。図7に示す例では、論理チャネル(Ch.0)がファイルA1をカレントに設定している状態を示している。
【0053】
上位装置としてのICカード処理装置2は、ICカード1内のファイルA1にデータを書き込むための準備として、論理チャネル(Ch.1)の開設とアプリケーションAの選択を要求するコマンドをICカード1に送信する(ステップS31)。これに対して、ICカード1は、論理チャネル(Ch.1)を開設してアプリケーションAを選択するコマンド処理を実行する。論理チャネル(Ch.1)の開設とアプリケーションAの選択とが成功すると、ICカード1は、当該コマンド処理が成功したことを示すステータスワードをセットしたレスポンスをICカード処理装置2へ送信する(ステップS32)。
【0054】
論理チャネル(Ch.1)の開設とアプリケーションAの選択を要求するコマンドに対する処理が成功した旨のレスポンスを受けると、ICカード処理装置2は、ファイルA1の選択を要求するコマンドをICカード1に対して送信する(ステップS33)。これに対して、ICカード1は、論理チャネル(Ch.1)におけるカレントファイルをファイルA1に設定するコマンド処理を実行する。論理チャネル(Ch.1)におけるカレントファイルをファイルA1に設定する処理が成功すると、ICカード1は、コマンド処理が成功したことを示すステータスワードをセットしたレスポンスをICカード処理装置2へ送信する(ステップS34)。
【0055】
ファイルA1の選択を要求するコマンドに対する処理が成功した旨のレスポンスを受けると、ICカード処理装置2は、ファイルA1に対するデータの書込みを要求する書込みコマンドをICカード1に対して送信する(ステップS35)。この書込みコマンドは、CASE3のファーマットで構成される。これに対して、ICカード1は、書込みコマンドに応じた書込み処理を実行する(ステップS36)。
【0056】
このような書込みコマンドに対する処理において、まず、ICカード1のCPU11は、カレントファイルに設定されているファイルA1へのアクセス権限の確認する(ステップS36−1)。当該書込みコマンドに対する処理は、論理チャネルが「Ch.1」でカレントファイルとしてのファイルA1にデータを書込む処理である。ここでは、ICカード1は、図7に示すように、論理チャネル「Ch.0」でファイルA1をカレントファイルに設定している状態である。このため、ICカード1のCPU11は、論理チャネル「Ch.1」でのファイルA1に対する書込み権限がないものと判断する(ステップS36−2)。このような書込み権限無しの判断に基づいて、ICカード1のCPU11は、当該コマンド処理(データの書込み処理)を実施せずに中止する(ステップS36−3)。
【0057】
受信した書込みコマンドに対応するコマンド処理を中止すると、ICカード1のCPU11は、当該コマンド処理を中止した詳細な理由を示す追加情報を作成する(ステップS36−4)。ここでは、コマンド処理を中止した理由(エラーの詳細な内容)は、論理チャネル「Ch.0」が既にファイルA1にアクセス中であることである。このため、ICカード1のCPU11は、コマンド処理を中止の理由(例えば、「ファイルA1に対する当該論理チャネル(Ch.1)のアクセス優先権が2番目」、「ファイルA1には論理チャネル(Ch.0)がアクセス中」など)を示す追加情報を作成する。このように作成した追加情報は、CPU11によりRAM13あるいは不揮発性メモリ16に保持される。
【0058】
上記追加情報を保持した状態において、ICカード1のCPU11は、「書込み異常」となったことを示すコード情報とともに、「追加情報あり」を示すステータスワードをセットしたレスポンスを作成する(ステップS36−5)。「書込み異常」と「追加情報有り」とを示すステータスワードをセットしたレスポンスを作成すると、ICカード1のCPU11は、作成したレスポンスをICカード処理装置2へ送信し(ステップS37)、当該書込みコマンドに対する処理を終了する。
【0059】
ICカード処理装置2は、追加情報有りを含むレスポンスを受信すると、追加情報が必要であるか否かを判断する。追加情報の要否は、予め設定しておくようにしても良いし、ICカード処理装置2のオペレータが適宜選択するようにしても良い。ICカード処理装置2は、追加情報の要否の判断結果に基づいて当該ICカード1に次に供給するコマンドを決定する。
【0060】
たとえば、上記追加情報が必要であると判断した場合、ICカード処理装置2は、次のコマンドとして、追加情報を取得するためのCASE2の特殊コマンド(例えば、CASE2のGET RESPONSEコマンド)を送信する(ステップS38)。これに対して、ICカード1は、追加情報を読出すコマンド処理を実行する(ステップS39)。この場合、特殊コマンドは、CASE2であるため、ICカード1のCPU11は、ステータスワードだけでなくレスポンスデータを返信することが可能である。
【0061】
すなわち、追加情報を要求する特殊コマンドに対する処理として、ICカード1のCPU11は、RAM13あるいは不揮発性メモリ16に保持している追加情報を読み出し、読み出した追加情報をレスポンスデータにセットしたレスポンスとしてICカード処理装置2へ送信する。レスポンスデータとして追加情報を送信した場合、ICカード1のCPU11は、RAM13あるいは不揮発性メモリ16に保持している追加情報を削除する。なお、追加情報は削除せずに保持しておくようにしても良い。
【0062】
また、上記追加情報が不要であると判断した場合、ICカード処理装置2は、追加情報を取得するための特殊コマンドを送信する必要はない。この場合、ICカード処理装置2は、追加情報を取得するための特殊コマンド以外の通常のコマンドを送信しても良い。なお、ICカード1では、追加情報有りのステータスワードを含むレスポンスを送信した後に追加情報を取得するための特殊コマンド以外の通常のコマンドを受信した場合、受信したコマンドに応じたコマンド処理を実行する。このような通常のコマンドを実行した場合、ICカード1は、RAM13あるいは不揮発性メモリ16に保持している追加情報を削除する。なお、この場合も、追加情報は削除せずに保持しておくようにしても良い。
【0063】
上記のように、本第1の処理例のICカードは、書込みコマンドで指定された書込み処理において書込みエラーが発生した場合、書込みエラーとなった原因あるいは書込みエラーとなったメモリアドレスなどを示す情報を追加情報として保持しておき、上記書込みコマンドに対するレスポンスとして「正常終了しなかったこと(書込みエラーとなったこと)」と「追加情報があること」とを示すステータスワードを送信する。その後、ICカードは、上位装置からの追加情報を要求する特殊コマンドを受信した場合に、保持している上記追加情報を送信する。
【0064】
たとえば、書込みコマンドで指定された書込み対象とするファイルが別のチャネルでアクセスされているためにデータの書込みが出来ない場合、本ICカードは、別のチャネルが書込み対象のファイルにアクセスしているという情報を追加情報として保持しておき、上記書込みコマンドに対するレスポンスとして「正常終了しなかったこと」と「追加情報があること」とを示すステータスワードを送信する。その後、ICカードは、上位装置から追加情報を要求する特殊コマンドを受信した場合、別のチャネルが書込み対象のファイルにアクセスしている旨の追加情報を送信する。
【0065】
また、書込みコマンドで指定された書込み処理においてメモリ異常によりデータの書込みが出来ない場合、第1の処理例のICカードは、メモリ異常が発生したメモリアドレスを示す情報を追加情報として保持しておき、上記書込みコマンドに対するレスポンスとして「正常終了しなかったこと」と「追加情報があること」とを示すステータスワードを送信する。その後、ICカードは、上位装置からの追加情報を要求する特殊コマンドを受信した場合、メモリ異常が発生したメモリアドレスを示す追加情報を送信する。
【0066】
上記のような第1の処理例によれば、ICカードは、既存のコマンド体系のままであっても、コマンドに対するレスポンスで送信しきれない追加情報を上位装置へ提供することが可能となる。この結果として、上位装置では、追加情報から得られる書込みエラーの詳細な内容に応じて効率的な処理をICカードに実行させることができる。
【0067】
次に、ICカード1におけるコマンド処理の第2の処理例について説明する。
第2の処理例においても、ICカード1は、予め規定されている上記したコマンド体系を遵守するものとする。本第2の処理例において、ICカード1は、上記のようなコマンド体系に従って動作しつつ、エラーの詳細な内容などの情報を上位装置へ提供する。たとえば、ICカード1は、上位装置から与えられたコマンドの実行処理においてエラーが発生した場合、エラー内容の詳細な情報を示す追加情報を生成し、生成した追加情報を追加情報テーブル13aに保存する。さらに、ICカード1は、追加情報テーブル13aに保存した追加情報を上位装置からの要求に応じて送信する。
【0068】
次に、第2の処理例に係る追加情報テーブル13aの構成について説明する。
図8は、第2の処理例に係る追加情報テーブル13aの構成例を示す図である。
上記追加情報テーブル13aには、複数件の追加情報(詳細情報)が保存可能である。上記追加情報テーブル13aに追加情報として保存可能な件数(最大件数)は、予め設定可能である。たとえば、上記追加情報テーブル13aに保存可能な追加情報の最大件数は、当該ICカード1の発行処理時に設定される。
【0069】
上記追加情報テーブル13aには、作成順番、処理コマンド情報、および追加情報などを対応づけて記憶する。追加情報は、実行した処理コマンドの実行結果に関連する詳細な情報である。ここで、追加情報としては、実行した処理コマンドのレスポンスデータでは伝えきれない情報を想定する。たとえば、実行した処理コマンドの実行結果がエラーとなった場合、ICカード1は、エラー内容の詳細を示す情報を追加情報として生成する。図8に示す例では、書込みコマンドに対する追加情報として、書込み対象のファイルにはチャネル「Ch.0」でアクセス中であったため、書込みがエラーとなった旨が記憶されている。追加情報は、処理結果としてステータスワードだけでは通知しきれない情報であり、エラー内容の詳細を示す情報に限らない。たとえば、コマンドの処理が成功した場合であっても、ICカード1では、当該コマンドの実行結果に関連する情報を追加情報として生成するようにしても良い。
【0070】
また、作成順番は、対応する追加情報を作成した順番(保存した順番)を示す情報である。複数の追加情報を追加情報テーブル13aに保存する場合、各追加情報には、新しい順に作成順番が付与される。このため、追加情報テーブル13aに追加情報が保存されるごとに、各追加情報の作成順番が更新される。
【0071】
処理コマンド情報は、追加情報が発生した処理コマンドの内容を示す情報である。処理コマンド情報は、実行結果に関連する追加情報が生成された処理コマンド自体を示す情報である。たとえば、処理コマンド情報としては、実際に受信したコマンドの一部が記憶される。図8に示す例では、処理コマンド情報として、WRITE COMMANDの一部のデータ(00h D0h 00h 00h 10h 11h 12h)が記憶されている。これにより、上位装置としてのICカード処理装置2は、後述する追加情報の読出を要求する特殊コマンドにおいて、特定の追加情報を処理コマンド情報により指定することが可能となる。
【0072】
次に、上記ICカード1におけるコマンド処理の第2の処理例の流れを説明する。
図9は、ICカード1におけるコマンドに対する第2の処理例の流れを説明するためのフローチャートである。
電源供給を受けているICカード1では、待機状態において、通信ユニット14によりICカード処理装置2からのコマンドが受信可能となっている(ステップS111)。この状態においてICカード処理装置2からのコマンドを上記通信ユニット14が受信した場合(ステップS111、YES)、ICカード1のCPU11は、受信したコマンドが追加情報を要求するコマンドであるか否かを判断する(ステップS112)。追加情報の読出しを要求するコマンドは、予め規定される特殊コマンドであるものとする。この場合、CPU11は、受信コマンドが特殊コマンドか否かを判断する。
【0073】
なお、追加情報の読出しを要求する特殊コマンドとしては、後述する図7或は図8に示す例のように、ゲットレスポンスコマンド(ISOで規定されているCASE2のGET RESPONSE Command)を用いることができる。このような特殊コマンドでは、読出対象とする追加情報、あるいは、読出し後の追加情報に対する処理内容(削除するか否か)がパラメータなどにより指定可能となっている。
【0074】
上記判断により受信したコマンドが追加情報の読出しを要求する特殊コマンドでないと判断した場合(ステップS112、NO)、CPU11は、当該受信したコマンド(処理コマンド)に応じた処理を実行する(ステップS113)。CPU11は、コマンドヘッダで指定される処理内容を判別することにより当該処理コマンドで要求された処理を実行する。
当該処理コマンドの実行結果として追加情報(詳細情報)が無い場合(ステップS114、NO)、CPU11は、ステータスワード(SW)に処理結果を示す情報(コード情報)をセットしたレスポンスデータを生成し(ステップS115)、生成したレスポンスデータをICカード処理装置2へ送信する(ステップS116)。たとえば、書込みコマンドに対して正常に処理が完了した場合、CPU11は、処理成功を示す情報(コード情報)をセットしたレスポンスデータを生成してICカード処理装置2へ送信する。当該レスポンスを送信した後、ICカード1は、次のコマンドが受信可能な状態となる。
【0075】
また、処理コマンドの実行結果として追加情報(詳細情報)が有る場合(ステップS114、YES)、CPU11は、処理コマンドの実行結果に関連する詳細な内容を示す追加情報(詳細情報)を生成する(ステップS117)。追加情報は、処理コマンドの実行結果として、当該処理コマンドに対する通常のレスポンスデータでは送信しきれない情報である。たとえば、書込みコマンドの処理でエラーが発生した場合、CPU11は、追加情報として、エラーの原因、あるいは、エラーの具体的な内容(エラーが発生した処理工程)などを示す情報を含む詳細情報を生成する。なお、書込み系のコマンド処理におけるエラーでは、エラー原因としては、アクセス権無し、メモリ異常、あるいは、動作電圧低下などが考えられ、エラーの具体的な内容としては、書込みエラーとなったメモリアドレスを示す情報などが考えられる。
【0076】
上記のような追加情報を生成すると、CPU11は、既に追加情報テーブル13aに記憶されている追加情報の件数が所定の最大件数であるか否かを判断する(ステップS118)。最大件数は、たとえば、ICカード1の発行処理時に設定される値である。既存の追加情報の件数が最大件数未満である場合(ステップS118、NO)、CPU11は、生成した追加情報を追加情報テーブル13aに新規に記憶(追記)する(ステップS119)。また、既存の追加情報の件数が最大件数である場合(ステップS118、YES)、CPU11は、生成した追加情報を追加情報テーブル13aに保存されている最古の追加情報に上書きする(ステップS120)。これにより、既存の追加情報の件数が最大件数である場合、追加情報テーブル13aでは、既存の追加情報のうち最古の追加情報が削除され、新たに生成した最新の追加情報が保存される。
【0077】
追加情報テーブル13aに生成した追加情報を記憶すると、CPU11は、当該追加情報が発生したコマンドの内容を示す情報(図5に示す処理コマンド情報)を当該追加情報に対応付けて追加情報テーブル13aに記憶する(ステップS121)。追加情報が発生したコマンドの内容を示す情報は、上位装置(ICカード処理装置)が特定の追加情報を指定するための情報である。たとえば、追加情報が発生したコマンドの内容を示す情報としては、図5に示すような当該コマンドの一部の情報を用いることができる。
【0078】
上記追加情報テーブル13aに追加情報とコマンド内容を示す情報とを記憶すると、CPU11は、追加情報テーブル13aに保存されている各追加情報に対応する作成順番を更新する(ステップS122)。たとえば、追加情報テーブル13aに1つ目の追加情報を記憶する場合、CPU11は、当該追加情報に対する作成順番を「1」として記憶する。また、追加情報テーブル13aに既に追加情報が記憶されている場合、CPU11は、既存の追加情報の作成順番をインクリメント(1加算)し、新たに記憶した追加情報(最新の追加情報)に対する作成順番を「1」として記憶する。これにより、追加情報テーブル13aでは、各追加情報に対する作成順番が新しい順になるように更新される。
【0079】
なお、上記追加情報テーブル13aは、RAM13に設けられる。RAM13に設けた追加情報テーブル13aは、当該ICカード1がリセットされるごとに保存した追加情報としての詳細情報をクリアする。つまり、RAM13に設けたエラー情報テーブル13aは、ICカード1のリセットに伴ってリセットされる。言い換えると、ICカード1のリセットするごとに追加情報もリセットしたい場合、エラー情報テーブル13aは、RAM13に設けられる。
【0080】
また、エラー情報テーブル13aは、不揮発性メモリ16に設けても良い。不揮発性メモリ16に設けたエラー情報テーブル13aは、ICカード1の電源がオフとなっても追加情報を保持する。つまり、不揮発性メモリ16に設けたエラー情報テーブル13aは、コマンドによって上書き或は削除などの処理が行われなければ、追加情報としての詳細情報が保持される。言い換えると、ICカードが非活性化されても追加情報を保持したい場合、エラー情報テーブル13aは、不揮発性メモリ16に設けられる。
【0081】
追加情報テーブル13aに追加情報、処理コマンド情報、および作成順番を保存すると、CPU11は、ステータスワード(SW)にコマンド処理結果を示す情報(コード情報)と追加情報有りを示す情報とをセットしたレスポンスデータを生成する(ステップS123)。追加情報有りを示す情報をセットしたレスポンスデータを生成すると、CPU11は、生成したレスポンスをICカード処理装置2へ送信する(ステップS116)。当該レスポンスを送信した後、ICカード1は、次のコマンドが受信可能な状態となる。
【0082】
また、上記ステップS112で受信したコマンドが追加情報の読出しを要求する特殊コマンド(以下、単に特殊コマンドとも称する)であると判断した場合(ステップS112、YES)、CPU11は、追加情報テーブル13aに記憶されている追加情報から読出対象とする追加情報を特定する処理を行う(ステップS125)。読出対象とする追加情報は、追加情報の読出しを要求する特殊コマンドの内容(パラメータ或は受信タイミング)に基づいて判断される。
【0083】
上記第2の処理例では、追加情報テーブル13aは、追加情報に対応づけて、作成順序および処理コマンド情報を記憶している。このため、追加情報の読出しを要求する特殊コマンドでは、作成順番、あるいは処理コマンド情報により特定の追加情報を指定することが可能である。また、特定の追加情報が指定されない特殊コマンドに対しては、最新の追加情報を読出対象の追加情報とするようにしても良い。なお、上記特殊コマンドでは、複数の追加情報を指定したり、全ての追加情報を指定したりすることもできる。このような特殊コマンドに対しては、CPU11は、複数の追加情報、或は全ての追加情報を読出対象と判定する。
【0084】
読出対象の追加情報を特定すると、CPU11は、特定した読出対象の追加情報を追加情報テーブル13aから読み出し(ステップS126)、読み出した追加情報をセットしたレスポンスデータを生成する(ステップS127)。
読出対象の追加情報をセットしたレスポンスデータを生成すると、CPU11は、読み出した追加情報を削除するか保存しておくかを判断する(ステップS128)。読み出した追加情報を削除するか否かは、前記特殊コマンドのパラメータで指定できるようにしても良いし、予め何れかに設定しておくようにしても良い。たとえば、前記特殊コマンドで読出した追加情報を削除するか否かを指定できるようにする場合、CPU11は、受信した特殊コマンドのパラメータにより読出し後の追加情報を削除するか否かを判断する。
【0085】
読出した追加情報を削除すると判断した場合(ステップS128、YES)、CPU11は、読み出した追加情報を追加情報テーブル13aから削除する(ステップS129)。この場合、CPU11は、追加情報テーブル13aに残った追加情報に対する作成順番を更新するようにしても良い。なお、ステップS128及びS129の処理は、読み出した追加情報をレスポンスデータにセットした後、或はレスポンスデータを送信した後に実行するようにしても良い。
【0086】
上記特殊コマンドで指定された読出対象の追加情報をレスポンスデータにセットすると、CPU11は、読出対象の追加情報をセットしたレスポンスデータにステータスワードに処理成功を示す情報をセットし(ステップS115)、上記特殊コマンドに対するレスポンスとしてICカード処理装置2へ送信する(ステップS116)。
【0087】
上記のように、第2の処理例のICカードでは、上位装置から受信した処理コマンドに対する実行結果としてステータスワードでは示せない追加情報(詳細情報)がある場合、追加情報を生成し、生成した追加情報を当該処理コマンドを示す情報および作成順番に対応づけて追加情報テーブルに保存しておき、当該処理コマンドに対するレスポンスでは追加情報があることを通知する。追加情報テーブルに保存した追加情報の読出しを要求する特殊コマンドを上位装置から受信した場合、ICカードは、当該特殊コマンドで指定される追加情報を特定し、特定した追加情報をセットしたレスポンスデータを生成して上位装置へ送信する。
【0088】
上記のような第2の処理例によれば、ICカード1は、既存のコマンド体系のままで、エラー内容の詳細情報などの処理コマンドの実行結果に関わる追加情報(詳細情報)を複数件数分保存することができ、保存した追加情報を上位装置からの要求に応じて任意のタイミングで通知する機能を提供できる。この結果として、上位装置では、詳細情報(追加情報)で示される情報に基づいて効率的な処理をICカードに実行させることができる。
【0089】
次に、ICカード処理システム全体における第2の処理例の流れを具体例を用いて説明する。
まず、コマンドの実行結果として生成した最新の追加情報(詳細情報)を読み出す場合の具体例について説明する。
図10は、最新の追加情報を読み出す場合の処理例を示すシーケンス図である。図10は、書込み系のコマンド処理においてエラーが発生した場合の処理例を示すシーケンスを示している。なお、書込み処理におけるエラーの原因としては、アクセス権無し、メモリ異常、あるいは、動作電圧低下などが考えられる。
【0090】
たとえば、書込み系のコマンドを受信した場合、既に他の論理チャネルが書込み対象とするファイルを占有している状態であれば、アクセス権無しのため、書込みエラーとなるものとする。このような場合、ICカード1は、書込みが出来なかった理由(他の論理チャネルによるアクセス対象ファイルの占有)を追加情報として生成して保持しておく。この状態で、ICカード1は、「書込み失敗」と共に「追加情報あり」を示すステータスワードをセットしたレスポンスを返信することにより、受信した書込みコマンドに対する処理を終了する。その後、追加情報を要求する特殊コマンドを受信した場合、ICカード1は、書込みが出来なかった理由を示す追加情報を送信する。
【0091】
ここで、ICカード1は、図2に示すように、アプリケーションA、B、ファイル(EF)A1,A2,B1が存在することを想定する。さらに、ICカード1は、ロジカルチャネル管理機能42により管理する複数の論理チャネルでのアクセス状態として、論理チャネル「Ch.0」がファイルA1をカレントに設定している状態を想定するものとする。
【0092】
まず、上位装置としてのICカード処理装置2は、ICカード1内のファイルA1にデータを書き込むための準備として、論理チャネル(Ch.1)の開設とアプリケーションAの選択を要求するコマンドをICカード1に送信する(ステップS131)。これに対して、ICカード1は、論理チャネル(Ch.1)を開設してアプリケーションAを選択するコマンド処理を実行する。論理チャネル(Ch.1)の開設とアプリケーションAの選択とが成功すると、ICカード1は、当該コマンド処理が成功したことを示すステータスワードをセットしたレスポンスをICカード処理装置2へ送信する(ステップS132)。
【0093】
論理チャネル(Ch.1)の開設とアプリケーションAの選択を要求するコマンドに対する処理が成功した旨のレスポンスを受けると、ICカード処理装置2は、ファイルA1の選択を要求するコマンドをICカード1に対して送信する(ステップS133)。これに対して、ICカード1は、論理チャネル(Ch.1)におけるカレントファイルをファイルA1に設定するコマンド処理を実行する。論理チャネル(Ch.1)におけるカレントファイルをファイルA1に設定する処理が成功すると、ICカード1は、コマンド処理が成功したことを示すステータスワードをセットしたレスポンスをICカード処理装置2へ送信する(ステップS134)。
【0094】
ファイルA1の選択を要求するコマンドに対する処理が成功した旨のレスポンスを受けると、ICカード処理装置2は、ファイルA1に対するデータの書込みを要求する書込みコマンドをICカード1に対して送信する(ステップS135)。この書込みコマンドは、CASE3のファーマットで構成される。これに対して、ICカード1は、書込みコマンドに応じた書込み処理を実行する(ステップS136)。
【0095】
このような書込みコマンドに対する処理において、まず、ICカード1のCPU11は、カレントファイルに設定されているファイルA1へのアクセス権限の確認する(ステップS136−1)。当該書込みコマンドに対する処理は、論理チャネルが「Ch.1」でカレントファイルとしてのファイルA1にデータを書込む処理である。ここでは、ICカード1は、論理チャネル「Ch.0」でファイルA1をカレントファイルに設定している状態である。このため、ICカード1のCPU11は、論理チャネル「Ch.1」でのファイルA1に対する書込み権限がないものと判断する(ステップS136−2)。このような書込み権限無しの判断に基づいて、ICカード1のCPU11は、当該コマンドで要求されるデータの書込み処理を実施せずに中止(エラー)とする(ステップS136−3)。
【0096】
受信した書込みコマンドに対応するコマンド処理を中止すると、ICカード1のCPU11は、当該コマンドの処理を中止した詳細な理由を示す追加情報(詳細情報)を生成する(ステップS136−4)。ここでは、コマンド処理を中止した理由(エラー内容の詳細情報)は、論理チャネル「Ch.0」が既にファイルA1にアクセス中であることである。このため、ICカード1のCPU11は、コマンド処理を中止の理由(例えば、「ファイルA1には論理チャネル「Ch.0」でアクセス中のため論理チャネル「Ch.1」では書込み不可」、あるいは、「ファイルA1に対する当該論理チャネル(Ch.1)のアクセス優先権が2番目」など)を示す追加情報を生成する。CPU11は、生成した追加情報に処理コマンド情報としてのエラーとなった書込みコマンドを示す情報(当該書込みコマンドの一部(00h D0h 00h 00h 10h 11h 12h))に対応づけ、最新の追加情報(作成番号「1」の情報)として追加情報テーブル13aに記憶する(ステップS36−5)。
【0097】
最新の追加情報を追加情報テーブル13aに記憶すると、ICカード1のCPU11は、「書込み異常」となったことを示すコード情報とともに、「追加情報あり」を示すステータスワードをセットしたレスポンスを作成する(ステップS136−6)。「書込み異常」と「追加情報有り」とを示すステータスワードをセットしたレスポンスを作成すると、ICカード1のCPU11は、作成したレスポンスをICカード処理装置2へ送信し(ステップS137)、当該書込みコマンドに対する処理を終了する。
【0098】
ICカード処理装置2は、追加情報有りを含むレスポンスを受信すると、追加情報が直に必要であるか否かを判断する。追加情報の要否は、予め設定しておくようにしても良いし、ICカード処理装置2のオペレータが適宜選択するようにしても良い。ICカード処理装置2は、追加情報の要否の判断結果に基づいて当該ICカード1に次に供給するコマンドを決定する。ここでは、ICカード処理装置2は、ICカード1に対して、すぐに最新の追加情報の読出しを要求するものとする。
【0099】
最新の追加情報が必要であると判断した場合、ICカード処理装置2は、最新の追加情報を指定した追加情報の読出しを要求する特殊コマンド(例えば、CASE2のGET RESPONSEコマンド)をICカード1へ送信する(ステップS138)。上記特殊コマンドは、特定の追加情報の指定が無い場合、最新の追加情報が読出対象の追加情報と判断されるようにしても良い。また、特殊コマンドでは、作成順番「1」を指定したり、最新の追加情報が発生した処理コマンド情報(ここでは、書込みコマンド)を指定したりすることにより最新の追加情報を指定するようにしても良い。ここでは、追加情報有りのレスポンスを受けたICカード処理装置2が、特定の追加情報を指定しない特殊コマンドにより、最新の追加情報の読出しを要求するものとする。
【0100】
上記特殊コマンドを受信したICカード1のCPU11は、当該特殊コマンドで追加情報の指定が無ければ、当該特殊コマンドが最新の追加情報の読出しを要求するコマンドであると判断する。この判断に基づいて、ICカード1のCPU11は、追加情報テーブル13aから最新の追加情報(作成番号が最も新しい追加情報)を読出し、レスポンスデータにセットする(ステップS39)。最新の追加情報をレスポンスデータにセットすると、ICカード1のCPU11は、当該レスポンスデータをICカード処理装置2へ送信する(ステップS140)。
【0101】
上記のように、追加情報の読出しを要求する特殊コマンドで特定の追加情報が指定されていない場合、ICカードは、追加情報テーブルに保存した最新の追加情報をレスポンスとして送信するようにできる。また、読み出した最新の追加情報は、削除するようにしても良いし、保存しておくようにしても良い。たとえば、読出した追加情報を削除するか否かを特殊コマンドで指定する場合、ICカード1のCPU11は、当該特殊コマンドでの指定に基づいて読み出した追加情報を削除あるいは保存する。
【0102】
なお、最新の追加情報がすぐには必要でない場合、ICカード処理装置2は、追加情報有りのステータスワードを含むレスポンスを送信した後も、追加情報の読出しを要求する特殊コマンド以外の通常のコマンドをICカード1に送信することにより、通常の処理を継続的に実行することが可能である。このような場合であっても、ICカード1は、所定の最大件数までの追加情報を追加情報テーブル13aに保持している。このため、ICカード処理装置2は、別の処理を実行した後に特定の追加情報をICカード1から取得することも可能である。
【0103】
次に、追加情報テーブル13aに記憶した追加情報を複数のコマンド処理を実行した後に読み出す処理例について説明する。
図11は、追加情報テーブル13aに記憶した追加情報を追加情報に関連のない複数のコマンドの処理を実行後に読み出す処理例を示すシーケンス図である。
ここでは、図10に示すステップS131〜S137の処理が実行された状態であることを想定するものとする。この状態(追加情報有りのステータスワードを受信した場合)であっても、最新の追加情報がすぐには必要でなければ、ICカード処理装置2は、通常のコマンドをICカード1に送信することにより、通常の処理を継続的に実行できる。
【0104】
図11の処理例では、ICカード処理装置2は、上記ステップS137で書込みコマンドに対して追加情報有りのステータスワードを受信した後、追加情報に関連のない処理を要求する処理コマンド(CASE2のGET CHALLENGE コマンド)をICカード1へ供給している(ステップS141)。この処理コマンドを受信したICカード1は、当該処理コマンドで要求された処理を実行する(ステップS142)。処理コマンドに対する処理が正常に行われると、ICカード1は、正常終了を示すステータスワードをセットした処理結果(ここでは、乱数)をICカード処理装置2へ送信する(ステップS143)。このように、ICカード処理装置2は、追加情報有りのステータスワードを受信した後も、通常のコマンド処理を実行できる。
【0105】
ここで、ICカード処理装置2が追加情報に関連のない処理を要求する処理コマンド(CASE2のGET CHALLENGE コマンド)をICカード1へ供給したものとする(ステップS151)。この処理コマンドを受信したICカード1のCPU11は、当該処理コマンドで要求された処理を実行する(ステップS152)。当該処理コマンドの実行中にステータスワードでは示せない追加情報が発生した場合、CPU11は、当該処理コマンドの実行結果に関する追加情報(詳細情報)を生成する(ステップS152−1)。追加情報を生成すると、CPU11は、生成した追加情報に当該処理コマンドを示す情報(当該処理コマンドの一部)を対応づけて追加情報テーブル13aに保存する(ステップS152−2)。
【0106】
生成された当該処理コマンドに対する追加情報は、作成番号が「1」の最新の追加情報として追加情報テーブル13aに記憶すべきものである。ここでは、追加情報テーブル13aには既に別の追加情報が記憶されているため、CPU11は、既存の追加情報に対する作成番号を更新する(ステップS152−3)。すなわち、図8の処理例では、追加情報テーブル13aには上記ステップS136−4で生成した追加情報が記憶されている。このため、CPU11は、上記ステップS136−4で生成した追加情報に対する作成番号を「2」に更新する。
【0107】
最新の追加情報を追加情報テーブル13aに記憶すると、ICカード1のCPU11は、当該処理コマンドに対する処理結果を示すコード情報(たとえば、処理異常を示すコード情報)とともに、追加情報ありを示すステータスワードをセットしたレスポンスデータを作成する(ステップS152−4)。処理結果を示すコード情報と追加情報有りを示すステータスワードをセットしたレスポンスデータを作成すると、ICカード1のCPU11は、作成したレスポンスデータをICカード処理装置2へ送信する(ステップS153)。
【0108】
このようなレスポンスデータを受信した場合であっても、ICカード処理装置2では、追加情報に関連のない処理を継続できる。図11に示す例では、ICカード処理装置2は、追加情報に関連のない処理を要求する処理コマンド(CASE2のGET CHALLENGE コマンド)をICカード1へ供給する(ステップS161)。この処理コマンドを受信したICカード1は、当該処理コマンドで要求された処理を実行する(ステップS162)。処理コマンドに対する処理が正常に行われると、ICカード1は、正常終了を示すステータスワードをセットした処理結果(ここでは、乱数)をICカード処理装置2へ送信する(ステップS163)。
【0109】
ここで、ICカード処理装置2が上記ステップS136で生成した追加情報(つまり、ステップS137で通知された追加情報)を読み出したいとする。すると、ICカード処理装置2は、作成番号「2」の追加情報を指定して追加情報の読出しを要求する特殊コマンドをICカード1へ送信する(ステップS171)。ただし、ここでは、ICカード処理装置2が読出対象とする追加情報の作成番号を認識しているものとする。読出対象とする追加情報の作成番号を認識していない場合、ICカード処理装置2は、当該追加情報に対応づけて記憶している処理コマンド情報(ここでは、書込みコマンドの一部を示す情報)により、読出対象とする追加情報を指定しても良い。
【0110】
なお、追加情報の読出しを要求する特殊コマンドでは、特定の追加情報だけでなく、複数の追加情報を読出対象として指定したり、全部の追加情報を読出対象として指定したりすることも可能である。
さらに、追加情報の読出しを要求する特殊コマンドでは、パラメータの設定により読み出した追加情報の削除を指定することも可能である。図11に示す例では、作成番号「2」の追加情報を指定する特殊コマンドにおいて、当該追加情報を読出し後に削除することが指定されているものとする。
【0111】
上記のような作成番号「2」の追加情報を読出対象に指定する特殊コマンドを受信したICカード1のCPU11は、追加情報テーブル13aから指定された作成番号「2」の追加情報を読み出す(ステップS172−1)。指定された作成番号「2」の追加情報を読み出すと、CPU11は、読み出した作成番号「2」の追加情報をセットしたレスポンスデータを作成する(ステップS172−2)。作成番号「2」の追加情報をレスポンスデータにセットすると、CPU11は、作成番号「2」の追加情報を追加情報テーブル13aから削除する(ステップS172−3)。
【0112】
上記特殊コマンドで指定された追加情報をレスポンスデータにセットすると、ICカード1のCPU11は、当該レスポンスデータをICカード処理装置2へ送信する(ステップS173)。このレスポンスデータには、たとえば、作成番号が「2」で、処理コマンド情報が書込みコマンド(一部のデータが(00h D0h 00h 00h 10h 11h 12h))で、追加情報が「書込み対象のファイルA1にはチャネル「Ch.0」でアクセス中のためチャネル「Ch.1」では書込不可」であるという情報がセットされる。
【0113】
上記のように、第2の処理例では、ICカードは、複数件の追加情報を記憶できる。このため、第2の処理例では、ICカード処理装置は、ICカードから追加情報有りが通知された場合であっても、追加情報に関連のないコマンドを継続的に実行させることができる。さらに、追加情報に関連のないコマンドを実行した後であっても、ICカード処理装置は、任意のタイミングで、ICカード1から過去のコマンド処理で生じた追加情報を取得することができる。この結果として、ICカード処理装置では、既存のコマンド体系のままであっても、ICカードにおけるコマンド処理で生じた追加情報(詳細情報)に基づいて効率的な処理をICカードに実行させることができる。
【0114】
次に、ICカード1におけるコマンド処理の第3の処理例について説明する。
第3の処理例においても、ICカード1は、予め規定されている上記したコマンド体系を遵守する。第3の処理例において、ICカード1は、上位装置から与えられたコマンドの実行処理においてエラーが発生した場合、エラー内容の詳細な情報を示す追加情報を生成し、生成した追加情報を追加情報テーブル13aに保存する。さらに、ICカード1は、追加情報テーブル13aに保存した追加情報を上位装置からの要求に応じて送信する。
【0115】
次に、第3の処理例に係る追加情報テーブル13a´の構成について説明する。
図12は、上記追加情報テーブル13a´の構成例を示す図である。
上記追加情報テーブル13a´には、複数件の追加情報(詳細情報)が保存可能である。上記追加情報テーブル13a´に追加情報として保存可能な件数(最大件数)は、予め設定可能である。たとえば、上記追加情報テーブル13a´に保存可能な追加情報の最大件数は、当該ICカード1の発行処理時に設定される。
【0116】
上記追加情報テーブル13a´には、コマンド処理においてエラーなどにより追加情報が発生するごとに、作成順番、優先度および処理コマンド情報を対応づけた追加情報を記憶する。追加情報は、コマンド処理の実行中に発生した事象の詳細な内容を示す情報である。追加情報としては、実行したコマンド処理のレスポンスデータでは伝えきれない情報を想定している。たとえば、コマンド処理においてエラーが発生した場合、ICカード1は、エラー内容の詳細を示す情報を追加情報として生成する。
【0117】
たとえば、図12に示す例では、書込みコマンドに対する追加情報として、書込み対象のファイルにはロジカルチャネル「Ch.0」でアクセス中であったため書込みがエラーとなった旨が記憶されている。既存のコマンド体系においては、書込みコマンドに対するレスポンスでは上記のようなエラー内容を示す情報は通知できない。このため、ICカード1は、上記のようなエラー内容を追加情報として生成する。なお、上記追加情報は、コマンド処理の処理結果を示すレスポンスにおけるステータスワードだけでは通知しきれない情報であり、エラー内容の詳細を示す情報に限らない。たとえば、コマンドの処理が成功した場合であっても、ICカード1では、コマンド処理の実行中に発生した事象を示す情報を追加情報として生成するようにしても良い。
【0118】
作成順番は、追加情報を作成した順番(保存した順番)を示す情報である。複数の追加情報を追加情報テーブル13a´に保存する場合、たとえば、各追加情報には、新しい順に作成順番が付与される。この場合、追加情報テーブル13a´に追加情報が保存されるごとに、各追加情報の作成順番が更新される。
【0119】
処理コマンド情報は、追加情報が発生した処理コマンドの内容を示す情報である。処理コマンド情報は、実行結果に関連する追加情報が生成された処理コマンド自体を示す情報である。たとえば、処理コマンド情報としては、実際に受信したコマンドの一部が記憶される。図12に示す例では、処理コマンド情報として、WRITE COMMANDの一部のデータ(00h D0h 00h 00h 10h 11h 12h)が記憶されている。これにより、上位装置としてのICカード処理装置2は、後述する追加情報の読出を要求する特殊コマンドにおいて、特定の追加情報を処理コマンド情報により指定することが可能となる。
【0120】
優先度は、追加情報の重要度を示す情報である。追加情報の優先度は、追加情報の内容に応じて決定される。ICカード処理システム全体あるいはICカード自体の動作にとって重要な問題となる追加情報には、高い優先度(例えば、5段階の優先度に対して「5」あるいは3段階の優先度に対して「3」)を付与する。重要性或は緊急性が高く、上位装置(ICカード処理装置)に必ず通知すべき追加情報は、優先度を高くする。たとえば、優先度が高い追加情報としては、システム全体あるいはICカードが正常に機能しなくなるような不具合を示す追加情報が考えられる。具体例としては、ICカード1が正常に動作しなくなるようなハードウエアの故障を示す追加情報は、優先度を高くする。また、ICカードの動作を停止させるべき不正攻撃などのセキュリティに関する重要情報を示す追加情報も、優先度を高くする。
【0121】
これに対して、ICカード処理システム全体あるいはICカード自体の動作には問題がなく後段のコマンド処理においても影響が少ない軽微な問題を示す追加情報には、低い優先度(例えば、5段階の優先度に対して「1」あるいは3段階の優先度に対して「1」)を付与する。たとえば、上位装置(ICカード処理装置)が無視しても、後段のコマンド処理に影響がないような追加情報は、優先度を低くする。具体例としては、一時的に電源電圧が不安定であったために書込みエラーとなったことを示す追加情報は、電源電圧が安定すれば解消されるエラーであるため、優先度を低くしても良い。
【0122】
また、ICカード処理システム全体あるいはICカード自体の動作には問題ないが、後段のコマンド処理に影響がある追加情報には、中程度の優先度(例えば、5段階の優先度に対して「2」〜「4」、あるいは、3段階の優先度に対して「2」)を付与する。たとえば、アクセス対象としたファイルへのアクセス権が不備であったためにエラーとなったことを示す追加情報は、優先度を中程度としても良い。また、コマンドで指示されたアクセス対象のファイルが存在しないためにエラーとなったことを示す追加情報は、優先度を中程度としても良い。
【0123】
さらに、追加情報の優先度は、発生頻度、あるいは、連続して発生した回数などに応じて変化させるようにしても良い。たとえば、同一内容の追加情報が既に追加情報テーブルに存在する場合、新しい追加情報に対する優先度を+1することにより、優先度をより高く設定するようにすれば良い。また、連続発生回数が所定閾値以上となった場合、当該追加情報の優先度を高くするようにしても良い。また、当該ICカードにおける同一内容の追加情報の発生頻度に応じて当該追加情報の優先度を高くするようにしても良い。
【0124】
また、ICカード1は、追加情報テーブル13a´に保持している追加情報の優先度に応じてコマンド処理の内容を決定する機能も有する。たとえば、優先度が高い追加情報を保持している場合、ICカード1は、受信したコマンドに対する処理を実行せずに、優先度の高い追加情報を保持していることを通知するようにしても良い。このような運用形態では、優先度が高い追加情報を保持している場合、当該追加情報が読み出されるまで、ICカード1は、優先度の高い追加情報を保持していることを通知し続ける。このような処理によれば、ICカード1は、優先度が高い追加情報を確実に上位装置へ通知することができる。
【0125】
また、優先度が低い追加情報を保持している場合、ICカード1は、上位装置から当該追加情報の読出しが要求されなければ、優先度の低い追加情報を削除するようにしても良い。このような処理によれば、ICカード1は、優先度が低い追加情報で追加情報テーブルが占有されることが少なくなる。
【0126】
なお、本第3の処理例では、主として、追加情報の優先度は、上位装置(ICカード処理装置)への通知の必要性(重要度或は緊急度)に応じて決定されることを想定している。ただし、追加情報の優先度は、追加情報を種別ごとに分類できる情報であれば良い。たとえば、優先度の代わりに追加情報の種別を決定し、追加情報テーブル13a´には、優先度の代りに追加情報の種別を示す情報を記憶するようにしても良い。このような場合であっても、ICカード1は、追加情報の種別に応じた処理を行うことができる。
【0127】
次に、上記ICカード1におけるコマンド処理の第3の処理例の流れを説明する。
図13は、ICカード1におけるコマンドに対する第3の処理例の流れを説明するためのフローチャートである。
電源供給を受けているICカード1では、待機状態において、通信ユニット14によりICカード処理装置2からのコマンドが受信可能となっている(ステップS201)。この状態においてICカード処理装置2からのコマンドを上記通信ユニット14が受信した場合(ステップS201、YES)、ICカード1のCPU11は、受信したコマンドが追加情報を要求するコマンドであるか否かを判断する(ステップS202)。追加情報の読出しを要求するコマンドは、予め規定される特殊コマンドであるものとする。
【0128】
たとえば、追加情報の読出しを要求する特殊コマンドとしては、後述する図14或は図15に示す例のように、ゲットレスポンスコマンド(ISOで規定されているCASE2のGET RESPONSE Command)を用いることができる。このような特殊コマンドでは、読出対象とする追加情報、あるいは、追加情報を読出した後の当該追加情報に対する処理内容(削除するか否か)がパラメータなどにより指定可能となっている。
【0129】
上記判断により受信したコマンドが追加情報の読出しを要求する特殊コマンド(以下、単に特殊コマンドとも称する)でないと判断した場合(ステップS202、NO)、CPU11は、追加情報テーブル13a´に追加情報が記憶されているか否かを判断する(ステップS203)。追加情報テーブル13a´に追加情報が記憶されていると判断した場合(ステップS203、YES)、CPU11は、追加情報テーブル13a´に優先度が第1の閾値以上となる優先度が高い追加情報が存在するか否かを判断する(ステップS204)。第1の閾値は、追加情報が必ず上位装置に通知すべき情報であるか否かを優先度に基づいて判定するための閾値である。
【0130】
すなわち、第3の処理例では、ICカード1は、上位装置としてのICカード処理装置2への通知が必須の追加情報が追加情報テーブル13a´に保持されているか否かを判断する。言い換えると、CPU11は、優先度が第1の閾値以上である否かにより、追加情報テーブル13a´に保持されている追加情報がICカード処理装置2への通知が必須であるか否かを判断する。たとえば、「1」〜「5」の5段階の優先度に対して第1の閾値を「5」と設定した場合、CPU11は、優先度が「5」の追加情報を優先度が高い追加情報と判断する。
【0131】
上記第1の閾値以上の優先度が高い追加情報が存在すると判断した場合(ステップS204、YES)、CPU11は、受信したコマンドに対する処理を実行せずに、追加情報有りを示すステータスワードをセットしたレスポンスデータを作成し(ステップS213)、作成したレスポンスデータをICカード処理装置2へ送信する(ステップS214)。これにより、ICカード1では、追加情報テーブル13a´に第1の閾値以上となる高い優先度の追加情報を存在する限り、特殊コマンド以外の通常コマンドに対してはコマンド処理を実行せずに、追加情報が有りというレスポンスのみを返す。この結果として、ICカード処理装置2では、優先度の高い追加情報をICカード1から読み出すまで、他の処理を当該ICカード1に実行させることが出来なくなる。
【0132】
また、上記第1の閾値以上の優先度が高い追加情報が存在しないと判断した場合(ステップS204、NO)、CPU11は、追加情報テーブル13a´に優先度が第2の閾値以下となる優先度が低い追加情報が存在するか否かを判断する(ステップS205)。第2の閾値は、追加情報が上位装置に通知しなくとも良い情報であるか否かを優先度に基づいて判定するための閾値である。
【0133】
すなわち、第3の処理例では、ICカード1は、追加情報テーブル13a´に保持している追加情報が上位装置に通知しなくても良い追加情報であるか否かを判断する。本実施の形態では、後段のステップS206で、第2の閾値以下の追加情報を削除する。これは、ステップS205の処理が、追加情報テーブル13a´に保持している追加情報が削除しても良い情報であるか否かを判断することを意味している。すなわち、特殊コマンド以外のコマンドを受信した場合、CPU11は、ICカード処理装置2から読出し要求が無った直前のコマンド処理で発生した追加情報を削除しても良いか否かを判断する。たとえば、「1」〜「5」の5段階の優先度に対して第2の閾値を「1」と設定した場合、CPU11は、優先度が「1」の追加情報を優先度が低い追加情報と判断する。
【0134】
上記第2の閾値以下の優先度の追加情報が存在すると判断した場合(ステップS205、YES)、CPU11は、優先度が第2の閾値以下となっている低い優先度の追加情報(直前のコマンド処理で発生した追加情報)を追加情報テーブル13a´から削除する(ステップS206)。なお、追加情報の優先度を発生頻度あるいは連続発生回数に応じて決定する場合、追加情報テーブル13a´から削除する追加情報の内容は、追加情報テーブル13a´以外の記憶領域に保存しておくようにしても良い。また、追加情報を完全に削除せずに、追加情報テーブル13a´に削除済みである旨を対応づけて記録しておくようにしても良い。
【0135】
上記第2の閾値以下の優先度の追加情報が存在しないと判断した場合(ステップS205、YES)、あるいは、優先度が第2の閾値以下の追加情報を削除した場合(ステップS206)、CPU11は、受信したコマンドの内容に従ったコマンド処理を実行する(ステップS207)。コマンド処理において、CPU11は、コマンドヘッダで指定される処理内容を判別することにより受信したコマンドの内容に従った処理を実行する。
【0136】
コマンド処理を実行すると、CPU11は、当該コマンド処理の実行中に追加情報(詳細情報)としてICカード処理装置2に通知すべき事象(例えば、エラー)が発生したか否かを判断する(ステップS208)。当該コマンド処理においてICカード処理装置2へ追加情報として通知すべき事象が発生しなかった場合(ステップS208、NO)、CPU11は、ステータスワード(SW)に処理結果を示す情報(コード情報)をセットしたレスポンスデータを生成し(ステップS215)、生成したレスポンスデータをICカード処理装置2へ送信する(ステップS214)。たとえば、書込みコマンドに対して正常に処理が完了した場合、CPU11は、処理成功を示す情報(コード情報)をセットしたレスポンスデータを生成してICカード処理装置2へ送信する。当該レスポンスを送信した後、ICカード1は、次のコマンドが受信可能な状態となる。
【0137】
また、コマンド処理においてICカード処理装置2へ追加情報として通知すべき事象(例えば、エラー)が発生した場合、つまり、追加情報が発生した場合(ステップS208、YES)、CPU11は、当該コマンド処理の実行結果に関連する詳細な内容を示す追加情報(詳細情報)を生成する(ステップS209)。追加情報は、コマンド処理の実行結果としての当該コマンドに対するレスポンスでは送信しきれない情報である。たとえば、書込みコマンドの処理でエラーが発生した場合、CPU11は、追加情報として、エラーの原因、あるいは、エラーの具体的な内容(エラーが発生した処理工程)などを示す情報を含む詳細情報を生成する。なお、書込み系のコマンド処理におけるエラーにおいて、エラー原因としては、メモリ異常(ハードウエアの故障)、不正攻撃(不正なアクセス手順による処理)、アクセス権無し、あるいは、動作電圧の低下などが考えられる。また、エラーの具体的な内容を示す情報としては、書込みエラーとなったメモリアドレスを示す情報などが考えられる。
【0138】
上記のような追加情報を生成すると、CPU11は、生成した追加情報を追加情報テーブル13a´に新規に記憶する(ステップS210)。さらに、CPU11は、生成した追加情報に対する優先度を決定する処理を行う(ステップS211)。追加情報に対する優先度は、追加情報の重要度或は緊急度などに応じて決定されるものであり、たとえば、上位装置としてのICカード処理装置2への通知の必要性に応じて決定される。追加情報に対する優先度が決定されると、CPU11は、図5に示すように、作成順番、優先度、およびコマンド情報を当該追加情報に対応づけて追加情報テーブル13a´に記憶する(ステップS212)。
【0139】
なお、上記追加情報テーブル13a´は、RAM13に設けられる。RAM13に設けた追加情報テーブル13a´は、当該ICカード1がリセットされるごとに保存した追加情報としての詳細情報をクリアする。言い換えると、ICカード1のリセットするごとに追加情報もリセットしたい場合、追加情報テーブル13a´は、RAM13に設けられる。また、追加情報テーブル13a´は、不揮発性メモリ16に設けても良い。不揮発性メモリ16に設けた追加情報テーブル13a´は、ICカード1の電源がオフとなっても追加情報を保持する。不揮発性メモリ16に設けた追加情報テーブル13a´は、コマンドによって上書き或は削除などの処理が行われなければ、追加情報としての詳細情報が保持される。言い換えると、ICカード1がリセットされても追加情報を保持しておきたい場合、追加情報テーブル13a´は、不揮発性メモリ16に設けられる。
【0140】
追加情報テーブル13a´に優先度、コマンド情報、および作成順番を対応づけた追加情報を保存すると、CPU11は、ステータスワード(SW)にコマンド処理結果を示す情報(コード情報)と追加情報有りを示す情報とをセットしたレスポンスデータを生成する(ステップS213)。追加情報有りを示す情報をセットしたレスポンスデータを生成すると、CPU11は、生成したレスポンスをICカード処理装置2へ送信する(ステップS214)。当該レスポンスを送信した後、ICカード1は、次のコマンドが受信可能な状態となる。
【0141】
また、上記ステップS202で受信したコマンドが追加情報の読出しを要求する特殊コマンドであると判断した場合(ステップS202、YES)、CPU11は、追加情報テーブル13a´に記憶されている追加情報から読出対象とする追加情報を特定する処理を行う(ステップS221)。読出対象とする追加情報は、追加情報の読出しを要求する特殊コマンドの内容(パラメータ或は受信タイミング)に基づいて判断される。
【0142】
上記追加情報テーブル13a´では、追加情報に対応づけて、作成順序および処理コマンド情報を記憶している。このため、追加情報の読出しを要求する特殊コマンドでは、作成順番、あるいは処理コマンド情報により特定の追加情報を指定することが可能である。また、特定の追加情報が指定されない特殊コマンドに対しては、最新の追加情報を読出対象の追加情報とするようにしても良い。なお、上記特殊コマンドでは、複数の追加情報を指定したり、全ての追加情報を指定したりすることもできる。このような特殊コマンドに対しては、CPU11は、複数の追加情報、或は全ての追加情報を読出対象と判定する。
【0143】
読出対象の追加情報を特定すると、CPU11は、特定した読出対象の追加情報を追加情報テーブル13a´から読み出し(ステップS222)、読み出した追加情報をセットしたレスポンスデータを生成する(ステップS223)。読出対象の追加情報をセットしたレスポンスデータを生成すると、CPU11は、読み出した追加情報を削除するか保存しておくかを判断する(ステップS224)。読み出した追加情報を削除するか否かは、前記特殊コマンドのパラメータで指定できるようにしても良いし、予め何れかに設定しておくようにしても良い。たとえば、前記特殊コマンドで読出した追加情報を削除するか否かを指定できるようにする場合、CPU11は、受信した特殊コマンドのパラメータにより読出し後の追加情報を削除するか否かを判断する。
【0144】
読出した追加情報を削除すると判断した場合(ステップS224、YES)、CPU11は、読み出した追加情報を追加情報テーブル13a´から削除する(ステップS225)。この場合、CPU11は、追加情報テーブル13a´に残った追加情報に対する作成順番を更新する。なお、追加情報の優先度を発生頻度あるいは連続発生回数に応じて決定する場合、追加情報テーブル13a´から削除する追加情報の内容は、追加情報テーブル13a´以外の記憶領域に保存しておくようにしても良い。また、追加情報を完全に削除せずに、追加情報テーブル13a´に削除済みである旨を対応づけて記録しておくようにしても良い。また、ステップS224及びS225の処理は、読み出した追加情報をレスポンスデータにセットした後、或はレスポンスデータを送信した後に実行するようにしても良い。
【0145】
上記特殊コマンドで指定された読出対象の追加情報をレスポンスデータにセットすると、CPU11は、読出対象の追加情報をセットしたレスポンスデータに処理成功を示すステータスワードをセットし(ステップS215)、上記特殊コマンドに対するレスポンスとしてICカード処理装置2へ送信する(ステップS214)。
【0146】
上記のように、本実施の形態のICカードでは、上位装置から受信した処理コマンドに対する実行結果としてステータスワードでは示せない追加情報(詳細情報)がある場合、追加情報を生成し、生成した追加情報の優先度を決定し、決定した優先度を当該追加情報に対応づけて追加情報テーブルに保存し、追加情報がある旨のレスポンスを通知する。追加情報テーブルに追加情報を保存した状態でコマンドを受信した場合、ICカードは、追加情報テーブルに保存している追加情報の優先度に応じた処理を行う。
【0147】
たとえば、優先度が所定の閾値よりも高い追加情報を保持している場合、ICカードは、通常の処理を要求するコマンドを受信しても、当該コマンドを実行せずに、追加情報がある旨のレスポンスを送信する。また、優先度が所定の閾値よりも低い追加情報を保持している場合、ICカードは、通常の処理コマンドを受信すると当該コマンドに従ってコマンド処理を実行するとともに、優先度が低い当該追加情報を削除する。
【0148】
上記のような第3の処理例のICカード1によれば、既存のコマンド体系のままであっても、エラー内容の詳細情報などのコマンド処理中に発生した事象を示す追加情報(詳細情報)を、各追加情報の優先度に応じて効率良く上位装置へ通知することを実現できる。
【0149】
次に、ICカード処理システム全体における第3の処理例の流れを具体例を用いて説明する。
まず、コマンドの実行結果として生成した最新の追加情報(詳細情報)を読み出す場合の具体例について説明する。
図14は、第3の処理例により最新の追加情報を読み出す処理の具体例を示すシーケンス図である。図14は、書込み系のコマンド処理においてエラーが発生した場合の処理例を示すシーケンスを示している。なお、書込み処理におけるエラーの原因としては、メモリ異常、不正攻撃、アクセス権無し、あるいは、動作電圧低下などが考えられる。
【0150】
たとえば、書込み系のコマンドを受信した場合、既に他の論理チャネルが書込み対象とするファイルを占有している状態であれば、アクセス権無しのため、書込みエラーとなるものとする。このような場合、ICカード1は、書込みが出来なかった理由(他の論理チャネルによるアクセス対象ファイルの占有)を追加情報として生成して保持しておく。この状態で、ICカード1は、「書込み失敗」と共に「追加情報あり」を示すステータスワードをセットしたレスポンスを返信することにより、受信した書込みコマンドに対する処理を終了する。その後、追加情報を要求する特殊コマンドを受信した場合、ICカード1は、書込みが出来なかった理由を示す追加情報を送信する。
【0151】
ここでは、ICカード1は、図2に示すように、アプリケーションA、B、ファイル(EF)A1,A2,B1が存在することを想定する。さらに、ICカード1は、ロジカルチャネル管理機能42により管理する複数の論理チャネルでのアクセス状態として、論理チャネル「Ch.0」がファイルA1をカレントに設定している状態を想定するものとする。
【0152】
まず、上位装置としてのICカード処理装置2は、ICカード1内のファイルA1にデータを書き込むための準備として、論理チャネル(Ch.1)の開設とアプリケーションAの選択を要求するコマンドをICカード1に送信する(ステップS231)。これに対して、ICカード1は、論理チャネル(Ch.1)を開設してアプリケーションAを選択するコマンド処理を実行する。論理チャネル(Ch.1)の開設とアプリケーションAの選択とが成功すると、ICカード1は、当該コマンド処理が成功したことを示すステータスワードをセットしたレスポンスをICカード処理装置2へ送信する(ステップS232)。
【0153】
論理チャネル(Ch.1)の開設とアプリケーションAの選択を要求するコマンドに対する処理が成功した旨のレスポンスを受けると、ICカード処理装置2は、ファイルA1の選択を要求するコマンドをICカード1に対して送信する(ステップS233)。これに対して、ICカード1は、論理チャネル(Ch.1)におけるカレントファイルをファイルA1に設定するコマンド処理を実行する。論理チャネル(Ch.1)におけるカレントファイルをファイルA1に設定する処理が成功すると、ICカード1は、コマンド処理が成功したことを示すステータスワードをセットしたレスポンスをICカード処理装置2へ送信する(ステップS234)。
【0154】
ファイルA1の選択を要求するコマンドに対する処理が成功した旨のレスポンスを受けると、ICカード処理装置2は、ファイルA1に対するデータの書込みを要求する書込みコマンドをICカード1に対して送信する(ステップS235)。この書込みコマンドは、CASE3のファーマットで構成される。これに対して、ICカード1は、書込みコマンドに応じた書込み処理を実行する(ステップS236)。
【0155】
このような書込みコマンドに対する処理において、まず、ICカード1のCPU11は、カレントファイルに設定されているファイルA1へのアクセス権限の確認する(ステップS236−1)。当該書込みコマンドに対する処理は、論理チャネルが「Ch.1」でカレントファイルとしてのファイルA1にデータを書込む処理である。ここでは、ICカード1は、論理チャネル「Ch.0」でファイルA1をカレントファイルに設定している状態である。このため、ICカード1のCPU11は、論理チャネル「Ch.1」でのファイルA1に対する書込み権限がないものと判断する(ステップS236−2)。このような書込み権限無しの判断に基づいて、ICカード1のCPU11は、当該コマンドで要求されるデータの書込み処理を実施せずに中止(エラー)とする(ステップS236−3)。
【0156】
受信した書込みコマンドに対応するコマンド処理を中止すると、ICカード1のCPU11は、当該コマンドの処理を中止した詳細な理由を示す追加情報(詳細情報)を生成する(ステップS236−4)。ここでは、コマンド処理を中止した理由(エラー内容の詳細情報)は、論理チャネル「Ch.0」が既にファイルA1にアクセス中であることである。このため、ICカード1のCPU11は、コマンド処理を中止の理由(例えば、「ファイルA1には論理チャネル「Ch.0」でアクセス中のため論理チャネル「Ch.1」では書込み不可」、あるいは、「ファイルA1に対する当該論理チャネル(Ch.1)のアクセス優先権が2番目」など)を示す追加情報を生成する。
【0157】
追加情報を生成すると、CPU11は、生成した追加情報に対する優先度を決定する(ステップS236−5)。ここでは、追加情報は、「ファイルA1には論理チャネル「Ch.0」でアクセス中のため論理チャネル「Ch.1」では書込み不可」という情報である。このような追加情報に対しては、図12に示す例では、優先度が「2」と設定される。
【0158】
生成した追加情報に対する優先度を決定すると、CPU11は、生成した追加情報に、優先度(ここでは、「2」)、コマンド情報(ここでは、書込みコマンドの一部(00h D0h 00h 00h 10h 11h 12h))、および、作成番号(ここでは、「1」)を対応づけて追加情報テーブル13a´に記憶する(ステップS236−6)。
【0159】
最新の追加情報を追加情報テーブル13a´に記憶すると、ICカード1のCPU11は、「書込み異常」となったことを示すコード情報とともに、「追加情報あり」を示すステータスワードをセットしたレスポンスを作成する(ステップS236−7)。「書込み異常」と「追加情報有り」とを示すステータスワードをセットしたレスポンスを作成すると、ICカード1のCPU11は、作成したレスポンスをICカード処理装置2へ送信し(ステップS237)、当該書込みコマンドに対する処理を終了する。
【0160】
ICカード処理装置2は、追加情報有りを含むレスポンスを受信すると、追加情報が直に必要であるか否かを判断する。追加情報の要否は、予め設定しておくようにしても良いし、ICカード処理装置2のオペレータが適宜選択するようにしても良い。ICカード処理装置2は、追加情報の要否の判断結果に基づいて当該ICカード1に次に供給するコマンドを決定する。ここでは、ICカード処理装置2は、ICカード1に対して、すぐに最新の追加情報の読出しを要求するものとする。
【0161】
最新の追加情報が必要であると判断した場合、ICカード処理装置2は、最新の追加情報を指定した追加情報の読出しを要求する特殊コマンド(例えば、CASE2のGET RESPONSEコマンド)をICカード1へ送信する(ステップS238)。上記特殊コマンドは、特定の追加情報の指定が無い場合、最新の追加情報が読出対象の追加情報と判断されるようにしても良い。また、特殊コマンドでは、作成順番「1」を指定したり、最新の追加情報が発生した処理コマンド情報(ここでは、書込みコマンド)を指定したりすることにより最新の追加情報を指定するようにしても良い。ここでは、追加情報有りのレスポンスを受けたICカード処理装置2が、特定の追加情報を指定しない特殊コマンドにより、最新の追加情報の読出しを要求するものとする。
【0162】
上記特殊コマンドを受信したICカード1のCPU11は、当該特殊コマンドで追加情報の指定が無ければ、当該特殊コマンドが最新の追加情報の読出しを要求するコマンドであると判断する。この判断に基づいて、ICカード1のCPU11は、追加情報テーブル13a´から最新の追加情報(作成番号が最も新しい追加情報)を読出し、レスポンスデータにセットする(ステップS239)。最新の追加情報をレスポンスデータにセットすると、ICカード1のCPU11は、当該レスポンスデータをICカード処理装置2へ送信する(ステップS240)。
【0163】
上記のように、追加情報の読出しを要求する特殊コマンドで特定の追加情報が指定されていない場合、ICカードは、追加情報テーブルに保存した最新の追加情報をレスポンスとして送信するようにできる。また、読み出した最新の追加情報は、削除するようにしても良いし、保存しておくようにしても良い。たとえば、読出した追加情報を削除するか否かを特殊コマンドで指定する場合、ICカード1のCPU11は、当該特殊コマンドでの指定に基づいて読み出した追加情報を削除あるいは保存する。
【0164】
次に、追加情報テーブル13a´に優先度が高い追加情報を保存している場合の処理例について説明する。
図15は、追加情報テーブル13a´に優先度が高い追加情報を記憶した状態でICカード処理装置2から受信するコマンドに対する処理例を示すシーケンス図である。
ここでは、追加情報テーブル13a´に5段階で「5」の優先度が設定された追加情報を記憶している状態であることを想定するものとする。この状態において、ICカード処理装置2は、追加情報に関連のない処理を要求するコマンド(特殊コマンド以外の通常コマンド)(図15の例では、CASE2のGET CHALLENGE コマンド)をICカード1へ供給している(ステップS241)。
【0165】
通常コマンドを受信したICカード1は、追加情報テーブル13a´に優先度が高い追加情報が存在するか否かを確認する。ここで、CPU111は、追加情報テーブル13a´に優先度が高い追加情報(優先度「5」)が記憶されていることを確認する(ステップS242−1)。このため、ICカード1のCPU11は、当該コマンドで要求された処理を実行することなく、追加情報の読出しを促すレスポンスデータを作成する(ステップS242−2)。たとえば、ICカード1のCPU11は、処理異常である事と追加情報がある事とを示すステータスワードをセットしたレスポンスデータを作成し、ICカード処理装置2へ送信する(ステップS243)。
【0166】
この場合、ICカード1は、上位装置としてのICカード処理装置2からの要求に応じて追加情報を読み出さない限り、通常コマンドを実行しない。すなわち、ICカード処理装置2は、ICカード1から優先度の高い追加情報を読み出さない限り、通常コマンドが実行できない。このため、ICカード処理装置2は、追加情報の読出しを要求する特殊コマンド(図15に示す例では、CASE2のGET RESPONSEコマンド)をICカード1へ送信する(ステップS251)。
【0167】
なお、特殊コマンドでは、読出し対象とする追加情報を作成順番あるいは優先度などにより指定しても良い。また、読出し対象の追加情報を指定しない場合、直前のレスポンスデータで通知された追加情報が読み出されるようにしても良い。また、特殊コマンドでは、1つの追加情報だけでなく、複数の追加情報を読出対象として指定したり、追加情報テーブル13a´に記憶されている全部の追加情報を読出対象として指定したりすることも可能である。
【0168】
さらに、追加情報の読出しを要求する特殊コマンドでは、パラメータの設定により読み出した後の追加情報を削除するか保持するかを指定することも可能である。図15に示す例では、追加情報を指定する特殊コマンドでは、当該追加情報を読出し後に削除することが指定されているものとする。すなわち、図15に示す処理例では、読出し後の追加情報は削除されるものとする。なお、このような場合であっても、追加情報の優先度を発生頻度あるいは連続発生回数に応じて決定する場合には、当該追加情報を完全に削除せずに、当該追加情報の内容を別途記録しておくようにする。
【0169】
上記特殊コマンドを受信したICカード1のCPU11は、追加情報テーブル13a´から読出し対象となる追加情報を読み出し(ステップS252−1)、読み出した追加情報をセットしたレスポンスデータを作成する(ステップS252−2)。追加情報をレスポンスデータにセットすると、CPU11は、当該追加情報を追加情報テーブル13a´から削除する(ステップS252−3)。上記特殊コマンドで指定された追加情報をレスポンスデータにセットすると、ICカード1のCPU11は、当該レスポンスデータに処理の正常終了を示すステータスワードをセットしてICカード処理装置2へ送信する(ステップS253)。
【0170】
上記追加情報を含むレスポンスデータを受信した後、ICカード処理装置2は、追加情報に関連のない処理を要求するコマンド(特殊コマンド以外の通常コマンド)(図15の例では、CASE2のGET CHALLENGE コマンド)をICカード1へ供給したものとする(ステップS261)。通常コマンドを受信した場合、ICカード1は、追加情報テーブル13a´に優先度が高い追加情報が存在するか否かを確認する。
【0171】
ここでは、優先度が高い追加情報(優先度「5」)が削除されたため、CPU11は、追加情報テーブル13a´に優先度が高い追加情報が記憶されていないことを確認する(ステップS262−1)。この場合、ICカード1のCPU11は、当該コマンドの内容に従ってコマンド処理を実行する(ステップS262−2)。このコマンド処理が正常に実行されると、ICカード1のCPU11は、上記コマンド処理の結果として、コマンド処理により生成した乱数と処理が正常終了を示すステータスワードとをセットしたレスポンスデータを作成し、ICカード処理装置2へ送信する(ステップS263)。
【0172】
上記のように、本第3の処理例のICカードは、コマンド処理の実行中に発生したエラーなどの事象を示す詳細情報と当該詳細情報に対する優先度とを対応づけて記憶し、前記詳細情報の読出しを要求する特殊コマンドを受信した場合には前記詳細情報を出力し、前記特殊コマンド以外のコマンドを受信した場合には前記詳細情報の優先度に応じた処理を実行するようにしたものである。このような第3の処理例によれば、ICカードは、コマンド処理で生じた追加情報(詳細情報)を優先度に応じた効率的な処理により上位装置側に提供できる。
【0173】
いくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0174】
Ca…モジュール、C…筐体、1…ICカード、2…ICカード処理装置、11…CPU、12…ROM、13…RAM、13a(13a´)…追加情報(詳細情報)テーブル14…通信ユニット(UART)、15…コプロセッサ、16…不揮発性メモリ。
【特許請求の範囲】
【請求項1】
外部装置との通信を行う通信部と、
前記通信部により前記外部装置から受信したコマンドに応じたコマンド処理を実行する実行部と、
前記実行部により実行した前記コマンド処理の結果に関連する追加情報を生成する生成部と、
前記生成部により生成した前記追加情報を記憶する記憶部と、
前記記憶部により前記生成部が生成した前記追加情報を記憶した場合、前記実行部によるコマンド処理の結果とともに、前記追加情報が有ることを示す情報を含むレスポンスを前記外部装置へ送信する第1の処理部と、
前記外部装置から前記追加情報を要求するコマンドを受信した場合、前記記憶部に記憶している前記追加情報を前記外部装置へ送信する第2の処理部と、
を有することを特徴とする携帯可能電子装置。
【請求項2】
前記生成部は、前記実行部により実行した前記コマンド処理がエラーとなった場合に前記コマンド処理におけるエラーの内容を示す追加情報を生成し、
前記第1の処理部は、前記実行部によるコマンド処理がエラーとなったことを示す情報とともに前記追加情報が有ることを示す情報を含むレスポンスを前記外部装置へ送信する、
ことを特徴とする前記請求項1に記載の携帯可能電子装置。
【請求項3】
前記第2の処理部は、前記第1の処理部により追加情報が有ることを示す情報を含むレスポンスを送信した後、次に受信するコマンドが前記追加情報を要求するコマンドである場合に、前記追加情報を前記外部装置へ送信する、
ことを特徴とする前記請求項1又は2の何れか1つに記載の携帯可能電子装置。
【請求項4】
さらに、データを記憶するメモリを有し、
前記生成部は、前記メモリへのデータの書込みを要求する書込みコマンドに応じた書込み処理がエラーとなった場合に、前記エラーの詳細な内容を示す追加情報を生成し、
前記第1の処理部は、前記実行部による前記書込み処理がエラーとなったことを示す情報とともに前記追加情報が有ることを示す情報を含むレスポンスを前記外部装置へ送信する、
ことを特徴とする前記請求項1乃至3の何れか1つに記載の携帯可能電子装置。
【請求項5】
前記記憶部は、前記生成部により生成した詳細情報を複数件分記憶し、
前記第2の処理部は、前記追加情報を要求するコマンドを受信した場合、前記記憶部に記憶した追加情報から前記外部装置へ送信すべき1つの追加情報を特定し、前記特定した追加情報を前記外部装置へ送信する、
を有することを特徴とする前記請求項1に記載の携帯可能電子装置。
【請求項6】
前記第2の処理部は、前記追加情報を要求するコマンドが追加情報を指定する情報を含まない場合、前記記憶部に記憶されている最新の追加情報を送信すべき追加情報と特定する、
ことを特徴とする前記請求項5に記載の携帯可能電子装置。
【請求項7】
前記記憶部は、前記生成部により生成した追加情報と、当該追加情報を生成した処理のコマンドを示す情報と、を対応付けて記憶し、
前記第2の処理部は、前記追加情報を要求するコマンドにおいて送信すべき追加情報を生成した処理のコマンドが指定されている場合、前記指定されたコマンドと対応づけて前記記憶部に記憶している追加情報を送信すべき追加情報と特定する、
ことを特徴とする前記請求項5又は6の何れか1つに記載の携帯可能電子装置。
【請求項8】
さらに、前記第2の処理部により送信した追加情報を前記記憶部から削除する削除部(S129)を有する、
ことを特徴とする前記請求項1乃至7の何れか1つに記載の携帯可能電子装置。
【請求項9】
さらに、前記生成部により生成した追加情報の種別を決定する種別決定部と、
前記追加情報を要求するコマンド以外のコマンドを受信した場合、前記記憶部が記憶している追加情報を当該追加情報の種別に応じて処理する追加情報処理部と、を有し、
前記記憶部は、前記追加情報と当該追加情報の種別とを対応づけて記憶する、
ことを特徴とする前記請求項1に記載の携帯可能電子装置。
【請求項10】
前記追加情報処理部は、前記記憶部に記憶している追加情報の種別が前記外部装置へ通知が必須な種別である場合、前記外部装置から受信したコマンドに対する処理として前記第1の処理部により当該追加情報が有ることを通知する処理のみを行う、
ことを特徴とする前記請求項9に記載の携帯可能電子装置。
【請求項11】
前記追加情報処理部は、前記記憶部に記憶している追加情報の種別が前記外部装置へ通知が任意の種別である場合、前記外部装置から受信したコマンドに対する処理として当該追加情報を削除する、
ことを特徴とする前記請求項9または10の何れかに記載の携帯可能電子装置。
【請求項12】
前記種別決定部は、前記追加情報の種別として、当該追加情報を前記外部装置へ通知する必要性を示す優先度を決定し、
前記追加情報処理部は、前記記憶部が記憶する前記追加情報に対する処理内容を優先度に応じて決定する、
ことを特徴とする前記請求項9乃至11の何れか1つに記載の携帯可能電子装置。
【請求項13】
前記種別決定部は、同じ内容の追加情報が前記記憶部に記憶されている場合、当該追加情報の優先度を高くする、
ことを特徴とする前記請求項12に記載の携帯可能電子装置。
【請求項14】
外部装置との通信を行う通信部と、前記通信部により前記外部装置から受信したコマンドに応じたコマンド処理を実行する実行部と、前記実行部により実行した前記コマンド処理の結果に関連する追加情報を生成する生成部と、前記生成部により生成した前記追加情報を記憶する記憶部と、前記記憶部により前記生成部が生成した前記追加情報を記憶した場合、前記実行部によるコマンド処理の結果とともに、前記追加情報が有ることを示す情報を含むレスポンスを前記外部装置へ送信する第1の処理部と、前記外部装置から前記追加情報を要求するコマンドを受信した場合、前記記憶部に記憶している前記追加情報を前記外部装置へ送信する第2の処理部と、を有するモジュールと、
前記モジュールを有する本体と、
を有することを特徴とするICカード。
【請求項15】
外部装置から供給されるコマンドを処理する携帯可能電子装置に用いられる制御方法であって、
前記外部装置から受信したコマンドに応じたコマンド処理を実行し、
前記実行した前記コマンド処理の結果に応じて、前記コマンド処理の結果に対する追加情報を生成し、
前記生成した前記追加情報を記憶し、
前記生成した前記追加情報を記憶した場合、前記実行したコマンド処理の結果とともに、前記追加情報が有ることを示す情報を含むレスポンスを前記外部装置へ送信し、
前記外部装置から前記追加情報を要求するコマンドを受信した場合、前記追加情報を前記外部装置へ送信する、
ことを特徴とする携帯可能電子装置の制御方法。
【請求項1】
外部装置との通信を行う通信部と、
前記通信部により前記外部装置から受信したコマンドに応じたコマンド処理を実行する実行部と、
前記実行部により実行した前記コマンド処理の結果に関連する追加情報を生成する生成部と、
前記生成部により生成した前記追加情報を記憶する記憶部と、
前記記憶部により前記生成部が生成した前記追加情報を記憶した場合、前記実行部によるコマンド処理の結果とともに、前記追加情報が有ることを示す情報を含むレスポンスを前記外部装置へ送信する第1の処理部と、
前記外部装置から前記追加情報を要求するコマンドを受信した場合、前記記憶部に記憶している前記追加情報を前記外部装置へ送信する第2の処理部と、
を有することを特徴とする携帯可能電子装置。
【請求項2】
前記生成部は、前記実行部により実行した前記コマンド処理がエラーとなった場合に前記コマンド処理におけるエラーの内容を示す追加情報を生成し、
前記第1の処理部は、前記実行部によるコマンド処理がエラーとなったことを示す情報とともに前記追加情報が有ることを示す情報を含むレスポンスを前記外部装置へ送信する、
ことを特徴とする前記請求項1に記載の携帯可能電子装置。
【請求項3】
前記第2の処理部は、前記第1の処理部により追加情報が有ることを示す情報を含むレスポンスを送信した後、次に受信するコマンドが前記追加情報を要求するコマンドである場合に、前記追加情報を前記外部装置へ送信する、
ことを特徴とする前記請求項1又は2の何れか1つに記載の携帯可能電子装置。
【請求項4】
さらに、データを記憶するメモリを有し、
前記生成部は、前記メモリへのデータの書込みを要求する書込みコマンドに応じた書込み処理がエラーとなった場合に、前記エラーの詳細な内容を示す追加情報を生成し、
前記第1の処理部は、前記実行部による前記書込み処理がエラーとなったことを示す情報とともに前記追加情報が有ることを示す情報を含むレスポンスを前記外部装置へ送信する、
ことを特徴とする前記請求項1乃至3の何れか1つに記載の携帯可能電子装置。
【請求項5】
前記記憶部は、前記生成部により生成した詳細情報を複数件分記憶し、
前記第2の処理部は、前記追加情報を要求するコマンドを受信した場合、前記記憶部に記憶した追加情報から前記外部装置へ送信すべき1つの追加情報を特定し、前記特定した追加情報を前記外部装置へ送信する、
を有することを特徴とする前記請求項1に記載の携帯可能電子装置。
【請求項6】
前記第2の処理部は、前記追加情報を要求するコマンドが追加情報を指定する情報を含まない場合、前記記憶部に記憶されている最新の追加情報を送信すべき追加情報と特定する、
ことを特徴とする前記請求項5に記載の携帯可能電子装置。
【請求項7】
前記記憶部は、前記生成部により生成した追加情報と、当該追加情報を生成した処理のコマンドを示す情報と、を対応付けて記憶し、
前記第2の処理部は、前記追加情報を要求するコマンドにおいて送信すべき追加情報を生成した処理のコマンドが指定されている場合、前記指定されたコマンドと対応づけて前記記憶部に記憶している追加情報を送信すべき追加情報と特定する、
ことを特徴とする前記請求項5又は6の何れか1つに記載の携帯可能電子装置。
【請求項8】
さらに、前記第2の処理部により送信した追加情報を前記記憶部から削除する削除部(S129)を有する、
ことを特徴とする前記請求項1乃至7の何れか1つに記載の携帯可能電子装置。
【請求項9】
さらに、前記生成部により生成した追加情報の種別を決定する種別決定部と、
前記追加情報を要求するコマンド以外のコマンドを受信した場合、前記記憶部が記憶している追加情報を当該追加情報の種別に応じて処理する追加情報処理部と、を有し、
前記記憶部は、前記追加情報と当該追加情報の種別とを対応づけて記憶する、
ことを特徴とする前記請求項1に記載の携帯可能電子装置。
【請求項10】
前記追加情報処理部は、前記記憶部に記憶している追加情報の種別が前記外部装置へ通知が必須な種別である場合、前記外部装置から受信したコマンドに対する処理として前記第1の処理部により当該追加情報が有ることを通知する処理のみを行う、
ことを特徴とする前記請求項9に記載の携帯可能電子装置。
【請求項11】
前記追加情報処理部は、前記記憶部に記憶している追加情報の種別が前記外部装置へ通知が任意の種別である場合、前記外部装置から受信したコマンドに対する処理として当該追加情報を削除する、
ことを特徴とする前記請求項9または10の何れかに記載の携帯可能電子装置。
【請求項12】
前記種別決定部は、前記追加情報の種別として、当該追加情報を前記外部装置へ通知する必要性を示す優先度を決定し、
前記追加情報処理部は、前記記憶部が記憶する前記追加情報に対する処理内容を優先度に応じて決定する、
ことを特徴とする前記請求項9乃至11の何れか1つに記載の携帯可能電子装置。
【請求項13】
前記種別決定部は、同じ内容の追加情報が前記記憶部に記憶されている場合、当該追加情報の優先度を高くする、
ことを特徴とする前記請求項12に記載の携帯可能電子装置。
【請求項14】
外部装置との通信を行う通信部と、前記通信部により前記外部装置から受信したコマンドに応じたコマンド処理を実行する実行部と、前記実行部により実行した前記コマンド処理の結果に関連する追加情報を生成する生成部と、前記生成部により生成した前記追加情報を記憶する記憶部と、前記記憶部により前記生成部が生成した前記追加情報を記憶した場合、前記実行部によるコマンド処理の結果とともに、前記追加情報が有ることを示す情報を含むレスポンスを前記外部装置へ送信する第1の処理部と、前記外部装置から前記追加情報を要求するコマンドを受信した場合、前記記憶部に記憶している前記追加情報を前記外部装置へ送信する第2の処理部と、を有するモジュールと、
前記モジュールを有する本体と、
を有することを特徴とするICカード。
【請求項15】
外部装置から供給されるコマンドを処理する携帯可能電子装置に用いられる制御方法であって、
前記外部装置から受信したコマンドに応じたコマンド処理を実行し、
前記実行した前記コマンド処理の結果に応じて、前記コマンド処理の結果に対する追加情報を生成し、
前記生成した前記追加情報を記憶し、
前記生成した前記追加情報を記憶した場合、前記実行したコマンド処理の結果とともに、前記追加情報が有ることを示す情報を含むレスポンスを前記外部装置へ送信し、
前記外部装置から前記追加情報を要求するコマンドを受信した場合、前記追加情報を前記外部装置へ送信する、
ことを特徴とする携帯可能電子装置の制御方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2011−216068(P2011−216068A)
【公開日】平成23年10月27日(2011.10.27)
【国際特許分類】
【出願番号】特願2010−201407(P2010−201407)
【出願日】平成22年9月8日(2010.9.8)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成23年10月27日(2011.10.27)
【国際特許分類】
【出願日】平成22年9月8日(2010.9.8)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]