説明

携帯可能電子装置、ICカード、携帯可能電子装置の処理システムおよび携帯可能電子装置の制御方法

【課題】コマンドチェイニングを用いて1つのデータを複数のコマンドに分割して送信した場合であっても、当該コマンド処理のエラー内容に応じた効率的なリトライ処理が実現可能となるICカードおよびICカード処理システムを提供できる。
【解決手段】ICカード2は、コマンドチェイニングされた複数の書込みコマンドを受信し、受信した各コマンドのデータを連結し、連結したデータに対する書込み処理を実行する。ICカード2は、連結したデータに対する書込み処理中にエラーが発生した場合、コマンドに対するエラー通知だけでなく、どのようなデータの書込みでエラーが発生したかを示す情報をコマンドの送信元としてのICカード処理装置1に通知するようにしたものである。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、たとえば、書込みあるいは書換えが可能な不揮発性メモリおよびCPUなどの制御部を具備し、上位装置から与えられるコマンドに応じた処理を行うICカードなどの携帯可能電子装置、携帯可能電子装置の処理システムおよび携帯可能電子装置の制御方法に関する。
【背景技術】
【0002】
従来、携帯可能電子装置としてのICカードは、不揮発性メモリとしてのデータメモリ、揮発性メモリとしてのワーキングメモリ、これらのメモリに対してアクセス(データの読出しおよびまたは書込み等)を行う制御部、および、制御部の動作用プログラム等を格納したプログラムメモリを有する。このようなICカードでは、外部装置から供給される命令(コマンド)に応じてデータの入出力などの処理を行なう。近年では、上記のようなICカードが産業各方面で利用されることが多くなってきている。さらに、ICカードに用いられるデータメモリが大容量化されてきている。このため、ICカードでは、サイズの大きなデータを処理することが多くなってきている。
【0003】
一方、ICカードなどの携帯可能電子装置に適用される国際標準規格である「ISO7816−4 Second edition」では、コマンドチェイニング(command chaining)という仕様が規定されている。コマンドチェイニングは、複数のコマンドで供給するデータを連結させてICカードに処理させる仕様である。たとえば、コマンドチェイニングは、1回のコマンドでは送信しきれないデータを複数のコマンドで送信するのに用いることが想定される。
【0004】
現状のICカードでは、コマンドチェイニングで連結すべきデータを全て受信した場合、連結したデータを用いた処理を通常のコマンド処理と同様に実行する。このため、現状のICカードでは、コマンドチェイニングで連結したデータに対する処理がエラーとなった場合、通常のコマンド処理と同様に、コマンド処理でエラーが発生したことを示すステータスを返す。このようなステータスだけではコマンドの送信元が詳細なエラー内容を把握できない。このため、現在のシステムでは、エラーが発生した場合、コマンドチェイニングで連結させる全コマンドを再度ICカードへ供給し、ICカードに全工程の処理を再度実行させる。しかしながら、コマンドチェイニングで送信されるデータは大きい。このため、コマンドチェイニングで連結する全データの再送信および全データに対する再度の処理には、多大な時間がかかるという問題がある。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】ISO7816−4 Second edition
【発明の概要】
【発明が解決しようとする課題】
【0006】
この発明の一形態は、処理対象とするデータのサイズが大きい場合であっても効率的に処理を行うことができる携帯可能電子装置、ICカード、携帯可能電子装置の処理システムおよび携帯可能電子装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
この発明の一形態としての携帯可能電子装置は、上位装置から与えられるコマンドに応じた処理を行うものであって、前記上記装置から与えられたコマンドに後続のコマンドとの連結指示が含まれるか否かを判定する判定手段と、前記判定手段により連結指示が含まれると判定した場合、当該コマンドの受信完了に応じて当該コマンドの正常終了を前記上位装置へ通知する通知手段と、前記通知手段により連結指示を含むコマンドの受信完了を通知した後に前記判定手段により前記連結指示を含まないと判定されるコマンドが前記上位装置から与えられた場合、前記連結指示に基づいて各コマンドのデータを連結したデータによるコマンド処理を実行する実行手段と、前記実行手段による実行するコマンド処理中にエラーが発生した場合、当該エラーの内容を示す情報を生成する生成手段と、前記生成手段により生成されたエラー内容を示す情報を前記連結指示を含まないと判定されるコマンドに対するエラー通知とともに前記上位装置へ出力する出力手段とを有する。
【0008】
この発明の一形態としてのICカードは、上位装置から与えられるコマンドに応じた処理を行うものであって、前記上記装置から与えられたコマンドに後続のコマンドとの連結指示が含まれるか否かを判定する判定手段と、前記判定手段により連結指示が含まれると判定した場合、当該コマンドの受信完了に応じて当該コマンドの正常終了を前記上位装置へ通知する通知手段と、前記通知手段により連結指示を含むコマンドの受信完了を通知した後に前記判定手段により前記連結指示を含まないと判定されるコマンドが前記上位装置から与えられた場合、前記連結指示に基づいて各コマンドのデータを連結したデータによるコマンド処理を実行する実行手段と、前記実行手段による実行するコマンド処理中にエラーが発生した場合、当該エラーの内容を示す情報を生成する生成手段と、前記生成手段により生成されたエラー内容を示す情報を前記連結指示を含まないと判定されるコマンドに対するエラー通知とともに前記上位装置へ出力する出力手段とを有するICモジュールと、前記ICモジュールを収納したICカード本体と、を有する。
【0009】
この発明の一形態としての携帯可能電子装置の処理システムは、上位装置と前記上位装置から与えられるコマンドに応じた処理を行う携帯可能電子装置とを有するシステムであって、前記上位装置は、前記携帯可能電子装置が処理すべき1つのデータを複数のデータに分割して複数のコマンドに格納し、それれらのコマンドを連結指示とともに順に前記携帯可能電子装置へ送信する送信手段と、前記送信手段により前記複数のコマンドを送信した後、前記ICカードからエラー通知とともに供給されるエラー内容を示す情報に基づいて当該エラーに対するリカバリ処理の内容を決定する決定手段と、前記決定手段により決定したリカバリ処理を実行させるためのコマンドを生成し、生成したコマンドを前記携帯可能電子装置へ送信するリトライ処理手段とを有し、前記携帯可能電子装置は、前記上位装置から与えられたコマンドに後続のコマンドとの連結指示が含まれるか否かを判定する判定手段と、前記判定手段により連結指示が含まれると判定した場合、当該コマンドの受信完了に応じてコマンドの正常終了を前記上位装置へ通知する通知手段と、前記通知手段により連結指示を含むコマンドの受信完了を通知した後に前記判定手段により前記連結指示を含まないと判定されるコマンドが前記上位装置から与えられた場合、前記連結指示に基づいて各コマンドのデータを連結したデータによるコマンド処理を実行する実行手段と、前記実行手段による実行するコマンド処理中にエラーが発生した場合、当該エラーの内容を示す情報を生成する生成手段と、前記生成手段により生成されたエラー内容を示す情報を前記連結指示を含まないと判定されるコマンドに対するエラー通知とともに前記上位装置へ出力する出力手段とを有する。
【0010】
この発明の一形態としての携帯可能電子装置の制御方法は、上位装置から与えられるコマンドに応じた処理を行う方法であって、前記上記装置から与えられたコマンドに後続のコマンドとの連結指示が含まれるか否かを判定し、前記判定により連結指示が含まれると判定した場合、当該コマンドの受信完了に応じて当該コマンドの正常終了を前記上位装置へ通知し、前記連結指示を含むコマンドの受信完了を通知した後に前記連結指示を含まないと判定されるコマンドが前記上位装置から与えられた場合、前記連結指示に基づいて各コマンドのデータを連結したデータによるコマンド処理を実行し、前記実行するコマンド処理中にエラーが発生した場合、当該エラーの内容を示す情報を生成し、前記生成されたエラー内容を示す情報を前記連結指示を含まないと判定されるコマンドに対するエラー通知とともに前記上位装置へ出力する。
【発明の効果】
【0011】
この発明の一形態によれば、処理対象とするデータのサイズが大きい場合であっても効率的に処理を行うことができる携帯可能電子装置、ICカード、携帯可能電子装置の処理システムおよび携帯可能電子装置の制御方法を提供できる。
【図面の簡単な説明】
【0012】
【図1】図1は、実施の形態に係るICカード処理システムの構成例を概略的に示すブロック図である。
【図2】図2は、ICカードのハードウエア構成例を概略的に示すブロック図である。
【図3】図3は、ICカードに与えられるコマンドフォーマットの構成例を示す図である。
【図4】図4は、ICカードにおけるコマンド処理の流れを説明するためのフローチャートである。
【図5】図5は、コマンドチェイニングにより連結させるデータの書込み処理の流れを説明するためのシーケンス図である。
【発明を実施するための形態】
【0013】
以下、この発明の実施の形態について図面を参照して説明する。
図1は、本実施の形態に係るICカード処理システム全体の構成を概略的に示すブロック図である。図1に示す構成例において、ICカード処理システムは、ICカード(携帯可能電子装置)2、および、ICカード2との通信機能を有する上位装置としてのICカード処理装置1により構成されている。
まず、上記ICカード処理装置1の構成について説明する。
上記ICカード処理装置1は、図1に示すように、制御装置11、ディスプレイ12、キーボード13、テンキー14、及び、カードリーダライタ15などを有している。
【0014】
上記制御装置11は、ICカード処理装置1全体の動作を制御するものである。上記制御装置11は、CPU、種々のメモリ及び各種インターフェースなどにより構成される。たとえば、上記制御装置11は、パーソナルコンピュータ(PC)により構成される。
上記制御装置11は、上記カードリーダライタ15によりICカード2へコマンドを送信する機能、ICカード2から受信したデータを基に種々の処理を行う機能などを有している。たとえば、上記制御装置11は、カードリーダライタ15を介してICカード2にデータの書き込みコマンドを送信することによりICカード2内の不揮発性メモリにデータを書き込む制御を行う。また、上記制御装置11は、ICカード2に読み取りコマンドを送信することによりICカード2からデータを読み出す制御を行う。
【0015】
上記ディスプレイ12は、上記制御装置11の制御により種々の情報を表示する表示装置である。上記キーボード13は、当該ICカード処理装置1の操作員が操作する操作部として機能し、操作員により種々の操作指示やデータなどが入力される。上記テンキー14は、使用者IDあるいはパスワードなど数字などの情報を入力する為の入力部として機能する。
【0016】
上記カードリーダライタ15は、上記ICカード2との通信を行うためのインターフェース装置である。上記カードリーダライタ15は、上記ICカード2の通信方式に応じたインターフェースにより構成される。たとえば、上記ICカード2が接触型のICカードである場合、上記カードリーダライタ15は、ICカード2のコンタクト部と物理的かつ電気的に接続するための接触部などにより構成される。また、上記ICカード2が非接触型のICカードである場合、上記カードリーダライタ15は、ICカード2との無線通信を行うためのアンテナおよび通信制御などにより構成される。上記カードリーダライタ15では、上記ICカード2に対する電源供給、クロック供給、リセット制御、データの送受信が行われるようになっている。このような機能によってカードリーダライタ15は、上記制御装置11による制御に基づいて上記ICカード2の活性化(起動)、種々のコマンドの送信、及び送信したコマンドに対する応答の受信などを行なう。
【0017】
次に、上記ICカード2について説明する。
上記ICカード2は、上記ICカード処理装置1などの上位機器から電力などの供給を受けた際、活性化される(動作可能な状態になる)ようになっている。例えば、上記ICカード2が接触型の通信によりICカード処理装置1と接続される場合、つまり、ICカード2が接触型のICカードで構成される場合、上記ICカード2は、通信インターフェースとしてのコンタクト部を介してICカード処理装置1からの動作電源及び動作クロックの供給を受けて活性化される。
【0018】
また、上記ICカード2が非接触型の通信方式によりICカード処理装置1と接続される場合、つまり、上記ICカード2が非接触式のICカードで構成される場合、上記ICカード2は、通信インターフェースとしてのアンテナ及び変復調回路などを介してICカード処理装置1からの電波を受信し、その電波から図示しない電源部により動作電源及び動作クロックを生成して活性化するようになっている。
【0019】
次に、上記ICカード2の構成例について説明する。
図2は、本実施の形態に係るICカード2の構成例を概略的に示すブロック図である。上記ICカード2は、本体Cを構成する筐体内にモジュールMが内蔵されている。上記モジュールMは、1つまたは複数のICチップCaと通信用の外部インターフェース(通信インターフェース)とが接続された状態で一体的に形成され、ICカード2の本体C内に埋設されている。また、上記ICカード2のモジュールMは、図2に示すように、制御部21、通信インターフェース22、ROM23、RAM24、不揮発性メモリ25などを有してしている。
【0020】
上記制御部21は、当該ICカード2全体の制御を司るものである。上記制御部21は、上記ROM23あるいは上記不揮発性メモリ25に記憶されている制御プログラムや制御データに基づいて動作することにより、種々の機能を実現する。また、各種の機能のうちの一部は、ハードウエア回路により実現されるものであっても良い。この場合、上記制御部21は、ハードウエア回路により実行される機能を制御する。
【0021】
上記通信インターフェース22は、上記ICカード処理装置1のカードリーダライタ15との通信を行うためのインターフェースである。当該ICカード2が接触型のICカードとして実現される場合、上記通信インターフェース22は、上記ICカード処理装置1のカードリーダライタ15と物理的かつ電気的に接触して信号の送受信を行うための通信制御部とコンタクト部とにより構成される。また、当該ICカード2が非接触型のICカードとして実現される場合、通信インターフェース22は、上記ICカード処理装置1のカードリーダライタ15との無線通信を行うための変復調回路などの通信制御部とアンテナとにより構成される。
【0022】
上記ROM23は、予め制御用のプログラムや制御データなどが記憶されている不揮発性のメモリである。上記ROM23は、製造段階で制御プログラムや制御データなどが記憶された状態でICカード2内に組み込まれるものである。つまり、上記ROM23に記憶されている制御プログラムや制御データは、予め当該ICカード2の仕様に応じて組み込まれる。たとえば、上記ROM23には、ICカード処理装置1から受信したコマンドに応じた処理を制御部21が実行するためのプログラムが記憶される。
【0023】
上記RAM24は、ワーキングメモリとして機能する揮発性のメモリである。また、上記RAM24は、制御部21が処理中のデータなどを一時保管するバッファとしても機能する。例えば、上記RAM24は、上記通信インターフェース22を介してICカード処理装置1から受信したデータを一時保管するようになっている。
【0024】
上記不揮発性メモリ25は、例えば、EEPROM(Electrically Erasable Programmable Read Only Memory)あるいはフラッシュROMなどのデータの書き込み及び書換えが可能な不揮発性のメモリにより構成される。上記不揮発性メモリ25には、当該ICカード2の運用用途に応じて制御プログラムや種々のデータが書込まれる。たとえば、上記不揮発性メモリ25では、プログラムファイルあるいはデータファイルなどが定義され、それらのファイルに制御プログラムや種々のデータが書き込まれる。
【0025】
次に、本ICカード2が対応するコマンドチェイニング(command chaining)という仕様について詳細に説明する。
コマンドチェイニングは、ICカード2が連続する複数のコマンドで受信したデータを連結させ、連結したデータ全体を処理対象の1つのデータとしてコマンド処理を実行する仕様である。たとえば、「command chaining」という仕様は、ICカードの国際標準規格である「ISO7816−4 Second edition」で規定されている。ここでは、コマンドチェイニングの仕様は、「ISO7816−4 Second edition」で規定されている「command chaining」の仕様を想定するものとする。
【0026】
上記コマンドチェイニングは、複数のコマンドで1つのデータをICカード2へ供給するために用いられる。つまり、上記コマンドチェイニングを用いれば、サイズが大きなサイズのデータであっても、複数のコマンドでICカード2へ送信できる。たとえば、ICカード処理装置1がコマンドチェイニングを用いて書込み用のデータを複数のコマンドに分けて送信すれば、ICカード2では、コマンドチェイニングにより連結すべき複数のコマンドのデータを連結して書込み処理を実行する。
【0027】
通常のICカード処理システムでは、コマンドデータとして送信可能なデータサイズの上限が規定されている。このため、ICカード処理装置1は、上限サイズを超えるサイズの大きなデータを複数のコマンドに分割してICカード2へ送信する必要がある。言い換えれば、所定のコマンドデータの上限サイズを超えるサイズの大きなデータは、上記コマンドチェイニングにより連結される複数のコマンドデータとして複数のコマンドでICカード2へ送信することが可能である。
【0028】
ICカード2では、コマンドチェイニングを指示するコマンドを受信した場合、当該コマンドのデータと次に受信するコマンドのデータとを順にRAM24等にバッファリングする。これにより、ICカード2では、コマンドチェイニングを指示されたコマンドのデータと次に受信するコマンドのデータとを連結させる。ICカード2は、コマンドチェイニングで連結すべきデータを全て受信した後、連結したデータを用いたコマンドに応じた処理(たとえば、データの書込み処理)を実行する。
【0029】
また、ICカード2は、コマンドチェインニングで連結したデータに対する処理結果をICカード処理装置1に送信する。たとえば、コマンドチェインニングで連結したデータに対する処理が正常に終了した場合、当該ICカード2では、正常終了を示すステータスを送信する。コマンドチェインニングで連結したデータに対する処理中にエラーが発生した場合、当該ICカード2は、エラーが発生したことを示すステータスだけでなく、エラー内容を示す情報もICカード処理装置1へ送信する。つまり、本ICカード2は、コマンドチェイニングで連結したデータに対する処理でエラーが発生した場合、単に、エラーが発生したことだけなく、エラーの具体的な内容をICカード処理装置1へ通知する機能を有している。
【0030】
上記エラー内容を示す情報は、ICカード処理装置1がICカード2に対して、当該処理の再度試行を効率良く行わせるために必要な情報である。たとえば、コマンドチェイニングで連結したデータを不揮発性メモリ25に書込み処理においてエラーが発生した場合、エラー内容を示す情報は、書込みエラーとなったデータを示す情報が考えられる。書込みエラーとなったデータを示す情報としては、例えば、不揮発性メモリ25における書込みエラーが発生したメモリアドレス、あるいは、連結したデータ(書込みデータ全体)の先頭から書込みエラーとなったデータまでのデータ長(オフセット)を示す情報などが考えられる。
【0031】
次に、ICカード2に与えられるコマンドのフォーマットについて説明する。
図3は、コマンドフォーマットの構成例を示す図である。図3に示すコマンドは、「CLA」部、「INS」部、「P1」部、「P2」部、「Lc」部、「Data」部により構成される。
【0032】
「CLA」部および「INS」部は、コマンドの種類(実行すべき処理内容)を示す情報が格納される。上述したコマンドチェイニングの有無は、「CLA」部に格納される情報により指定される。たとえば、「ISO7816−4 Second edition」では、「CLA」部に格納される情報が「01x1xxxx」である場合にはコマンドチェイニングを指示し、「01x0xxxx」である場合にはコマンドチェイニングしないことを指示するものと規定されている。なお、「x」は任意の値を示すものとする。
【0033】
また、「P1」部および「P2」部には、当該コマンドの処理パラメータを示す情報が格納される。「Lc」部には、当該コマンドにおけるデータの長さを示す情報が格納される。上記「Data」部には、当該コマンドにおけるデータが格納される。たとえば、当該コマンドがデータの書込みを要求するコマンドである場合、書込むべきデータが「Data」部に格納され、その「Data」部に格納されたデータの長さ(サイズ)を示す情報が「Lc」部に格納される。
【0034】
上記のように構成されるコマンドに対して、ICカード2は、レスポンスを送信する。たとえば、コマンドで要求される処理を正常に実行した場合、ICカード2は、正常終了を示すステータスワード(SW)(たとえば、「9000」)を含むレスポンスデータをコマンドの送信元へ送信する。また、コマンドで要求されるデータの書込み処理がエラーとなった場合、ICカード2は、書込みエラーとなったことを示すステータスワード(たとえば、「6581」)を含むレスポンスデータをコマンドの送信元へ送信する。
【0035】
上記コマンドチェイニングを指示するコマンドを受信した場合、ICカード2は、当該コマンドのデータのバッファリングが完了したのに基づいて、正常終了を示すステータスワード(たとえば、「9000」)を含むレスポンスデータをコマンドの送信元へ送信する。このようなレスポンスデータを受けて、ICカード処理装置1では、コマンドチェイニングで連結すべきデータを複数のコマンドで順次ICカード2へ供給する。
【0036】
コマンドチェイニング無しを指定するコマンドは、当該コマンドが次のコマンドと連鎖しないことを示す。つまり、コマンドチェイニング無しを指定するコマンドは、単独で実行すべきコマンド、あるいは、コマンドチェイニングにより連結される最後のデータを含むコマンドの何れかである。
【0037】
すなわち、ICカード処理装置1は、連結すべき最後のデータを含むコマンドにおいてコマンドチェイニング無しを指示することにより、連結したデータによる当該コマンドの実行を要求する。また、コマンドチェイニングにより連結したデータに対する処理でエラーが発生した場合、ICカード2は、データ書込みがエラーとなったことを示すステータスワード(たとえば、「6581」)ととともに、エラー内容を示す情報を含むレスポンスデータをコマンドの送信元としてのICカード処理装置1へ送信する。
【0038】
次に、ICカード2におけるコマンドチェイニングが指示されたコマンドに対する処理の流れについて説明する。
図4は、ICカード2におけるコマンド処理の流れを説明するためのフローチャートである。
電源供給を受けているICカード2では、待機状態において、通信インターフェース22によりICカード処理装置1からのコマンドが受信可能となっている(ステップS11)。この状態においてICカード処理装置1からのコマンドを上記通信インターフェース22が受信した場合(ステップS11、YES)、ICカード2の制御部21は、受信したコマンドがコマンドチェイニングの指示を含んでいるか否かを判断する(ステップS12)。たとえば、制御部21は、受信したコマンドのCLA部における特定ビットの値によりコマンドチェイニングが指示されているか否かを判断する。
【0039】
上記判断によりコマンドチェイニングの指示が無いと判断した場合(ステップS12、NO)、制御部21は、当該受信したコマンドを単独で処理すべきであると判断する。この場合、制御部21は、通常のコマンド処理として、受信したコマンドに応じた処理を実行する。
【0040】
また、上記判断によりコマンドチェイニングの指示が有ると判断した場合(ステップS12、YES)、制御部21は、当該コマンドに対する処理として、通信インターフェース22により受信するコマンドのデータをRAM24にバッファリングする。制御部21は、コマンドチェイニングが指示されている場合、当該コマンドのデータをRAM24に正常に格納したのに基づいて当該コマンドが正常に処理されたものと判断する。従って、上記制御部21は、コマンドのデータをRAM24に正常に格納したのに基づいて、当該コマンドの正常終了を示すレスポンスをICカード処理装置1へ送信する(ステップS13)。
【0041】
上記コマンドチェイニングが指示されているコマンドに対する正常終了を示すレスポンスを送信すると、制御部21は、RAM24にバッファリングしたデータに連結するデータを含むコマンドの受信待ち状態となる(ステップS14)。この状態において通信インターフェース22によりコマンドを受信すると、制御部21は、RAM24に格納済みのデータ(前回受信したコマンドのデータ)に連結させて、受信するコマンドのデータをRAM24に格納する(ステップS15)。
【0042】
また、上記制御部21は、受信したコマンドがさらにコマンドチェイニングの指示を含んでいるか否かを判断する(ステップS16)。このステップS16では、受信したコマンドがコマンドチェイニングの指示を含むか否かを上記ステップS12と同様な手法で判断する。ただし、上記ステップS16の判断は、前のコマンドと連結するコマンドに対する判断である。これは、上記ステップS16では、受信したコマンドのデータがコマンドチェイニングにより連結すべき最後のデータであるか否かを判断することを意味している。
【0043】
つまり、上記ステップS16でコマンドチェイニングしないと判断した場合(受信したコマンドがコマンドチェイニングの指示を含まない場合)、制御部21は、コマンドチェイニングにより連結すべき最後のデータであると判断する。
上記ステップS16で受信したコマンドがコマンドチェイニングの指示を含むと判断した場合(ステップS16、YES)、制御部21は、上記ステップS13〜S16の処理を繰り返し実行する。
【0044】
上記ステップS16で受信したコマンドがコマンドチェイニングの指示を含まないと判断した場合(ステップS16、NO)、制御部21は、当該受信コマンドのデータがコマンドチェイニングにより連結すべき最後のデータであると判断する。コマンドチェイニングにより連結すべき最後のデータを受信すると、制御部21は、連結したデータ全体を用いたコマンド処理を実行する(ステップS17)。たとえば、当該コマンドがデータの書込みを要求するコマンドである場合、制御部21は、コマンド処理として、連結したデータ全体を不揮発性メモリ25に書込む処理を実行する。
【0045】
このようなコマンド処理が正常に完了した場合(ステップS18、NO)、制御部21は、受信したコマンドに対する処理が正常終了したことを示すステータスワード(例えば、9000)を含むレスポンスデータをICカード処理装置1へ送信する(ステップS19)。
【0046】
上記コマンド処理においてエラーが発生した場合(ステップS18、YES)、制御部21は、コマンド処理中に発生したエラーの具体的な内容を解析し、エラー内容の解析結果としてのエラー内容を示す情報を生成する(ステップS20)。エラー内容を示す情報を生成すると、制御部21は、受信したコマンドに対する処理がエラーとなったことを示すステータスワード(例えば、6581)とともに、発生したエラーの具体的な内容を示す情報(エラー内容を示す情報)を含むレスポンスデータをICカード処理装置1へ送信する(ステップS21)。
【0047】
これにより、コマンドチェイニングにより連結するデータを複数のコマンドで送信したICカード処理装置1では、コマンド処理を実行中にどのようなエラーが発生したかを具体的に判別することが可能となる。この結果として、ICカード処理装置1では、単純にコマンドチェイニングを用いて送信した全てのコマンドを再送信することでリトライを実行するのではなく、実際に発生したエラー内容に応じたリトライ処理などのリカバリ処理を効率的に実施することができる。
【0048】
次に、ICカード処理システム全体におけるコマンドチェイニングを用いた処理の流れについて説明する。
図5は、コマンドチェイニングにより連結するデータの書込み処理の流れを説明するためのシーケンス図である。
まず、ICカード処理装置1には、ICカード2の不揮発性メモリ25に書込むべき書込みデータをセットする(ステップS31)。ここでは、セットされた書込データのサイズが300バイトであるものとする。ここでは、1つのコマンドで送信可能な書込みデータの上限サイズが100バイトであるものとする。
【0049】
このような場合、ICカード処理装置1の制御装置11は、300バイトの書込みデータを100バイトを上限とした複数のデータに分割する。ICカード処理装置1の制御装置11は、分割した複数のデータを1つの書込みデータとしてICカード2に書込み処理させるため、分割した各データをコマンドチェイニングで連結させる複数のコマンドのデータ部にそれぞれ格納する。ここでは、制御装置11は、300バイトの書込みデータを3つに分割し、分割した3つのデータをそれぞれコマンドチェイニングで連結させる3つのコマンド(第1、第2、第3コマンド)のデータ部に格納する(ステップS32)。
【0050】
コマンドチェイニングで連結させる複数のコマンドを生成すると、ICカード処理装置1の制御装置11は、各コマンドを順にICカード2へ送信する。すなわち、ICカード処理装置1の制御装置11は、まず、CLA部をコマンドチェイニング有りにセットし、かつ、データ部に1〜100バイト目のデータを格納した第1コマンドをICカード2へ送信する(ステップS33)。
【0051】
上記第1コマンドが供給されたICカード2の制御部21は、当該第1コマンドのCLA部の情報によりコマンドチェイニングが指示されていること判断する。この場合、ICカード2の制御部21は、受信する第1コマンドのデータ部に格納されているデータ(1〜100バイト目の書込みデータ)をRAM24にバッファリングする(ステップS34)。このバッファリングが正常に完了すると、制御部21は、第1コマンドに対する処理が正常終了したことを示すステータスワード(SW=9000)をセットしたレスポンスデータをICカード処理装置1へ送信する。
【0052】
ICカード2から第1コマンドに対する正常終了を示すレスポンスデータを受信したICカード処理装置1の制御装置11は、CLA部をコマンドチェイニング有りにセットし、かつ、データ部に101〜200バイト目のデータを格納した第2コマンドをICカード2へ送信する(ステップS35)。
【0053】
上記第2コマンドが供給されたICカード2の制御部21は、当該第2コマンドのCLA部の情報によりコマンドチェイニングが指示されていること判断する。この場合、ICカード2の制御部21は、第2コマンドのデータ部に格納されているデータ(101〜200バイト目の書込みデータ)を第1コマンドのデータに連結させてRAM24にバッファリングする(ステップS36)。このバッファリングが正常に完了すると、ICカード2の制御部21は、第2コマンドに対する処理が正常終了したことを示すステータスワード(SW=9000)をセットしたレスポンスデータをICカード処理装置1へ送信する。
【0054】
ICカード2から第2コマンドに対する正常終了を示すレスポンスデータを受信したICカード処理装置1の制御装置11は、CLA部をコマンドチェイニング無しにセットし、かつ、データ部に201〜300バイト目のデータを格納した第3コマンドをICカード2へ送信する(ステップS37)。
【0055】
上記第3コマンドが供給されたICカード2の制御部21は、当該第3コマンドのCLA部の情報によりコマンドチェイニングが指示されていないこと判断する。この場合、ICカード2の制御部21は、第3コマンドがコマンドチェイニングする最後のコマンドであると判断する。すなわち、ICカード2の制御部21は、第3コマンドのデータ部に格納されているデータ(201〜300バイト目の書込みデータ)を第2コマンドのデータに連結させてRAM24にバッファリングする(ステップS38)。このバッファリングが正常に完了すると、ICカード2の制御部21は、RAM24にバッファリングした書込みデータ(連結データ)全体を不揮発性メモリ25に書込むコマンド処理を実行する(ステップS39)。
【0056】
ここで、連結したデータの実際の書込み処理中にエラーが発生したものとする。コマンドチェイニングで連結したデータの書込み処理中にエラーが発生した場合、ICカード2の制御部21は、エラー内容を解析する処理を行う(ステップS40)。たとえば、書込み処理のエラー内容として、ICカード2の制御部21は、書込みがエラーとなったデータを解析するものとする。ここで、書込みデータ全体における先頭から151バイト目のデータの書込みがエラーとなったものとする。この場合、ICカード2の制御部21は、エラー内容として151バイト目が書込みエラーとなったことを示す情報を生成する。
【0057】
このエラー内容を示す情報は、書込みエラーとなったデータを示す情報である。書込みエラーとなったデータを示す情報としては、たとえば、書込みデータ(連結したデータ)全体におけるオフセット値(データの先頭から何バイト目かを示す情報)が考えられる。また、書込みエラーとなったデータを示す情報としては、書込みエラーとなった不揮発性メモリにおけるメモリアドレスを示すようにしても良い。
【0058】
コマンド処理におけるエラー内容を示す情報を生成すると、ICカード2の制御部21は、上記のようなエラー内容を示す情報をエラー通知とともに送信する(ステップS41)。すなわち、ICカード2の制御部21は、第3コマンドに対する処理が書込み異常となったことを示すステータスワード(SW=6581)とともに、エラー内容が151バイト目で書込みエラーとなったことを示す情報をセットしたレスポンスデータをICカード処理装置1へ送信する。
【0059】
ICカード2から第3コマンドに対するエラー通知を含むレスポンスデータを受信したICカード処理装置1の制御装置11は、当該レスポンスデータに含まれるエラー内容を示す情報に基づいて続いて実行すべき処理(リカバリ処理)の内容を決定する(ステップS42)。ここでは、リカバリ処理として、書込みエラーとなったデータの再書込み(リトライ)処理を行うものとする。従って、上述した動作例では、ICカード処理装置1の制御装置11は、ICカード2から受信したエラー内容により送信した300バイトの書込みデータのうち151バイト目で書込みエラーとなったことを判別する。この場合、ICカード処理装置1の制御装置11は、151バイト目以降のデータの再書込みをICカードに実行させるためのコマンドを生成する。すなわち、ICカード処理装置1の制御装置11は、151バイト目以降のデータ(151〜300バイト目のデータ)を書込みデータ(再書込みデータ)としてセットする(ステップS42)。
【0060】
このような場合、ICカード処理装置1の制御装置11は、150バイト分の再書込みデータを100バイトを上限とした複数のデータに分割する。ICカード処理装置1の制御装置11は、分割した複数のデータを1つの書込みデータとしてICカード2に書込み処理させるため、分割した各データをコマンドチェイニングで連結させる複数のコマンドのデータ部にそれぞれ格納する。ここでは、制御装置11は、150バイトの書込みデータを2つに分割し、分割した2つのデータをそれぞれコマンドチェイニングで連結させる2つのコマンドのデータ部に格納する(ステップS43)。
【0061】
リトライ処理のためにコマンドとしてコマンドチェイニングで連結させる2つのコマンドを生成すると、ICカード処理装置1の制御装置11は、各コマンドを順にICカード2へ送信する。すなわち、ICカード処理装置1の制御装置11は、まず、CLA部をコマンドチェイニング有りにセットし、かつ、データ部に151〜250バイト目のデータを格納した第1リトライ用コマンドをICカード2へ送信する(ステップS44)。
【0062】
上記第1リトライ用コマンドが供給されたICカード2の制御部21は、当該コマンドのCLA部の情報によりコマンドチェイニングが指示されていること判断する。この場合、ICカード2の制御部21は、受信する第1リトライ用コマンドのデータ部に格納されているデータ(151〜250バイト目の書込みデータ)をRAM24にバッファリングする(ステップS45)。このバッファリングが正常に完了すると、制御部21は、第1リトライ用コマンドに対する処理が正常終了したことを示すステータスワード(SW=9000)をセットしたレスポンスデータをICカード処理装置1へ送信する。
【0063】
ICカード2から第1リトライ用コマンドに対する正常終了を示すレスポンスデータを受信したICカード処理装置1の制御装置11は、CLA部をコマンドチェイニング無しにセットし、かつ、データ部に251〜300バイト目のデータを格納した第2リトライ用コマンドをICカード2へ送信する(ステップS46)。
【0064】
上記第2リトライ用コマンドが供給されたICカード2の制御部21は、当該コマンドのCLA部の情報によりコマンドチェイニングが指示されていないこと判断する。この場合、ICカード2の制御部21は、第2リトライ用コマンドがコマンドチェイニングする最後のコマンドであると判断する。
【0065】
すなわち、ICカード2の制御部21は、第2リトライ用コマンドのデータ部に格納されているデータ(251〜300バイト目の書込みデータ)を第1リトライ用コマンドのデータに連結させてRAM24にバッファリングする(ステップS47)。このバッファリングが正常に完了すると、ICカード2の制御部21は、RAM24にバッファリングした再書込みデータ(連結データ)全体を先に書込んだ150バイト目のデータに続けて不揮発性メモリ25に書込む処理を実行する(ステップS48)。
【0066】
上記のような書込み処理が正常に成功すると、ICカード2の制御部21は、第2リトライ用コマンドに対する処理が正常終了したことを示すステータスワード(SW=9000)をセットしたレスポンスデータをICカード処理装置1へ送信する。これにより、300バイト分の書込みデータを全てICカード2の不揮発性メモリ25に書込む処理が完了したこととなる。
【0067】
なお、上記動作例では、上記ステップS43〜S47の処理において、書込みエラーとなった部分のデータをICカード処理装置1からICカード2へ再度送信するようにしたしている。これに対して、ICカード2のバッファに書込みエラーとなった部分のデータが保持されている状態であれば、上記ステップS43〜S47に替わる処理として、ICカード処理装置1は、エラー部分のデータを再送信することなく、バッファリングされているデータを用いてデータの再書込みを指示するコマンドをICカード2に与えるようにしても良い。
【0068】
通常、ICカード2への電源が供給されている状態であれば、RAM24上にバッファリングされたデータは、通常、別のコマンドを受けるまで保持される。ただし、処理を確実に行うために、ICカード2からは書込みデータを保持していることをエラー通知とともにICカード処理装置1へ通知するようにしても良い。
このような処理形態では、エラー発生した後もICカード2が書込みデータ(連結したデータ)をRAM24上に保持しておく必要があるが、ICカード処理装置1からICカード2へエラーとなったデータを再送信する必要がないため、リトライ処理が高速化できると考えられる。
【0069】
上記のように、本実施の形態で説明したICカード2は、コマンドチェイニングされた複数のコマンドに対する処理の実行中にエラーが発生した場合、エラーが発生したことを通知するだけでなく、エラーの具体的な内容もコマンドの送信元としてのICカード処理装置1に送信するようにしたものである。これにより、ICカード処理装置1では、ICカード2から受信したエラー内容に応じた効率的なリカバリ処理を決定することが可能とする。この結果として、ICカード処理システム全体では、コマンドチェイニングを用いたコマンドの処理を実行する場合にエラーが発生しても、効率的に処理を行うことが可能となる。
【0070】
たとえば、ICカード2は、コマンドチェイニングされた複数の書込みコマンドに対する書込み処理の実行中にエラーが発生した場合、エラー通知とともに、どのようなデータの書込み時にエラーが発生したか示す情報をコマンドの送信元としてのICカード処理装置1に通知する。これにより、ICカード処理装置1では、ICカード2から受信したエラー内容に応じて再書込みすべきデータを特定でき、効率的なリトライ処理を行うためのコマンドをICカード2に対して再供給することができる。この結果として、ICカード処理システム全体では、コマンドチェイニングにより複数のコマンドでICカード2に供給するサイズの大きなデータの書込み処理中にエラーが発生しても、効率的にデータの再書込み処理を行うことが可能となる。
【符号の説明】
【0071】
1…ICカード処理装置、2…ICカード、C…本体、M…モジュール、Ca…ICチップ、21…制御部、22…通信インターフェース、23…ROM、24…RAM、25…不揮発性メモリ。

【特許請求の範囲】
【請求項1】
上位装置から与えられるコマンドに応じた処理を行う携帯可能電子装置であって、
前記上記装置から与えられたコマンドに後続のコマンドとの連結指示が含まれるか否かを判定する判定手段と、
前記判定手段により連結指示が含まれると判定した場合、当該コマンドの受信完了に応じて当該コマンドの正常終了を前記上位装置へ通知する通知手段と、
前記通知手段により連結指示を含むコマンドの受信完了を通知した後に前記判定手段により前記連結指示を含まないと判定されるコマンドが前記上位装置から与えられた場合、前記連結指示に基づいて各コマンドのデータを連結したデータによるコマンド処理を実行する実行手段と、
前記実行手段による実行するコマンド処理中にエラーが発生した場合、当該エラーの内容を示す情報を生成する生成手段と、
前記生成手段により生成されたエラー内容を示す情報を前記連結指示を含まないと判定されたコマンドに対するエラー通知とともに前記上位装置へ出力する出力手段と、
を有することを特徴とする携帯可能電子装置。
【請求項2】
前記連結指示により連結される複数のコマンドは、1つの書込みデータを分割した複数のデータを格納し、
前記実行手段は、前記連結指示に基づいて複数のコマンドに格納されたデータを連結した1つの書込みデータをデータメモリに書込む処理を実行し、
前記生成手段は、前記実行手段による連結したデータの書込み処理中にエラーが発生した場合、書込みエラーとなったデータを示す情報を生成し、
前記出力手段は、前記連結指示により連結したデータの書込みエラー通知とともに、前記生成手段により生成した書込みエラーとなったデータを示す情報を前記上位装置へ出力する、
を有することを特徴とする前記請求項1に記載の携帯可能電子装置。
【請求項3】
前記生成手段は、書込みエラーとなったデータを示す情報として、書込みエラーが発生した位置を書込みデータ全体の先頭からの位置で示す情報を生成する、
ことを特徴とする前記請求項1に記載の携帯可能電子装置。
【請求項4】
上位装置から与えられるコマンドに応じた処理を行うICカードであって、
前記上記装置から与えられたコマンドに後続のコマンドとの連結指示が含まれるか否かを判定する判定手段と、前記判定手段により連結指示が含まれると判定した場合、当該コマンドの受信完了に応じて当該コマンドの正常終了を前記上位装置へ通知する通知手段と、前記通知手段により連結指示を含むコマンドの受信完了を通知した後に前記判定手段により前記連結指示を含まないと判定されるコマンドが前記上位装置から与えられた場合、前記連結指示に基づいて各コマンドのデータを連結したデータによるコマンド処理を実行する実行手段と、前記実行手段による実行するコマンド処理中にエラーが発生した場合、当該エラーの内容を示す情報を生成する生成手段と、前記生成手段により生成されたエラー内容を示す情報を前記連結指示を含まないと判定されたコマンドに対するエラー通知とともに前記上位装置へ出力する出力手段と、を有するICモジュールと、
前記ICモジュールを収納したICカード本体と、
を有することを特徴とするICカード。
【請求項5】
上位装置と前記上位装置から与えられるコマンドに応じた処理を行う携帯可能電子装置とを有する携帯可能電子装置の処理システムであって、
前記上位装置は、
前記携帯可能電子装置が処理すべき1つのデータを複数のデータに分割して複数のコマンドに格納し、それれらのコマンドを連結指示とともに順に前記携帯可能電子装置へ送信する送信手段と、
前記送信手段により前記複数のコマンドを送信した後、前記ICカードからエラー通知とともに供給されるエラー内容を示す情報に基づいて当該エラーに対するリカバリ処理の内容を決定する決定手段と、
前記決定手段により決定したリカバリ処理を実行させるためのコマンドを生成し、生成したコマンドを前記携帯可能電子装置へ送信するリトライ処理手段と、を有し、
前記携帯可能電子装置は、
前記上位装置から与えられたコマンドに後続のコマンドとの連結指示が含まれるか否かを判定する判定手段と、
前記判定手段により連結指示が含まれると判定した場合、当該コマンドの受信完了に応じてコマンドの正常終了を前記上位装置へ通知する通知手段と、
前記通知手段により連結指示を含むコマンドの受信完了を通知した後に前記判定手段により前記連結指示を含まないと判定されるコマンドが前記上位装置から与えられた場合、前記連結指示に基づいて各コマンドのデータを連結したデータによるコマンド処理を実行する実行手段と、
前記実行手段による実行するコマンド処理中にエラーが発生した場合、当該エラーの内容を示す情報を生成する生成手段と、
前記生成手段により生成されたエラー内容を示す情報を前記連結指示を含まないと判定されたコマンドに対するエラー通知とともに前記上位装置へ出力する出力手段と、を有する、
ことを特徴とする携帯可能電子装置の処理システム。
【請求項6】
上位装置から与えられるコマンドに応じた処理を行う携帯可能電子装置の制御方法であって、
前記上記装置から与えられたコマンドに後続のコマンドとの連結指示が含まれるか否かを判定し、
前記判定により連結指示が含まれると判定した場合、当該コマンドの受信完了に応じて当該コマンドの正常終了を前記上位装置へ通知し、
前記連結指示を含むコマンドの受信完了を通知した後に前記連結指示を含まないと判定されるコマンドが前記上位装置から与えられた場合、前記連結指示に基づいて各コマンドのデータを連結したデータによるコマンド処理を実行し、
前記実行するコマンド処理中にエラーが発生した場合、当該エラーの内容を示す情報を生成し、
前記生成されたエラー内容を示す情報を前記連結指示を含まないと判定されたコマンドに対するエラー通知とともに前記上位装置へ出力する、
を有することを特徴とする携帯可能電子装置の制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2011−65471(P2011−65471A)
【公開日】平成23年3月31日(2011.3.31)
【国際特許分類】
【出願番号】特願2009−216056(P2009−216056)
【出願日】平成21年9月17日(2009.9.17)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】