携帯可能電子装置および携帯可能電子装置におけるアクセス制御方法
【課題】バイナリレコードファイル内に格納されている複数のデータオブジェクトに対して効率的にアクセスできる携帯可能電子装置としてのICカードを提供する。
【解決手段】ICカード1は、外部装置としてのICカード処理装置2とのデータ通信を行う通信インターフェースと複数のデータオブジェクトが順に並べられたレコードファイルを記憶するデータメモリとを有する。ICカード1のRAM23に設けられたカンレトポインタ設定テーブル23aは、上記データメモリに記憶されているレコードファイルのうちアクセス対象となるレコードファイルにおける各データオブジェクトの管理情報を記憶する管理テーブルである。ICカード処理装置2から特定のデータオブジェクトへのアクセスを要求するコマンドを受信した場合、ICカード1の制御部21は、前記カンレトポインタ設定テーブル23aに記憶されている管理情報に基づいて当該コマンドで指定されたデータオブジェクトにアクセスする。
【解決手段】ICカード1は、外部装置としてのICカード処理装置2とのデータ通信を行う通信インターフェースと複数のデータオブジェクトが順に並べられたレコードファイルを記憶するデータメモリとを有する。ICカード1のRAM23に設けられたカンレトポインタ設定テーブル23aは、上記データメモリに記憶されているレコードファイルのうちアクセス対象となるレコードファイルにおける各データオブジェクトの管理情報を記憶する管理テーブルである。ICカード処理装置2から特定のデータオブジェクトへのアクセスを要求するコマンドを受信した場合、ICカード1の制御部21は、前記カンレトポインタ設定テーブル23aに記憶されている管理情報に基づいて当該コマンドで指定されたデータオブジェクトにアクセスする。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、例えば、携帯可能電子装置してのICカードにおいて、ファイル内に格納されているデータオブジェクトへのアクセス制御に関する。
【背景技術】
【0002】
従来、ICカードでは、複数のデータオブジェクト(レコードデータ)を格納するバイナリレコードファイルと呼ばれるファイル形式がある。バイナリレコードファイル内の各データオブジェクトには、当該ファイルの先頭からソートすることによりアクセスが可能となっている。言い換えれば、従来のICカードでは、バイナリレコードファイル内の各データオブジェクトに対して直接的にアクセスすることができない。
【0003】
近年では、ICカードの運用形態の多様化に伴って取り扱うデータも多様化してきている。ICカードで取り扱うデータが多様化すると、ICカード内では、データの種類あるいはデータ構造が複雑になってくる。たとえば、上記バイナリレコードファイルには、大量のデータが複数のデータオブジェクトとして記憶されることも多くなってきている。しかしながら、上述したように、従来のICカードでは、バイナリレコードファイル内の各データオブジェクトを当該ファイルの先頭からソートする必要がある。このようなアクセス制御では、バイナリレコードファイル内のデータオブジェクトが多様化すると、特定のデータオブジェクトに対する処理に多くの時間がかかってしまう。このため、バイナリレコードファイル内の各データオブジェクトに対して効率良くアクセスできるICカードが要望されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特許第2695857号
【発明の概要】
【発明が解決しようとする課題】
【0005】
この発明の一形態は、ファイル内に格納されている複数のデータオブジェクトに対して効率的にアクセスできる携帯可能電子装置および携帯可能電子装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【0006】
この発明の一形態としての携帯可能電子装置は、外部装置との通信を行う通信インターフェースと、複数のデータオブジェクトを有するレコードファイルを記憶するデータメモリと、前記データメモリに記憶されているアクセス対象のレコードファイルにおける各データオブジェクトの管理情報を記憶する管理テーブルと、外部装置から指定のデータオブジェクトへのアクセスを要求するコマンドを受信した場合、前記管理テーブルに記憶されている管理情報に基づいて当該コマンドで指定されたデータオブジェクトにアクセスするアクセス制御部とを有する。
【0007】
この発明の一形態としての携帯可能電子装置におけるアクセス制御方法は、複数のデータオブジェクトを有するレコードファイルをデータメモリに記憶しておき、アクセス対象となるレコードファイルにおける複数のデータオブジェクトに対する管理情報をテーブルに記憶し、外部装置から特定のデータオブジェクトを指定してアクセスを要求するコマンドが与えられた場合、前記テーブルに記憶されている各データオブジェクトの管理情報に基づいて当該コマンドで指定されたデータオブジェクトへのアクセスを制御する。
【発明の効果】
【0008】
この発明の一形態によれば、ファイル内に格納されている複数のデータオブジェクトに対して効率的にアクセスできる携帯可能電子装置および携帯可能電子装置の制御方法を提供できる。
【図面の簡単な説明】
【0009】
【図1】図1は、ICカードおよびICカード処理装置の構成例を概略的に示すブロック図である。
【図2】図2は、ICカードのハードウエア構成例を概略的に示すブロック図である。
【図3】図3は、データメモリに格納されるファイルの構成例を示す模式的に示す図である。
【図4】図4は、複数のデータオブジェクトを格納するレコードファイルのメモリ領域におけるデータ構造を示す図である。
【図5】図5は、複数のデータオブジェクトを格納するレコードファイルのメモリ領域におけるデータ構造を示す図である。
【図6】図6は、カレントポインタ設定テーブルの構成例である。
【図7】図7は、カレントポインタ設定テーブルの第2の構成例を示す図である。
【図8】図8は、カレントポインタ設定テーブルの生成処理の例を説明するためのフローチャートである。
【図9】図9は、カレント指定のリードコマンド又はライトコマンドに対する処理を説明するためのフローチャートである。
【図10】図10は、カレント指定のライトコマンドによる処理結果の例を示す図である。
【図11】図11は、ネクスト指定のリードコマンド又はライトコマンドに対する処理について説明するためのフローチャートである。
【図12】図12は、ネクスト指定のコマンドを処理した後のカレントポインタ設定テーブルの状態を示す図である。
【図13】図13は、ネクスト指定のライトコマンドによる処理結果の例を示す図である。
【図14】図14は、プリビアス指定のリードコマンド又はライトコマンドに対する処理について説明するためのフローチャートである。
【図15】図15は、プリビアス指定のコマンドを処理した後のカレントポインタ設定テーブルの状態を示している。
【図16】図16は、プリビアス指定のライトコマンドによる処理結果の例を示す図である。
【発明を実施するための形態】
【0010】
以下、この発明の実施の形態について図面を参照して詳細に説明する。
図1は、本実施の形態に係るICカード(携帯可能電子装置)1、および、ICカード1との通信機能を有する外部装置としてのICカード処理装置2の構成例を概略的に示すブロック図である。
上記ICカード処理装置2は、図1に示すように、端末装置11、ディスプレイ12、キーボード13、テンキー14、及び、カードリーダライタ15などを有している。
【0011】
上記端末装置11は、ICカード処理装置2全体の動作を制御するものである。上記端末装置11は、CPU、種々のメモリ及び各種インターフェースなどにより構成される。たとえば、上記端末装置11は、パーソナルコンピュータ(PC)により構成される。
上記端末装置11は、上記カードリーダライタ15によりICカード1へコマンドを送信する機能、ICカード1から受信したデータを基に種々の処理を行う機能などを有している。たとえば、上記端末装置11は、カードリーダライタ15を介してICカード1にデータの書き込みコマンド(ライトコマンド)を送信することによりICカード1内のデータメモリにデータを書き込む制御を行う。また、上記端末装置11は、ICカード1に読み取りコマンド(リードコマンド)を送信することによりICカード1のデータメモリからデータを読み出す制御を行う。
【0012】
上記ディスプレイ12は、上記端末装置11の制御により種々の情報を表示する表示装置である。上記キーボード13は、当該ICカード処理装置2の操作員が操作する操作部として機能し、操作員により種々の操作指示あるいはデータなどが入力される。上記テンキー14は、使用者IDあるいはパスワードなどの情報を入力する為の入力部として機能する。
【0013】
上記カードリーダライタ15は、上記ICカード1との通信を行うためのインターフェース装置である。上記カードリーダライタ15は、上記ICカード1の通信方式に応じたインターフェースにより構成される。たとえば、上記ICカード1が接触型のICカードである場合、上記カードリーダライタ15は、ICカード1のコンタクト部と物理的かつ電気的に接続するための接触部などにより構成される。
【0014】
また、上記ICカード1が非接触型のICカードである場合、上記カードリーダライタ15は、ICカード1との無線通信を行うためのアンテナおよび通信制御などにより構成される。上記カードリーダライタ15では、上記ICカード1に対する電源供給、クロック供給、リセット制御、データの送受信が行われるようになっている。このような機能によってカードリーダライタ15は、上記端末装置11による制御に基づいて上記ICカード1の活性化(起動)、種々のコマンドの送信、及び送信したコマンドに対する応答の受信などを行なう。
【0015】
次に、上記ICカード1のハードウエア構成例について説明する。
上記ICカード1は、上記カードリーダライタ15を介してICカード処理装置2などの上位装置から電力供給を受けた際、活性化される(動作可能な状態になる)。例えば、上記ICカード1が接触型の通信機能を具備している場合、つまり、ICカード1が接触型のICカードで構成される場合、上記ICカード1は、通信インターフェースとしてのコンタクト部を介してカードリーダライタ15からの動作電源及び動作クロックの供給を受けて活性化される。
【0016】
また、上記ICカード1が非接触型の通信機能を具備している場合、つまり、上記ICカード1が非接触式のICカードで構成される場合、上記ICカード1は、通信インターフェースとしてのアンテナ及び変復調回路などを介してカードリーダライタ15からの電波を受信し、その電波から図示しない電源部により動作電源及び動作クロックを生成して活性化する。
【0017】
図2は、本実施の形態に係るICカード1のハードウエア構成例を概略的に示すブロック図である。
上記ICカード1は、本体Bを構成する筐体内にモジュールMが内蔵されている。上記モジュールMは、1つまたは複数のICチップCと通信用の外部インターフェース(通信部)とが接続された状態で一体的に形成される。上記モジュールMは、ICカード1の本体B内に埋設される。上記ICカード1のモジュールMは、図2に示すように、CPU(制御素子)21、データメモリ22、RAM(ワーキングメモリ)23、ROM(プログラムメモリ)24、および、通信部25などを有してしている。
【0018】
上記制御部21は、当該ICカード1全体の制御を司るものである。上記制御部21は、上記プログラムメモリ24あるいは上記データメモリ22に記憶されている制御プログラムおよび制御データに基づいて動作することにより、種々の機能を実現する。たとえば、上記制御部21は、オペレーティングシステムのプログラムを実行することにより、当該ICカード1の基本的な動作制御を行う。また、上記制御部21は、当該ICカード1の利用目的に応じたアプリケーションプログラムを実行することにより、当該ICカード1の運用形態に応じた種々の動作制御を行う。
【0019】
上記データメモリ22は、書換え可能な不揮発性メモリである。上記データメモリ22は、例えば、EEPROM(Electrically Erasable Programmable Read-Only Memory)あるいはフラッシュROMなどのデータの書き込み及び書換えが可能な不揮発性のメモリにより構成される。上記データメモリ22には、当該ICカード1の運用用途に応じた制御プログラムあるいは種々のデータが書込まれる。上記データメモリ22には、当該ICカード1の規格に応じた種々のファイルが定義され、それらのファイルに種々のデータが書き込まれる。上記データメモリ22に格納されるファイルの例については、後述する。
【0020】
上記RAM23は、ワーキングメモリとして機能する揮発性のメモリである。上記RAM23は、処理中のデータなどを一時的に保管するバッファとして機能する。たとえば、上記RAM23には、各レコードファイルにおいてカレント状態となっているオブジェクトを示す情報を格納する管理テーブル(カレントポインタ設定テーブル)23aなどが設けられる。
上記ROM24は、プログラムメモリとして機能するマスクROMなどの不揮発性メモリである。上記ROM24は、予め制御用のプログラムあるいは制御データなどを記憶する。上記ROM24には、当該ICカードの製造段階で制御プログラムあるいは制御データなどが記憶された状態でICカード1内に組み込まれる。上記ROM24に記憶されている制御プログラムあるいは制御データは、当該ICカードの基本的な動作を司るものであり、予め当該ICカード1の仕様に応じて組み込まれるものである。
【0021】
上記通信部25は、上記リーダライタ15を介してICカード処理装置2と通信するためのインターフェースである。当該ICカード1が接触型のICカードとして実現される場合、上記通信部25は、上記リーダライタ15と物理的かつ電気的に接触して信号の送受信を行うための通信制御部とコンタクト部とにより構成される。また、当該ICカード1が非接触型のICカードとして実現される場合、上記通信部25は、上記リーダライタ15との無線通信を行うための変復調回路などの通信制御部および電波を送受信するためのアンテナなどにより構成される。
【0022】
次に、上記データメモリ22に格納されるファイルについて説明する。
図3は、上記データメモリ22に格納されるファイルの構成例を示す模式的に示す図である。
図3は、ICカードなどの携帯可能電子装置におけるファイル構成例を示している。図3に示す例は、ICカードなどの携帯可能電子装置に関する規格であるISO/IEC7816−4に定義されるファイル構成例である。図3に示すファイル構成例では、種々のファイルをツリー構造で管理している。
【0023】
図3に示すように、上記データメモリ22には、MF(Master File)、DF(Dedicated File)およびEF(Elementary File)などからなる階層構造を有する複数のファイルが定義される。図3に示す構成例では、最上階層のマスターファイル(MF)31の次の階層には、第1DF(DF1)32および第2DF(DF2)33が存在している。上記第1DFの次の階層には、第1EF(EFID:0001)34、第2EF(EFID:0002)35、および、第3EF(EFID:0003)36が存在している。
【0024】
上記MF31は、上記データメモリ22に格納されている各種ファイルに対するファイル構成において、最上位に位置する。上記各DF(DF1、DF2)32、33は、たとえば、アプリケーションに対応して設けられる。この場合、上記各DF32、33は、各アプリケーションに相当するフォルダとして機能する。上記各EF34、35、36は、実データを格納するレコードファイル(データファイル)である。すなわち、DF1の配下の各EF34、35、36は、DF1が対応するアプリケーションで使用されるデータを格納する。なお、EFは、MF31直下の階層に設けることも可能である。また、後述の説明では、上記第1EF34および第2EF35は、複数のデータオブジェクトを格納するバイナリレコードファイルであるものと想定する。
【0025】
次に、レコードファイル(EF)の構成について説明する。
図4および図5は、データメモリ22のメモリ領域におけるレコードファイルのデータ構造を示す図である。図4は、第1EF(EFID:0001)34のデータ構造を示している。図5は、第2EF(EFID:0002)35のデータ構造を示している。
図4あるいは図5に示すレコードファイルは、複数のデータオブジェクトにより構成されている。各データオブジェクトは、識別子(タグ;Tag)、データ長(レングス;Length)、および、データ値(バリュー;Value)からなる。このようなデータ構造のデータオブジェクトは、たとえば、TLVオブジェクトと呼ばれる。TLVオブジェクトは、識別子「タグ」のデータと、データ長「レングス」のデータと、データ値「バリュー」のデータとが順に連結されたデータ構造となっている。
【0026】
このようなTLVオブジェクトは、上記「識別子」のデータサイズと「データ長」のデータサイズとが決まっていれば、「データ長」で示される「データ値」のデータサイズにより全体のデータサイズが判別される。このため、複数のTLVオブジェクトは、連続してレコードファイルの記憶領域に格納できる。図4あるいは図5に示すTLVオブジェクトを格納するレコードファイルでは、当該レコードファイルのデータ領域の先頭から各データオブジェクトの識別子、データ長およびデータ値が順に配置される。従って、複数のデータオブジェクトが格納されたレコードファイルであっても、当該ファイルの先頭から順に各データオブジェクトの「識別子」および「データ長」を確認していくことにより、特定のデータオブジェクトが検出できるようになっている。一般に、ICカードに用いられるレコードファイルは、上述したISOなどの規格により、「識別子」および「データ長」の長さ(サイズ)が決まっている。このため、「データ長」で示される「データ値」の長さ(サイズ)により、オブジェクト全体の長さ(サイズ)も判別できるようになっている。
【0027】
図4及び図5に示す構成例では、レコードファイルに複数のTLVオブジェクトが格納されている状態を示している。
図4及び図5において、各データオブジェクトの識別子の記憶領域は、矩形で数値を囲んだ領域である。各データオブジェクトのデータ長の記憶領域は、数値に下線を付した領域である。各データオブジェクトのデータ値の記憶領域は、矩形も下線も付与されていない数値が記述された領域(識別子およびデータ長以外の領域)である。ただし、図4及び図5において左端の1列は、メモリ上におけるアドレス(各行の先頭アドレス)の例を示すものである。なお、図4及び図5に示す数値は、何れも16進数であるものとする。
【0028】
たとえば、図4に示すレコードファイルにおいて、当該ファイル内における先頭のTLVオブジェクト(第1オブジェクト)の識別子は、「01」である。この第1オブジェクトのデータ長は、「01」である。従って、第1オブジェクトのデータ長としての「01」に続く1バイト分の領域には、第1オブジェクトのデータ値としての「AA」が格納されている。さらに、第1オブジェクトのデータ値「AA」の次には、次のTLVオブジェクト(第2オブジェクト)の識別子「02」が格納され、識別子「02」の次には、第2オブジェクトのデータ長「03」が格納されている。第2オブジェクトのデータ長としての「03」に続く3バイト分の領域には、第2オブジェクトのデータ値として「BB」、「BB」、「BB」が格納されている。
【0029】
図4及び図5に示すようなデータ構造のレコードファイルでは、上述したように、先頭から順に各データオブジェクトの識別子及びデータ長を確認することにより、特定のデータオブジェクトにアクセスすることが可能である。言い換えれば、図4あるいは図5に示すようなレコードファイルでは、特定のデータオブジェクトに対して直接的にアクセスするために、先頭から順に各データオブジェクトを検索する必要がある。このため、本ICカード1では、レコードファイル内の各データオブジェクトに対して直接的にアクセスするための情報を保持する。また、本ICカード1では、レコードファイル内の1つのデータオブジェクトをカレント状態に設定することができるものとする。
【0030】
次に、レコードファイルにおけるデータオブジェクトの管理について説明する。
本ICカード1では、レコードファイルにおけるデータオブジェクトを、管理テーブルとしてのカレントポインタ設定テーブル23aにより管理する。また、上記カレントポインタ設定テーブル23aは、データオブジェクトに対するカレント状態を示す情報でもある。図2に示す構成例では、カレントポインタ設定テーブル23aは、RAM23内に設けられる。なお、カレントポインタ設定テーブル23aは、制御部21により書き込み或いは書換えが可能な記憶領域に存在すれば良い。たとえば、カレントポインタ設定テーブル23aは、データメモリ22内に設けるようにしても良い。
【0031】
上記カレントポインタ設定テーブル23aは、制御部21により生成および更新される。たとえば、制御部21は、カレントファイルとして選択されたレコードファイルについて、カレントポインタ設定テーブル23aを生成する。この場合、カレントポインタ設定テーブル23aは、ICカード1の起動時あるいは外部装置からのコマンドで特定のレコードファイルがカレントファイルとして選択された場合に、生成するようにすれば良い。また、上記データメモリ22は、各レコードファイルに対するカレントポインタ設定テーブル23aを記憶しておくようにしても良い。この場合、制御部21は、種々の処理内容に応じてカレントポインタ設定テーブル23aを適宜更新する。
【0032】
図6は、レコードファイルとしての第1EF(EFID:0001)34に対するカレントポインタ設定テーブル23aの構成例である。
図6に示す構成例では、カレントポインタ設定テーブル23aは、図4に示す第1EF34における全データオブジェクトの管理情報を格納している。すなわち、図6に示すカレントポインタ設定テーブル23aでは、図4に示す第1EF34における各データオブジェクトの管理情報として、ファイル識別情報(EFID)、識別子(タグ)情報、アドレス(Address)情報、データ長(レングス)情報、カレントフラグ(カレントポインタFlag)などの情報を格納している。
【0033】
上記カレントポインタ設定テーブル23aに格納されるEFIDは、各オブジェクトが格納されているレコードファイルを識別するための情報である。図6に示す例は、図4に示す第1EF34におけるデータオブジェクトを管理するテーブルである。このため、図6に示す例では、各データオブジェクトのEFIDは、「0001」となっている。上記カレントポインタ設定テーブル23aに格納される識別子情報およびデータ長情報は、各データオブジェクトの識別子およびデータ長である。図6に示す例では、各データオブジェクトの識別子情報及びデータ長情報としては、図4に示す第1EF34に格納されている各データオブジェクトの識別子及びデータ長そのものが格納されている。
【0034】
上記カレントポインタ設定テーブル23aに格納されるアドレス情報は、データメモリ22上における各データオブジェクトの先頭アドレスを示す情報である。各データオブジェクトのアドレス情報は、図4に示す第1EF34において各データオブジェクトの識別子及びデータ長から順に判別される。また、上記カレントポインタ設定テーブル23aに格納されるカレントフラグは、当該データオブジェクトがカレント状態であるか否かを示すものである。たとえば、カレント状態であるデータオブジェクトのカレントフラグは、「1」にセットされ、カレント状態でないデータオブジェクトのカレントフラグは、「0」にセットされる。
【0035】
図7は、カレントポインタ設定テーブル23aの第2の構成例を示す図である。
図7は、図4に示す第1EF34と図5に示す第2EF35とに対するカレントポインタ設定テーブル23aの構成例である。
第2の構成例のカレントポインタ設定テーブル23aでは、ロジカルチャネルごとにカレント状態を示す情報を保持する。図7に示す構成例においては、カレントポインタ設定テーブル23aは、図4に示す第1EF34と図5に示す第2EF35における全データオブジェクトの管理情報を格納している。ここでは、第1EF34は、ロジカルチャネル「0」でカレントファイルに選択され、第2EF35は、ロジカルチャネル「1」でカレントファイルに選択された状態を想定している。すなわち、図7に示すカレントポインタ設定テーブル23aでは、ロジカルチャネル「0」でカレント状態となっている第1EF34内のデータオブジェクトと、ロジカルチャネル「1」でカレント状態となっている第2EF35内のデータオブジェクトとを示している。
【0036】
上記ロジカルチャネルとは、概略的に言えば、当該ICカード1において、上記制御部21が各種の処理を実行可能な論理上のチャンネルである。ICカードにおけるロジカルチャネルは、たとえば、ISO/IEC7816−4で規定されている。すなわち、上記ICカード1では、上記制御部21が、各ロジカルチャネルごとに各種の処理を並列的に実施することができる。この場合、上記ICカード1では、各ロジカルチャネルでの各処理内容(たとえば、カレント情報等)を保持するようになっている。
【0037】
たとえば、ICカードは、4個のロジカルチャネル(Ch.0、Ch.1、Ch.2、Ch.3)をサポートしているものがある。この場合、デフォルトのロジカルチャネルが「Ch.0」であれば、ロジカルチャネル「Ch.0」は、常時使用可能とし、ロジカルチャネル(Ch.1、Ch.2、Ch.3)は、ロジカルチャネルを指定するコマンド(たとえば、マネージチャネルコマンド)などによりオープン(使用可能な状態)にする処理を行う必要がある。
【0038】
図7に示すカレントポインタ設定テーブル23aでは、図4に示す第1EF34および図5に示す第2EFにおける各データオブジェクトの管理情報として、ロジカルチャンネルごとにレコードファイル内のデータオブジェクトを管理している。図7に示すカレントポインタ設定テーブル23aでは、各データオブジェクトの管理情報として、ロジカルチャネル情報、EFID情報、識別子(Tag)情報、アドレス(Address)情報、データ長(Data Length)情報、カレントフラグ(カレントポインタFlag)などの情報を格納している。
【0039】
上記カレントポインタ設定テーブル23aに格納されるロジカルチャネル情報は、各データオブジェクトが格納されているレコードファイルが選択されているロジカルチャネルを示す情報である。図7に示す例は、図4に示す第1EF34がロジカルチャネル「0」で選択され、図5に示す第2EFがロジカルチャネル「1」で選択された状態である。このため、図7に示すように、EFIDが「0001」の各データオブジェクトに対応するロジカルチャネル情報は「0」となっており、EFIDが「0002」の各データオブジェクトに対応するロジカルチャネル情報は「1」となっている。
【0040】
上記カレントポインタ設定テーブル23aに格納される識別子およびデータ長は、各データオブジェクトの識別子およびデータ長そのものである。図6に示す例では、各データオブジェクトの識別子及びデータ長としては、図4に示す第1EF34に格納されている各データオブジェクトの識別子及びデータ長が格納されている。上記カレントポインタ設定テーブル23aに格納されるアドレスは、データメモリ22上における各データオブジェクトの先頭アドレスを示す情報である。各データオブジェクトのアドレス情報は、図4に示す第1EF34および図5に示す第2EF35において各データオブジェクトの識別子及びデータ長から順に特定される。
【0041】
また、上記カレントポインタ設定テーブル23aに格納されるカレントフラグは、各ロジカルチャネルにおいて、当該データオブジェクトがカレント状態であるか否かを示す。図7に示す例では、ロジカルチャネル「0」においてカレント状態であるオブジェクトとロジカルチャネル「1」においてカレント状態であるデータオブジェクトとは、カレントフラグに「1」がセットされている。
【0042】
次に、カレントポインタ設定テーブルの作成処理について説明する。
図8は、カレントポインタ設定テーブル23aの作成処理の例を説明するためのフローチャートである。
まず、上記ICカード1は、ICカード処理装置2などの上位装置からの電力供給により活性化される(ステップS1)。この状態において、ICカード1は、ICカード処理装置2からのコマンドが受信可能となる(ステップS2)。ICカード処理装置2からコマンドを受信した場合、上記ICカード1の制御部21は、受信したコマンドがレコードファイルの識別情報(EFID)とデータオブジェクトの識別子(タグ)とを指定するコマンドであるか否かを判定する(ステップS3)。
【0043】
上記レコードファイルとデータオブジェクトとを指定するコマンドを受信した場合(ステップS3、YES)、上記制御部21は、RAM23上にカレントポインタ設定テーブル23aが存在するか否かを判断する(ステップS4)。たとえば、ICカード1の活性化の直後は、RAM23内にはカレントポインタ設定テーブル23aが作成されていないと考えられる。また、カレントポインタ設定テーブル23aが存在している場合、上記制御部21は、カレントポインタ設定テーブルの作成処理を省略する。
【0044】
上記カレントポインタ設定テーブル23aが存在しないと判断した場合(ステップS4、NO)、上記制御部21は、受信コマンドで指定されたレコードファイルに対するカレントポインタ設定テーブル23aを作成する(ステップS5)。この場合、上記制御部21は、受信コマンドで指定されたレコードファイル内をソートすることにより、当該ファイル内の各データオブジェクトの管理情報を抽出する。すなわち、上記制御部21は、当該レコードファイルの先頭から順に各データオブジェクトの識別子とデータ長とを読み込む。これにより、制御部21は、順に各データオブジェクトの先頭アドレス、識別子、データ長を判別する。
【0045】
各データオブジェクトの識別子およびデータ長は、レコードファイルから読み込んだ情報そのものである。各データオブジェクトの先頭アドレスは、当該レコードファイルの先頭アドレスを基準として、各データオブジェクトのデータ長などにより判別される。すなわち、レコードファイル内の1つ目のデータオブジェクトの先頭アドレスは、当該レコードファイルの先頭アドレスである。2つ目以降のデータオブジェクトの先頭アドレスは、それぞれ前のデータオブジェクトのデータ長により判別される。たとえば、2つ目以降のデータオブジェクトの先頭アドレスは、直前のデータオブジェクトの先頭アドレスに、直前のオブジェクトの識別子のサイズとデータ長のサイズとデータ長で示されるデータ値のサイズとを加算したアドレス値である。
【0046】
受信コマンドで指定されたレコードファイルにおける各データオブジェクトの管理情報を抽出すると、制御部21は、抽出した各データオブジェクトの管理情報を当該レコードファイルのEFIDに対応づけて記憶することによりカレントポインタ設定テーブル23aを作成する。この場合、制御部21は、作成するカレントポインタ設定テーブル23aには当該受信コマンドで指定されたデータオブジェクトの管理情報にカレントフラグをセットする。これにより、RAM23上には、図6に示すようなカレントポインタ設定テーブル23aが作成される。
【0047】
なお、複数のロジカルチャネルで処理を行う場合、制御部21は、各ロジカルチャネルで選択されるレコードファイルごとに上記のようなテーブルが作成することにより、図7に示すような複数のロジカルチャネルに対応したカレントポインタ設定テーブル23aを作成する。
【0048】
受信コマンドで指定されたレコードファイルに対するカレントポインタ設定テーブル23aを作成した場合、あるいは、既にカレントポインタ設定テーブル23aが存在していた場合、制御部21は、受信コマンドで要求されている処理を実行する(ステップS6)。受信コマンドで要求された処理を実行すると、制御部21は、実行した処理内容に応じてカレントポインタ設定テーブル23aを更新する(ステップS7)。たとえば、カレント状態とするデータオブジェクトを変更した場合、制御部21は、カレントポインタ設定テーブル23aにおけるカレントフラグの状態を更新する。
【0049】
次に、カレント状態のデータオブジェクトを指定するコマンドに対応する処理について説明する。
図9は、カレント状態のデータオブジェクトを指定するコマンド(カレント指定のリードコマンド又はライトコマンド)に対する処理について説明するためのフローチャートである。
まず、上記ICカード1は、ICカード処理装置2などの上位装置からカレント指定のリードコマンド又はライトコマンドを受信したものとする(ステップS11)。カレントのデータオブジェクトを指定するコマンドを受信した場合、上記ICカード1の制御部21は、当該レコードファイルに対応するカレントポインタ設定テーブル23aを読み込む。すなわち、制御部21は、当該受信コマンドのロジカルチャネルを判別する。当該受信コマンドのロジカルチャネルを判別すると、制御部21は、カレントポインタ設定テーブル23aから当該受信コマンドのロジカルチャネルにおけるカレント状態のデータオブジェクトを特定する(ステップS12)。
【0050】
たとえば、カレントポインタ設定テーブル23aが図7に示すような状態である場合、ロジカルチャネルが「0」のコマンドを受信した制御部21は、カレントポインタ設定テーブル23aからロジカルチャネルが「0」の各データオブジェクトのカレントフラグを確認する。つまり、制御部21は、カレントポインタ設定テーブル23aからロジカルチャネルが「0」でカレントフラグが「1」のデータオブジェクトを検索する。図7に示す例では、ロジカルチャネルが「0」でカレントフラグが「1」のデータオブジェクトは、EFIDが「0001」でタグが「DF01」のデータオブジェクトである。従って、制御部21は、EFIDが「0001」のレコードファイルにおけるタグが「DF01」のデータオブジェクトがカレント状態であると判別する。
【0051】
このカレント状態と判別されたEFIDが「0001」でタグが「DF01」のデータオブジェクトは、図7に示すように、カレントポインタ設定テーブル23aにより先頭アドレスが「0059」であると判別される。このように、カレントポインタ設定テーブル23aを参照することにより、制御部21は、カレント状態となっているデータオブジェクトの先頭アドレスが容易に判別できる。この結果として、制御部21は、直接的にカレント状態のデータオブジェクトにアクセスすることができる。
【0052】
受信コマンドがアクセス対象とするカレント状態のデータオブジェクトを特定すると、制御部21は、受信コマンドがリードコマンドかライトコマンドかを判別する(ステップS13)。
受信コマンドがライトコマンドである場合(ステップS13、ライトコマンド)、制御部21は、カレント状態のデータオブジェクトのデータ領域に当該受信コマンドで指定されるデータを書込む処理(更新処理)を行う(ステップS14〜S16)。ここでは、制御部21は、カレントポインタ設定テーブル23aによりカレント状態のデータオブジェクトの先頭アドレスを特定する。
【0053】
すなわち、制御部21は、カレント状態のデータオブジェクトの先頭アドレスから識別(タグ)およびデータ長(レングス)に続いて記憶されているデータ値(バリュー)の領域(データ領域)を初期化する(ステップS14)。カレント状態のデータオブジェクトのデータ領域を初期化すると、制御部21は、初期化したデータ領域に当該受信コマンドで指定されたデータを書込む(ステップS15)。カレント状態のデータオブジェクトのデータ領域におけるデータを更新すると、制御部21は、書込み処理の結果を示す情報を含むレスポンスデータを生成する。制御部21は、生成したレスポンスデータを当該受信コマンドの送信元であるICカード処理装置2へ送信する(ステップS16)。
【0054】
受信コマンドがリードコマンドである場合(ステップS13、リードコマンド)、制御部21は、カレント状態となっているデータオブジェクトのデータを読み出す処理を行う(ステップS17−S18)。ここでは、制御部21は、カレントポインタ設定テーブル23aによりカレント状態のデータオブジェクトの先頭アドレスを特定する。
【0055】
すなわち、制御部21は、カレント状態のデータオブジェクトの先頭アドレスから識別(タグ)およびデータ長(レングス)に続いて記憶されているデータ値(バリュー)を読み出す(ステップS17)。カレント状態のデータオブジェクトのデータを読み出すと、制御部21は、読み出したデータを含むレスポンスデータを生成し、受信コマンドの送信元であるICカード処理装置2へ送信する(ステップS18)。
【0056】
上記のような手順により、カレント指定のリードコマンド又はライトコマンドに対する処理が実行される。たとえば、図10は、カレント指定のライトコマンドによる処理結果の例を示す図である。図10は、図4に示す第1EF34におけるカレント状態のデータオブジェクトを図7に示すカレントポインタ設定テーブル23aを参照して書き換えた場合の例を示している。
【0057】
図10に示す例では、図4に示す第1EF34内において、図中の斜線で示す領域のデータが書換えられている。図10に示す書換えられたデータ領域の直前の領域には、データオブジェクトのデータ長として「30」が格納され、さらに、その直前の領域にはデータオブジェクトの識別子として「DF01」が格納されている。すなわち、図10に示す例では、識別子「DF01」のデータオブジェクトのデータ値(バリュー)が書換えられたことを示している。この識別子「DF01」のデータオブジェクトは、図7に示すカレントポインタ設定テーブル23aで示されるカレント状態のデータオブジェクトである。つまり、カレントポインタ設定テーブル23aが図7に示すような状態である場合、カレント指定のライトコマンドを受けたICカード1は、図4に示す第1EF34内のデータオブジェクトを図10に示すように書き換えるようになっている。
【0058】
なお、カレント指定のリードコマンド又はライトコマンドに対する処理では、カレント状態のデータオブジェクトを変更する必要がない。このため、上述した例では、カレントポインタ設定テーブル23aの更新を行っていない。しかしながら、実行した処理によってカレントポインタ設定テーブル23aに記憶されている情報が変化する場合、制御部21は、カレントポインタ設定テーブル23aを更新する。たとえば、書換え処理などによりカレント状態のデータオブジェクトのデータ長が変更される場合、カレント状態のデータオブジェクトに続く各データオブジェクトの先頭アドレスも変更される。このような場合、制御部21は、各データオブジェクトの変更された先頭アドレスを判別して、カレントポインタ設定テーブル23aを更新する。
【0059】
上記のようなカレント指定のリードコマンド又はライトコマンドに対する処理では、上記カンレトポインタ設定テーブルで示されるカレント状態のデータオブジェクトに対して繰り返し読出しあるいは書込みすることが容易である。たとえば、カレント指定のコマンドが連続して与えられた場合、ICカードは、上記カンレトポインタ設定テーブルにより、カンレト状態のデータオブジェクトを直ちに特定することができ、カンレト状態のデータオブジェクトに効率よくアクセスできる。
【0060】
次に、カレント状態のデータオブジェクトの次のデータオブジェクトを指定するコマンド(ネクスト指定のコマンド)に対応する処理について説明する。
図11は、ネクスト指定のリードコマンド又はライトコマンドに対する処理について説明するためのフローチャートである。
まず、上記ICカード1は、ICカード処理装置2などの上位装置からネクスト指定のリードコマンド又はライトコマンドを受信したものとする(ステップS20)。ネクスト指定のコマンドを受信した場合、上記ICカード1の制御部21は、当該受信コマンドのロジカルチャネルを判別する。当該受信コマンドのロジカルチャネルを判別すると、制御部21は、カレントポインタ設定テーブル23aから当該受信コマンドのロジカルチャネルにおけるカレント状態のデータオブジェクトを特定する(ステップS21)。
【0061】
上述したように、カレント状態のデータオブジェクトは、カレントフラグが「1」となっているか否かにより判別される。カレント状態のデータオブジェクトを特定すると、上記制御部21は、さらに、カレント状態のデータオブジェクトの次のデータオブジェクト(ネクスト指定のデータオブジェクト)を特定する(ステップS22)。
【0062】
たとえば、カレントポインタ設定テーブル23aが図7に示すような状態である場合、ロジカルチャネル「0」でネクスト指定のコマンドを受信した制御部21は、カレントポインタ設定テーブル23aからロジカルチャネルが「0」でカレントフラグが「1」のデータオブジェクトを検索する。図7に示す例では、ロジカルチャネルが「0」でカレントフラグが「1」のデータオブジェクト(カレント状態のデータオブジェクト)は、EFIDが「0001」でタグが「DF01」のデータオブジェクトである。この場合、カレント状態のデータオブジェクトの次のデータオブジェクトは、EFIDが「0001」でタグが「DF02」のデータオブジェクトである。従って、制御部21は、EFIDが「0001」でタグが「DF01」のデータオブジェクトがネクスト指定のデータオブジェクトであると判別する。
【0063】
ネクスト指定のデータオブジェクトと判別されたEFIDが「0001」でタグが「DF01」のデータオブジェクトは、図7に示すカレントポインタ設定テーブル23aにより先頭アドレスが「008C」であると判別される。このように、カレントポインタ設定テーブル23aを参照することにより、制御部21は、ネクスト指定されたデータオブジェクト(カレント状態のデータオブジェクトの次のデータオブジェクト)の先頭アドレスが容易に判別できる。この結果として、制御部21は、直接的にネクスト指定のデータオブジェクトにアクセスすることができる。
【0064】
受信コマンドでアクセス対象とするネクスト指定のデータオブジェクトを特定すると、制御部21は、受信コマンドがリードコマンドかライトコマンドかを判別する(ステップS23)。
受信コマンドがライトコマンドである場合(ステップS23、ライトコマンド)、制御部21は、ネクスト指定されたデータオブジェクトのデータ領域に当該受信コマンドで指定されるデータを書込む処理(更新処理)を行う(ステップS24〜S26)。ここでは、制御部21は、カレントポインタ設定テーブル23aによりネクスト指定のデータオブジェクトの先頭アドレスを特定する。
【0065】
すなわち、制御部21は、ネクスト指定のデータオブジェクトの先頭アドレスから識別(タグ)およびデータ長(レングス)に続いて記憶されているデータ値(バリュー)の領域(データ領域)を初期化する(ステップS24)。ネクスト指定のデータオブジェクトのデータ領域を初期化すると、制御部21は、初期化したデータ領域に当該受信コマンドで指定されたデータを書込む(ステップS25)。ネクスト指定のデータオブジェクトのデータ領域におけるデータを更新すると、制御部21は、書込み処理の結果を示す情報を含むレスポンスデータを生成する。制御部21は、生成したレスポンスデータを当該受信コマンドの送信元であるICカード処理装置2へ送信する(ステップS26)。
【0066】
受信コマンドがリードコマンドである場合(ステップS23、リードコマンド)、制御部21は、ネクスト指定されたデータオブジェクトのデータを読み出す処理を行う(ステップS27−S28)。ここでは、制御部21は、カレントポインタ設定テーブル23aによりネクスト指定のデータオブジェクトの先頭アドレスを特定する。
【0067】
すなわち、制御部21は、ネクスト指定のデータオブジェクトの先頭アドレスから識別(タグ)およびデータ長(レングス)に続いて記憶されているデータ値(バリュー)を読み出す(ステップS27)。ネクスト指定のデータオブジェクトのデータを読み出すと、制御部21は、読み出したデータを含むレスポンスデータを生成し、受信コマンドの送信元であるICカード処理装置2へ送信する(ステップS28)。
【0068】
上記のようなネクスト指定のリードコマンド又はライトコマンドに対する処理では、データオブジェクトのカレント状態を変更する必要がある。つまり、ネクスト指定されたデータオブジェクトは、カレント状態に変更される。このため、制御部21は、カレントポインタ設定テーブル23aにおけるカレントフラグの更新を行う(ステップS29)。この更新処理では、ネクスト指定されたデータオブジェクトのカレントフラグを「1」に書き換えるとともに、カレント状態であったデータオブジェクトのカレントフラグを「0」に書き換える。
【0069】
たとえば、図12は、ネクスト指定のコマンドを処理した後のカレントポインタ設定テーブル23aの状態を示している。図12は、カレントポインタ設定テーブル23aが図7に示す状態である場合に受信したネクスト指定のコマンドを処理した後の状態を示している。つまり、ネクスト指定のコマンドを実行すると、データオブジェクトのカレント状態は、次のデータオブジェクトに変更される。これは、図7あるいは図12に示すようなカレントポインタ設定テーブル23aでは、ネクスト指定のコマンドを実行するごとに、カレントフラグに「1」がセットされるデータオブジェクトが順次移動することを意味する。
【0070】
上記のような手順により、ネクスト指定のリードコマンド又はライトコマンドに対する処理が実行される。たとえば、図13は、ネクスト指定のライトコマンドによる処理結果の例を示す図である。つまり、図13は、カレントポインタ設定テーブル23aが図7に示す状態である場合に、受信したネクスト指定のライトコマンドの処理結果を示している。
【0071】
図13に示す例では、図4に示す第1EF34内において、図中の斜線で示す領域のデータが書換えられている。図13に示す書換えられたデータ領域の直前の領域には、データオブジェクトのデータ長として「11」が格納され、さらに、その直前の領域にはデータオブジェクトの識別子として「DF02」が格納されている。
【0072】
すなわち、図13に示す例では、識別子「DF02」のデータオブジェクトのデータ値(バリュー)が書換えられている。この識別子「DF02」のデータオブジェクトは、図7に示すカレントポインタ設定テーブル23aで示されるカレント状態のデータオブジェクトの次のデータオブジェクト(ネクスト指定のデータオブジェクト)である。つまり、カレントポインタ設定テーブル23aが図7に示すような状態である場合、ネクスト指定のライトコマンドを受けたICカード1は、図4に示す第1EF34内のデータオブジェクトを図13に示すように書き換えるようになっている。
【0073】
なお、実行した処理によってカレントポインタ設定テーブル23aにおけるカレントフラグ以外の情報が変化する場合も、制御部21は、カレントポインタ設定テーブル23aを更新する。たとえば、書換え処理などによりカレント状態のデータオブジェクトのデータ長が変更される場合、カレント状態のデータオブジェクトに続く各データオブジェクトの先頭アドレスも変更される。このような場合、制御部21は、各データオブジェクトの変更された先頭アドレスを判別して、カレントポインタ設定テーブル23aを更新する。
【0074】
上記のようなネクスト指定のリードコマンド又はライトコマンドに対する処理では、上記カンレトポインタ設定テーブルで示されるカレント状態のデータオブジェクトを基準として、データオブジェクトを順に読出しあるいは書込みすることができる。たとえば、ネクスト指定のコマンドが連続的に与えられた場合、ICカードは、上記カンレトポインタ設定テーブルにより、カンレト状態のデータオブジェクトを基準とする次のデータオブジェクトに順にアクセスする処理を効率よく実行することができる。
【0075】
次に、カレント状態のデータオブジェクトの直前のデータオブジェクトを指定するコマンド(プリビアス指定のコマンド)に対応する処理について説明する。
図14は、プリビアス指定のリードコマンド又はライトコマンドに対する処理について説明するためのフローチャートである。
まず、上記ICカード1は、ICカード処理装置2などの上位装置からプリビアス指定のリードコマンド又はライトコマンドを受信したものとする(ステップS30)。プリビアス指定のコマンドを受信した場合、上記ICカード1の制御部21は、当該受信コマンドのロジカルチャネルを判別する。当該受信コマンドのロジカルチャネルを判別すると、制御部21は、カレントポインタ設定テーブル23aから当該受信コマンドのロジカルチャネルにおけるカレント状態のデータオブジェクトを特定する(ステップS31)。
【0076】
上述したように、カレント状態のデータオブジェクトは、カレントポインタ設定テーブル23aにおいてカレントフラグが「1」となっているか否かにより判別される。カレント状態のデータオブジェクトを特定すると、上記制御部21は、さらに、カレント状態のデータオブジェクトの直前のデータオブジェクト(プリビアス指定のデータオブジェクト)を特定する(ステップS32)。
【0077】
たとえば、カレントポインタ設定テーブル23aが図7に示すような状態である場合、ロジカルチャネル「0」でプリビアス指定のコマンドを受信した制御部21は、カレントポインタ設定テーブル23aからロジカルチャネルが「0」でカレントフラグが「1」のデータオブジェクトを検索する。図7に示す例では、ロジカルチャネルが「0」でカレントフラグが「1」のデータオブジェクト(カレント状態のデータオブジェクト)は、EFIDが「0001」でタグが「DF01」のデータオブジェクトである。この場合、カレント状態のデータオブジェクトの直前のデータオブジェクトは、EFIDが「0001」でタグが「09」のデータオブジェクトである。従って、制御部21は、EFIDが「0001」でタグが「09」のデータオブジェクトがプリビアス指定のデータオブジェクトであると判別する。
【0078】
プリビアス指定のデータオブジェクトと判別されたEFIDが「0001」でタグが「09」のデータオブジェクトは、図7に示すカレントポインタ設定テーブル23aにより先頭アドレスが「0027」であると判別される。このように、カレントポインタ設定テーブル23aを参照することにより、制御部21は、プリビアス指定されたデータオブジェクト(カレント状態のデータオブジェクトの直前のデータオブジェクト)の先頭アドレスが容易に判別できる。この結果として、制御部21は、直接的にプリビアス指定のデータオブジェクトにアクセスすることができる。
【0079】
受信コマンドでアクセス対象とするプリビアス指定のデータオブジェクトを特定すると、制御部21は、受信コマンドがリードコマンドかライトコマンドかを判別する(ステップS33)。
受信コマンドがライトコマンドである場合(ステップS33、ライトコマンド)、制御部21は、プリビアス指定されたデータオブジェクトのデータ領域に当該受信コマンドで指定されるデータを書込む処理(更新処理)を行う(ステップS34〜S36)。ここでは、制御部21は、カレントポインタ設定テーブル23aによりプリビアス指定のデータオブジェクトの先頭アドレスを特定する。
【0080】
すなわち、制御部21は、プリビアス指定のデータオブジェクトの先頭アドレスから識別(タグ)およびデータ長(レングス)に続いて記憶されているデータ値(バリュー)の領域(データ領域)を初期化する(ステップS34)。プリビアス指定のデータオブジェクトのデータ領域を初期化すると、制御部21は、初期化したデータ領域に当該受信コマンドで指定されたデータを書込む(ステップS35)。プリビアス指定のデータオブジェクトのデータ領域におけるデータを更新すると、制御部21は、書込み処理の結果を示す情報を含むレスポンスデータを生成する。制御部21は、生成したレスポンスデータを当該受信コマンドの送信元であるICカード処理装置2へ送信する(ステップS36)。
【0081】
受信コマンドがリードコマンドである場合(ステップS33、リードコマンド)、制御部21は、プリビアス指定されたデータオブジェクトのデータを読み出す処理を行う(ステップS37−S38)。ここでは、制御部21は、カレントポインタ設定テーブル23aによりプリビアス指定のデータオブジェクトの先頭アドレスを特定する。
【0082】
すなわち、制御部21は、プリビアス指定のデータオブジェクトの先頭アドレスから識別(タグ)およびデータ長(レングス)に続いて記憶されているデータ値(バリュー)を読み出す(ステップS37)。プリビアス指定のデータオブジェクトのデータを読み出すと、制御部21は、読み出したデータを含むレスポンスデータを生成し、受信コマンドの送信元であるICカード処理装置2へ送信する(ステップS38)。
【0083】
上記のようなプリビアス指定のリードコマンド又はライトコマンドに対する処理では、データオブジェクトのカレント状態を変更する必要がある。つまり、プリビアス指定されたデータオブジェクトは、カレント状態に変更される。このため、制御部21は、カレントポインタ設定テーブル23aにおけるカレントフラグの更新を行う(ステップS39)。この更新処理では、プリビアス指定されたデータオブジェクトのカレントフラグを「1」に書き換えるとともに、カレント状態であったデータオブジェクトのカレントフラグを「0」に書き換える。
【0084】
たとえば、図15は、プリビアス指定のコマンドを処理した後のカレントポインタ設定テーブル23aの状態を示している。図15は、カレントポインタ設定テーブル23aが図7に示す状態である場合に受信したプリビアス指定のコマンドを処理した後の状態を示している。つまり、プリビアス指定のコマンドを実行すると、データオブジェクトのカレント状態は、次のデータオブジェクトに変更される。これは、図7あるいは図15に示すようなカレントポインタ設定テーブル23aでは、プリビアス指定のコマンドを実行するごとに、カレントフラグに「1」がセットされるデータオブジェクトが順次移動することを意味する。
【0085】
上記のような手順により、プリビアス指定のリードコマンド又はライトコマンドに対する処理が実行される。たとえば、図16は、プリビアス指定のライトコマンドによる処理結果の例を示す図である。図16は、カレントポインタ設定テーブル23aが図7に示す状態である場合に、受信したプリビアス指定のライトコマンドの処理結果の例を示している。
【0086】
図16に示す例では、図4に示す第1EF34内において、図中の斜線で示す領域のデータが書換えられている。図16に示す書換えられたデータ領域の直前の領域には、データオブジェクトのデータ長として「30」が格納され、さらに、その直前の領域にはデータオブジェクトの識別子として「09」が格納されている。すなわち、図16に示す例では、識別子「09」のデータオブジェクトのデータ値(バリュー)が書換えられている。この識別子「09」のデータオブジェクトは、図7に示すカレントポインタ設定テーブル23aで示されるカレント状態のデータオブジェクトの直前のデータオブジェクト(プリビアス指定のデータオブジェクト)である。つまり、カレントポインタ設定テーブル23aが図7に示すような状態である場合、プリビアス指定のライトコマンドを受けたICカード1は、図4に示す第1EF34内のデータオブジェクトを図16に示すように書き換えるようになっている。
【0087】
なお、実行した処理によってカレントポインタ設定テーブル23aにおけるカレントフラグ以外の情報が変化する場合も、制御部21は、カレントポインタ設定テーブル23aを更新する。たとえば、書換え処理などによりプリビアス指定のデータオブジェクトのデータ長が変更される場合、プリビアス指定のデータオブジェクトに続く各データオブジェクトの先頭アドレスも変更される。このような場合、制御部21は、各データオブジェクトの変更された先頭アドレスを判別して、カレントポインタ設定テーブル23aを更新する。
【0088】
上記のようなプリビアス指定のリードコマンド又はライトコマンドに対する処理では、上記カンレトポインタ設定テーブルで示されるカレント状態のデータオブジェクトを基準とする直前のデータオブジェクトを順に読出しあるいは書込みすることができる。たとえば、プリビアス指定のコマンドが連続的に与えられた場合、ICカードは、上記カンレトポインタ設定テーブルにより、カンレト状態のデータオブジェクトを基準とする前のデータオブジェクトに順にアクセスする処理を効率よく実行することができる。
【符号の説明】
【0089】
B…本体、M…モジュール、C…ICチップ、1…ICカード、2…ICカード処理装置、11…端末装置、12…ディスプレイ、13…キーボード、14…テンキー、15…カードリーダライタ、21…制御部、22…データメモリ、23…RAM、23a…カレントポインタ設定テーブル、24…ROM、25…通信部。
【技術分野】
【0001】
この発明は、例えば、携帯可能電子装置してのICカードにおいて、ファイル内に格納されているデータオブジェクトへのアクセス制御に関する。
【背景技術】
【0002】
従来、ICカードでは、複数のデータオブジェクト(レコードデータ)を格納するバイナリレコードファイルと呼ばれるファイル形式がある。バイナリレコードファイル内の各データオブジェクトには、当該ファイルの先頭からソートすることによりアクセスが可能となっている。言い換えれば、従来のICカードでは、バイナリレコードファイル内の各データオブジェクトに対して直接的にアクセスすることができない。
【0003】
近年では、ICカードの運用形態の多様化に伴って取り扱うデータも多様化してきている。ICカードで取り扱うデータが多様化すると、ICカード内では、データの種類あるいはデータ構造が複雑になってくる。たとえば、上記バイナリレコードファイルには、大量のデータが複数のデータオブジェクトとして記憶されることも多くなってきている。しかしながら、上述したように、従来のICカードでは、バイナリレコードファイル内の各データオブジェクトを当該ファイルの先頭からソートする必要がある。このようなアクセス制御では、バイナリレコードファイル内のデータオブジェクトが多様化すると、特定のデータオブジェクトに対する処理に多くの時間がかかってしまう。このため、バイナリレコードファイル内の各データオブジェクトに対して効率良くアクセスできるICカードが要望されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特許第2695857号
【発明の概要】
【発明が解決しようとする課題】
【0005】
この発明の一形態は、ファイル内に格納されている複数のデータオブジェクトに対して効率的にアクセスできる携帯可能電子装置および携帯可能電子装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【0006】
この発明の一形態としての携帯可能電子装置は、外部装置との通信を行う通信インターフェースと、複数のデータオブジェクトを有するレコードファイルを記憶するデータメモリと、前記データメモリに記憶されているアクセス対象のレコードファイルにおける各データオブジェクトの管理情報を記憶する管理テーブルと、外部装置から指定のデータオブジェクトへのアクセスを要求するコマンドを受信した場合、前記管理テーブルに記憶されている管理情報に基づいて当該コマンドで指定されたデータオブジェクトにアクセスするアクセス制御部とを有する。
【0007】
この発明の一形態としての携帯可能電子装置におけるアクセス制御方法は、複数のデータオブジェクトを有するレコードファイルをデータメモリに記憶しておき、アクセス対象となるレコードファイルにおける複数のデータオブジェクトに対する管理情報をテーブルに記憶し、外部装置から特定のデータオブジェクトを指定してアクセスを要求するコマンドが与えられた場合、前記テーブルに記憶されている各データオブジェクトの管理情報に基づいて当該コマンドで指定されたデータオブジェクトへのアクセスを制御する。
【発明の効果】
【0008】
この発明の一形態によれば、ファイル内に格納されている複数のデータオブジェクトに対して効率的にアクセスできる携帯可能電子装置および携帯可能電子装置の制御方法を提供できる。
【図面の簡単な説明】
【0009】
【図1】図1は、ICカードおよびICカード処理装置の構成例を概略的に示すブロック図である。
【図2】図2は、ICカードのハードウエア構成例を概略的に示すブロック図である。
【図3】図3は、データメモリに格納されるファイルの構成例を示す模式的に示す図である。
【図4】図4は、複数のデータオブジェクトを格納するレコードファイルのメモリ領域におけるデータ構造を示す図である。
【図5】図5は、複数のデータオブジェクトを格納するレコードファイルのメモリ領域におけるデータ構造を示す図である。
【図6】図6は、カレントポインタ設定テーブルの構成例である。
【図7】図7は、カレントポインタ設定テーブルの第2の構成例を示す図である。
【図8】図8は、カレントポインタ設定テーブルの生成処理の例を説明するためのフローチャートである。
【図9】図9は、カレント指定のリードコマンド又はライトコマンドに対する処理を説明するためのフローチャートである。
【図10】図10は、カレント指定のライトコマンドによる処理結果の例を示す図である。
【図11】図11は、ネクスト指定のリードコマンド又はライトコマンドに対する処理について説明するためのフローチャートである。
【図12】図12は、ネクスト指定のコマンドを処理した後のカレントポインタ設定テーブルの状態を示す図である。
【図13】図13は、ネクスト指定のライトコマンドによる処理結果の例を示す図である。
【図14】図14は、プリビアス指定のリードコマンド又はライトコマンドに対する処理について説明するためのフローチャートである。
【図15】図15は、プリビアス指定のコマンドを処理した後のカレントポインタ設定テーブルの状態を示している。
【図16】図16は、プリビアス指定のライトコマンドによる処理結果の例を示す図である。
【発明を実施するための形態】
【0010】
以下、この発明の実施の形態について図面を参照して詳細に説明する。
図1は、本実施の形態に係るICカード(携帯可能電子装置)1、および、ICカード1との通信機能を有する外部装置としてのICカード処理装置2の構成例を概略的に示すブロック図である。
上記ICカード処理装置2は、図1に示すように、端末装置11、ディスプレイ12、キーボード13、テンキー14、及び、カードリーダライタ15などを有している。
【0011】
上記端末装置11は、ICカード処理装置2全体の動作を制御するものである。上記端末装置11は、CPU、種々のメモリ及び各種インターフェースなどにより構成される。たとえば、上記端末装置11は、パーソナルコンピュータ(PC)により構成される。
上記端末装置11は、上記カードリーダライタ15によりICカード1へコマンドを送信する機能、ICカード1から受信したデータを基に種々の処理を行う機能などを有している。たとえば、上記端末装置11は、カードリーダライタ15を介してICカード1にデータの書き込みコマンド(ライトコマンド)を送信することによりICカード1内のデータメモリにデータを書き込む制御を行う。また、上記端末装置11は、ICカード1に読み取りコマンド(リードコマンド)を送信することによりICカード1のデータメモリからデータを読み出す制御を行う。
【0012】
上記ディスプレイ12は、上記端末装置11の制御により種々の情報を表示する表示装置である。上記キーボード13は、当該ICカード処理装置2の操作員が操作する操作部として機能し、操作員により種々の操作指示あるいはデータなどが入力される。上記テンキー14は、使用者IDあるいはパスワードなどの情報を入力する為の入力部として機能する。
【0013】
上記カードリーダライタ15は、上記ICカード1との通信を行うためのインターフェース装置である。上記カードリーダライタ15は、上記ICカード1の通信方式に応じたインターフェースにより構成される。たとえば、上記ICカード1が接触型のICカードである場合、上記カードリーダライタ15は、ICカード1のコンタクト部と物理的かつ電気的に接続するための接触部などにより構成される。
【0014】
また、上記ICカード1が非接触型のICカードである場合、上記カードリーダライタ15は、ICカード1との無線通信を行うためのアンテナおよび通信制御などにより構成される。上記カードリーダライタ15では、上記ICカード1に対する電源供給、クロック供給、リセット制御、データの送受信が行われるようになっている。このような機能によってカードリーダライタ15は、上記端末装置11による制御に基づいて上記ICカード1の活性化(起動)、種々のコマンドの送信、及び送信したコマンドに対する応答の受信などを行なう。
【0015】
次に、上記ICカード1のハードウエア構成例について説明する。
上記ICカード1は、上記カードリーダライタ15を介してICカード処理装置2などの上位装置から電力供給を受けた際、活性化される(動作可能な状態になる)。例えば、上記ICカード1が接触型の通信機能を具備している場合、つまり、ICカード1が接触型のICカードで構成される場合、上記ICカード1は、通信インターフェースとしてのコンタクト部を介してカードリーダライタ15からの動作電源及び動作クロックの供給を受けて活性化される。
【0016】
また、上記ICカード1が非接触型の通信機能を具備している場合、つまり、上記ICカード1が非接触式のICカードで構成される場合、上記ICカード1は、通信インターフェースとしてのアンテナ及び変復調回路などを介してカードリーダライタ15からの電波を受信し、その電波から図示しない電源部により動作電源及び動作クロックを生成して活性化する。
【0017】
図2は、本実施の形態に係るICカード1のハードウエア構成例を概略的に示すブロック図である。
上記ICカード1は、本体Bを構成する筐体内にモジュールMが内蔵されている。上記モジュールMは、1つまたは複数のICチップCと通信用の外部インターフェース(通信部)とが接続された状態で一体的に形成される。上記モジュールMは、ICカード1の本体B内に埋設される。上記ICカード1のモジュールMは、図2に示すように、CPU(制御素子)21、データメモリ22、RAM(ワーキングメモリ)23、ROM(プログラムメモリ)24、および、通信部25などを有してしている。
【0018】
上記制御部21は、当該ICカード1全体の制御を司るものである。上記制御部21は、上記プログラムメモリ24あるいは上記データメモリ22に記憶されている制御プログラムおよび制御データに基づいて動作することにより、種々の機能を実現する。たとえば、上記制御部21は、オペレーティングシステムのプログラムを実行することにより、当該ICカード1の基本的な動作制御を行う。また、上記制御部21は、当該ICカード1の利用目的に応じたアプリケーションプログラムを実行することにより、当該ICカード1の運用形態に応じた種々の動作制御を行う。
【0019】
上記データメモリ22は、書換え可能な不揮発性メモリである。上記データメモリ22は、例えば、EEPROM(Electrically Erasable Programmable Read-Only Memory)あるいはフラッシュROMなどのデータの書き込み及び書換えが可能な不揮発性のメモリにより構成される。上記データメモリ22には、当該ICカード1の運用用途に応じた制御プログラムあるいは種々のデータが書込まれる。上記データメモリ22には、当該ICカード1の規格に応じた種々のファイルが定義され、それらのファイルに種々のデータが書き込まれる。上記データメモリ22に格納されるファイルの例については、後述する。
【0020】
上記RAM23は、ワーキングメモリとして機能する揮発性のメモリである。上記RAM23は、処理中のデータなどを一時的に保管するバッファとして機能する。たとえば、上記RAM23には、各レコードファイルにおいてカレント状態となっているオブジェクトを示す情報を格納する管理テーブル(カレントポインタ設定テーブル)23aなどが設けられる。
上記ROM24は、プログラムメモリとして機能するマスクROMなどの不揮発性メモリである。上記ROM24は、予め制御用のプログラムあるいは制御データなどを記憶する。上記ROM24には、当該ICカードの製造段階で制御プログラムあるいは制御データなどが記憶された状態でICカード1内に組み込まれる。上記ROM24に記憶されている制御プログラムあるいは制御データは、当該ICカードの基本的な動作を司るものであり、予め当該ICカード1の仕様に応じて組み込まれるものである。
【0021】
上記通信部25は、上記リーダライタ15を介してICカード処理装置2と通信するためのインターフェースである。当該ICカード1が接触型のICカードとして実現される場合、上記通信部25は、上記リーダライタ15と物理的かつ電気的に接触して信号の送受信を行うための通信制御部とコンタクト部とにより構成される。また、当該ICカード1が非接触型のICカードとして実現される場合、上記通信部25は、上記リーダライタ15との無線通信を行うための変復調回路などの通信制御部および電波を送受信するためのアンテナなどにより構成される。
【0022】
次に、上記データメモリ22に格納されるファイルについて説明する。
図3は、上記データメモリ22に格納されるファイルの構成例を示す模式的に示す図である。
図3は、ICカードなどの携帯可能電子装置におけるファイル構成例を示している。図3に示す例は、ICカードなどの携帯可能電子装置に関する規格であるISO/IEC7816−4に定義されるファイル構成例である。図3に示すファイル構成例では、種々のファイルをツリー構造で管理している。
【0023】
図3に示すように、上記データメモリ22には、MF(Master File)、DF(Dedicated File)およびEF(Elementary File)などからなる階層構造を有する複数のファイルが定義される。図3に示す構成例では、最上階層のマスターファイル(MF)31の次の階層には、第1DF(DF1)32および第2DF(DF2)33が存在している。上記第1DFの次の階層には、第1EF(EFID:0001)34、第2EF(EFID:0002)35、および、第3EF(EFID:0003)36が存在している。
【0024】
上記MF31は、上記データメモリ22に格納されている各種ファイルに対するファイル構成において、最上位に位置する。上記各DF(DF1、DF2)32、33は、たとえば、アプリケーションに対応して設けられる。この場合、上記各DF32、33は、各アプリケーションに相当するフォルダとして機能する。上記各EF34、35、36は、実データを格納するレコードファイル(データファイル)である。すなわち、DF1の配下の各EF34、35、36は、DF1が対応するアプリケーションで使用されるデータを格納する。なお、EFは、MF31直下の階層に設けることも可能である。また、後述の説明では、上記第1EF34および第2EF35は、複数のデータオブジェクトを格納するバイナリレコードファイルであるものと想定する。
【0025】
次に、レコードファイル(EF)の構成について説明する。
図4および図5は、データメモリ22のメモリ領域におけるレコードファイルのデータ構造を示す図である。図4は、第1EF(EFID:0001)34のデータ構造を示している。図5は、第2EF(EFID:0002)35のデータ構造を示している。
図4あるいは図5に示すレコードファイルは、複数のデータオブジェクトにより構成されている。各データオブジェクトは、識別子(タグ;Tag)、データ長(レングス;Length)、および、データ値(バリュー;Value)からなる。このようなデータ構造のデータオブジェクトは、たとえば、TLVオブジェクトと呼ばれる。TLVオブジェクトは、識別子「タグ」のデータと、データ長「レングス」のデータと、データ値「バリュー」のデータとが順に連結されたデータ構造となっている。
【0026】
このようなTLVオブジェクトは、上記「識別子」のデータサイズと「データ長」のデータサイズとが決まっていれば、「データ長」で示される「データ値」のデータサイズにより全体のデータサイズが判別される。このため、複数のTLVオブジェクトは、連続してレコードファイルの記憶領域に格納できる。図4あるいは図5に示すTLVオブジェクトを格納するレコードファイルでは、当該レコードファイルのデータ領域の先頭から各データオブジェクトの識別子、データ長およびデータ値が順に配置される。従って、複数のデータオブジェクトが格納されたレコードファイルであっても、当該ファイルの先頭から順に各データオブジェクトの「識別子」および「データ長」を確認していくことにより、特定のデータオブジェクトが検出できるようになっている。一般に、ICカードに用いられるレコードファイルは、上述したISOなどの規格により、「識別子」および「データ長」の長さ(サイズ)が決まっている。このため、「データ長」で示される「データ値」の長さ(サイズ)により、オブジェクト全体の長さ(サイズ)も判別できるようになっている。
【0027】
図4及び図5に示す構成例では、レコードファイルに複数のTLVオブジェクトが格納されている状態を示している。
図4及び図5において、各データオブジェクトの識別子の記憶領域は、矩形で数値を囲んだ領域である。各データオブジェクトのデータ長の記憶領域は、数値に下線を付した領域である。各データオブジェクトのデータ値の記憶領域は、矩形も下線も付与されていない数値が記述された領域(識別子およびデータ長以外の領域)である。ただし、図4及び図5において左端の1列は、メモリ上におけるアドレス(各行の先頭アドレス)の例を示すものである。なお、図4及び図5に示す数値は、何れも16進数であるものとする。
【0028】
たとえば、図4に示すレコードファイルにおいて、当該ファイル内における先頭のTLVオブジェクト(第1オブジェクト)の識別子は、「01」である。この第1オブジェクトのデータ長は、「01」である。従って、第1オブジェクトのデータ長としての「01」に続く1バイト分の領域には、第1オブジェクトのデータ値としての「AA」が格納されている。さらに、第1オブジェクトのデータ値「AA」の次には、次のTLVオブジェクト(第2オブジェクト)の識別子「02」が格納され、識別子「02」の次には、第2オブジェクトのデータ長「03」が格納されている。第2オブジェクトのデータ長としての「03」に続く3バイト分の領域には、第2オブジェクトのデータ値として「BB」、「BB」、「BB」が格納されている。
【0029】
図4及び図5に示すようなデータ構造のレコードファイルでは、上述したように、先頭から順に各データオブジェクトの識別子及びデータ長を確認することにより、特定のデータオブジェクトにアクセスすることが可能である。言い換えれば、図4あるいは図5に示すようなレコードファイルでは、特定のデータオブジェクトに対して直接的にアクセスするために、先頭から順に各データオブジェクトを検索する必要がある。このため、本ICカード1では、レコードファイル内の各データオブジェクトに対して直接的にアクセスするための情報を保持する。また、本ICカード1では、レコードファイル内の1つのデータオブジェクトをカレント状態に設定することができるものとする。
【0030】
次に、レコードファイルにおけるデータオブジェクトの管理について説明する。
本ICカード1では、レコードファイルにおけるデータオブジェクトを、管理テーブルとしてのカレントポインタ設定テーブル23aにより管理する。また、上記カレントポインタ設定テーブル23aは、データオブジェクトに対するカレント状態を示す情報でもある。図2に示す構成例では、カレントポインタ設定テーブル23aは、RAM23内に設けられる。なお、カレントポインタ設定テーブル23aは、制御部21により書き込み或いは書換えが可能な記憶領域に存在すれば良い。たとえば、カレントポインタ設定テーブル23aは、データメモリ22内に設けるようにしても良い。
【0031】
上記カレントポインタ設定テーブル23aは、制御部21により生成および更新される。たとえば、制御部21は、カレントファイルとして選択されたレコードファイルについて、カレントポインタ設定テーブル23aを生成する。この場合、カレントポインタ設定テーブル23aは、ICカード1の起動時あるいは外部装置からのコマンドで特定のレコードファイルがカレントファイルとして選択された場合に、生成するようにすれば良い。また、上記データメモリ22は、各レコードファイルに対するカレントポインタ設定テーブル23aを記憶しておくようにしても良い。この場合、制御部21は、種々の処理内容に応じてカレントポインタ設定テーブル23aを適宜更新する。
【0032】
図6は、レコードファイルとしての第1EF(EFID:0001)34に対するカレントポインタ設定テーブル23aの構成例である。
図6に示す構成例では、カレントポインタ設定テーブル23aは、図4に示す第1EF34における全データオブジェクトの管理情報を格納している。すなわち、図6に示すカレントポインタ設定テーブル23aでは、図4に示す第1EF34における各データオブジェクトの管理情報として、ファイル識別情報(EFID)、識別子(タグ)情報、アドレス(Address)情報、データ長(レングス)情報、カレントフラグ(カレントポインタFlag)などの情報を格納している。
【0033】
上記カレントポインタ設定テーブル23aに格納されるEFIDは、各オブジェクトが格納されているレコードファイルを識別するための情報である。図6に示す例は、図4に示す第1EF34におけるデータオブジェクトを管理するテーブルである。このため、図6に示す例では、各データオブジェクトのEFIDは、「0001」となっている。上記カレントポインタ設定テーブル23aに格納される識別子情報およびデータ長情報は、各データオブジェクトの識別子およびデータ長である。図6に示す例では、各データオブジェクトの識別子情報及びデータ長情報としては、図4に示す第1EF34に格納されている各データオブジェクトの識別子及びデータ長そのものが格納されている。
【0034】
上記カレントポインタ設定テーブル23aに格納されるアドレス情報は、データメモリ22上における各データオブジェクトの先頭アドレスを示す情報である。各データオブジェクトのアドレス情報は、図4に示す第1EF34において各データオブジェクトの識別子及びデータ長から順に判別される。また、上記カレントポインタ設定テーブル23aに格納されるカレントフラグは、当該データオブジェクトがカレント状態であるか否かを示すものである。たとえば、カレント状態であるデータオブジェクトのカレントフラグは、「1」にセットされ、カレント状態でないデータオブジェクトのカレントフラグは、「0」にセットされる。
【0035】
図7は、カレントポインタ設定テーブル23aの第2の構成例を示す図である。
図7は、図4に示す第1EF34と図5に示す第2EF35とに対するカレントポインタ設定テーブル23aの構成例である。
第2の構成例のカレントポインタ設定テーブル23aでは、ロジカルチャネルごとにカレント状態を示す情報を保持する。図7に示す構成例においては、カレントポインタ設定テーブル23aは、図4に示す第1EF34と図5に示す第2EF35における全データオブジェクトの管理情報を格納している。ここでは、第1EF34は、ロジカルチャネル「0」でカレントファイルに選択され、第2EF35は、ロジカルチャネル「1」でカレントファイルに選択された状態を想定している。すなわち、図7に示すカレントポインタ設定テーブル23aでは、ロジカルチャネル「0」でカレント状態となっている第1EF34内のデータオブジェクトと、ロジカルチャネル「1」でカレント状態となっている第2EF35内のデータオブジェクトとを示している。
【0036】
上記ロジカルチャネルとは、概略的に言えば、当該ICカード1において、上記制御部21が各種の処理を実行可能な論理上のチャンネルである。ICカードにおけるロジカルチャネルは、たとえば、ISO/IEC7816−4で規定されている。すなわち、上記ICカード1では、上記制御部21が、各ロジカルチャネルごとに各種の処理を並列的に実施することができる。この場合、上記ICカード1では、各ロジカルチャネルでの各処理内容(たとえば、カレント情報等)を保持するようになっている。
【0037】
たとえば、ICカードは、4個のロジカルチャネル(Ch.0、Ch.1、Ch.2、Ch.3)をサポートしているものがある。この場合、デフォルトのロジカルチャネルが「Ch.0」であれば、ロジカルチャネル「Ch.0」は、常時使用可能とし、ロジカルチャネル(Ch.1、Ch.2、Ch.3)は、ロジカルチャネルを指定するコマンド(たとえば、マネージチャネルコマンド)などによりオープン(使用可能な状態)にする処理を行う必要がある。
【0038】
図7に示すカレントポインタ設定テーブル23aでは、図4に示す第1EF34および図5に示す第2EFにおける各データオブジェクトの管理情報として、ロジカルチャンネルごとにレコードファイル内のデータオブジェクトを管理している。図7に示すカレントポインタ設定テーブル23aでは、各データオブジェクトの管理情報として、ロジカルチャネル情報、EFID情報、識別子(Tag)情報、アドレス(Address)情報、データ長(Data Length)情報、カレントフラグ(カレントポインタFlag)などの情報を格納している。
【0039】
上記カレントポインタ設定テーブル23aに格納されるロジカルチャネル情報は、各データオブジェクトが格納されているレコードファイルが選択されているロジカルチャネルを示す情報である。図7に示す例は、図4に示す第1EF34がロジカルチャネル「0」で選択され、図5に示す第2EFがロジカルチャネル「1」で選択された状態である。このため、図7に示すように、EFIDが「0001」の各データオブジェクトに対応するロジカルチャネル情報は「0」となっており、EFIDが「0002」の各データオブジェクトに対応するロジカルチャネル情報は「1」となっている。
【0040】
上記カレントポインタ設定テーブル23aに格納される識別子およびデータ長は、各データオブジェクトの識別子およびデータ長そのものである。図6に示す例では、各データオブジェクトの識別子及びデータ長としては、図4に示す第1EF34に格納されている各データオブジェクトの識別子及びデータ長が格納されている。上記カレントポインタ設定テーブル23aに格納されるアドレスは、データメモリ22上における各データオブジェクトの先頭アドレスを示す情報である。各データオブジェクトのアドレス情報は、図4に示す第1EF34および図5に示す第2EF35において各データオブジェクトの識別子及びデータ長から順に特定される。
【0041】
また、上記カレントポインタ設定テーブル23aに格納されるカレントフラグは、各ロジカルチャネルにおいて、当該データオブジェクトがカレント状態であるか否かを示す。図7に示す例では、ロジカルチャネル「0」においてカレント状態であるオブジェクトとロジカルチャネル「1」においてカレント状態であるデータオブジェクトとは、カレントフラグに「1」がセットされている。
【0042】
次に、カレントポインタ設定テーブルの作成処理について説明する。
図8は、カレントポインタ設定テーブル23aの作成処理の例を説明するためのフローチャートである。
まず、上記ICカード1は、ICカード処理装置2などの上位装置からの電力供給により活性化される(ステップS1)。この状態において、ICカード1は、ICカード処理装置2からのコマンドが受信可能となる(ステップS2)。ICカード処理装置2からコマンドを受信した場合、上記ICカード1の制御部21は、受信したコマンドがレコードファイルの識別情報(EFID)とデータオブジェクトの識別子(タグ)とを指定するコマンドであるか否かを判定する(ステップS3)。
【0043】
上記レコードファイルとデータオブジェクトとを指定するコマンドを受信した場合(ステップS3、YES)、上記制御部21は、RAM23上にカレントポインタ設定テーブル23aが存在するか否かを判断する(ステップS4)。たとえば、ICカード1の活性化の直後は、RAM23内にはカレントポインタ設定テーブル23aが作成されていないと考えられる。また、カレントポインタ設定テーブル23aが存在している場合、上記制御部21は、カレントポインタ設定テーブルの作成処理を省略する。
【0044】
上記カレントポインタ設定テーブル23aが存在しないと判断した場合(ステップS4、NO)、上記制御部21は、受信コマンドで指定されたレコードファイルに対するカレントポインタ設定テーブル23aを作成する(ステップS5)。この場合、上記制御部21は、受信コマンドで指定されたレコードファイル内をソートすることにより、当該ファイル内の各データオブジェクトの管理情報を抽出する。すなわち、上記制御部21は、当該レコードファイルの先頭から順に各データオブジェクトの識別子とデータ長とを読み込む。これにより、制御部21は、順に各データオブジェクトの先頭アドレス、識別子、データ長を判別する。
【0045】
各データオブジェクトの識別子およびデータ長は、レコードファイルから読み込んだ情報そのものである。各データオブジェクトの先頭アドレスは、当該レコードファイルの先頭アドレスを基準として、各データオブジェクトのデータ長などにより判別される。すなわち、レコードファイル内の1つ目のデータオブジェクトの先頭アドレスは、当該レコードファイルの先頭アドレスである。2つ目以降のデータオブジェクトの先頭アドレスは、それぞれ前のデータオブジェクトのデータ長により判別される。たとえば、2つ目以降のデータオブジェクトの先頭アドレスは、直前のデータオブジェクトの先頭アドレスに、直前のオブジェクトの識別子のサイズとデータ長のサイズとデータ長で示されるデータ値のサイズとを加算したアドレス値である。
【0046】
受信コマンドで指定されたレコードファイルにおける各データオブジェクトの管理情報を抽出すると、制御部21は、抽出した各データオブジェクトの管理情報を当該レコードファイルのEFIDに対応づけて記憶することによりカレントポインタ設定テーブル23aを作成する。この場合、制御部21は、作成するカレントポインタ設定テーブル23aには当該受信コマンドで指定されたデータオブジェクトの管理情報にカレントフラグをセットする。これにより、RAM23上には、図6に示すようなカレントポインタ設定テーブル23aが作成される。
【0047】
なお、複数のロジカルチャネルで処理を行う場合、制御部21は、各ロジカルチャネルで選択されるレコードファイルごとに上記のようなテーブルが作成することにより、図7に示すような複数のロジカルチャネルに対応したカレントポインタ設定テーブル23aを作成する。
【0048】
受信コマンドで指定されたレコードファイルに対するカレントポインタ設定テーブル23aを作成した場合、あるいは、既にカレントポインタ設定テーブル23aが存在していた場合、制御部21は、受信コマンドで要求されている処理を実行する(ステップS6)。受信コマンドで要求された処理を実行すると、制御部21は、実行した処理内容に応じてカレントポインタ設定テーブル23aを更新する(ステップS7)。たとえば、カレント状態とするデータオブジェクトを変更した場合、制御部21は、カレントポインタ設定テーブル23aにおけるカレントフラグの状態を更新する。
【0049】
次に、カレント状態のデータオブジェクトを指定するコマンドに対応する処理について説明する。
図9は、カレント状態のデータオブジェクトを指定するコマンド(カレント指定のリードコマンド又はライトコマンド)に対する処理について説明するためのフローチャートである。
まず、上記ICカード1は、ICカード処理装置2などの上位装置からカレント指定のリードコマンド又はライトコマンドを受信したものとする(ステップS11)。カレントのデータオブジェクトを指定するコマンドを受信した場合、上記ICカード1の制御部21は、当該レコードファイルに対応するカレントポインタ設定テーブル23aを読み込む。すなわち、制御部21は、当該受信コマンドのロジカルチャネルを判別する。当該受信コマンドのロジカルチャネルを判別すると、制御部21は、カレントポインタ設定テーブル23aから当該受信コマンドのロジカルチャネルにおけるカレント状態のデータオブジェクトを特定する(ステップS12)。
【0050】
たとえば、カレントポインタ設定テーブル23aが図7に示すような状態である場合、ロジカルチャネルが「0」のコマンドを受信した制御部21は、カレントポインタ設定テーブル23aからロジカルチャネルが「0」の各データオブジェクトのカレントフラグを確認する。つまり、制御部21は、カレントポインタ設定テーブル23aからロジカルチャネルが「0」でカレントフラグが「1」のデータオブジェクトを検索する。図7に示す例では、ロジカルチャネルが「0」でカレントフラグが「1」のデータオブジェクトは、EFIDが「0001」でタグが「DF01」のデータオブジェクトである。従って、制御部21は、EFIDが「0001」のレコードファイルにおけるタグが「DF01」のデータオブジェクトがカレント状態であると判別する。
【0051】
このカレント状態と判別されたEFIDが「0001」でタグが「DF01」のデータオブジェクトは、図7に示すように、カレントポインタ設定テーブル23aにより先頭アドレスが「0059」であると判別される。このように、カレントポインタ設定テーブル23aを参照することにより、制御部21は、カレント状態となっているデータオブジェクトの先頭アドレスが容易に判別できる。この結果として、制御部21は、直接的にカレント状態のデータオブジェクトにアクセスすることができる。
【0052】
受信コマンドがアクセス対象とするカレント状態のデータオブジェクトを特定すると、制御部21は、受信コマンドがリードコマンドかライトコマンドかを判別する(ステップS13)。
受信コマンドがライトコマンドである場合(ステップS13、ライトコマンド)、制御部21は、カレント状態のデータオブジェクトのデータ領域に当該受信コマンドで指定されるデータを書込む処理(更新処理)を行う(ステップS14〜S16)。ここでは、制御部21は、カレントポインタ設定テーブル23aによりカレント状態のデータオブジェクトの先頭アドレスを特定する。
【0053】
すなわち、制御部21は、カレント状態のデータオブジェクトの先頭アドレスから識別(タグ)およびデータ長(レングス)に続いて記憶されているデータ値(バリュー)の領域(データ領域)を初期化する(ステップS14)。カレント状態のデータオブジェクトのデータ領域を初期化すると、制御部21は、初期化したデータ領域に当該受信コマンドで指定されたデータを書込む(ステップS15)。カレント状態のデータオブジェクトのデータ領域におけるデータを更新すると、制御部21は、書込み処理の結果を示す情報を含むレスポンスデータを生成する。制御部21は、生成したレスポンスデータを当該受信コマンドの送信元であるICカード処理装置2へ送信する(ステップS16)。
【0054】
受信コマンドがリードコマンドである場合(ステップS13、リードコマンド)、制御部21は、カレント状態となっているデータオブジェクトのデータを読み出す処理を行う(ステップS17−S18)。ここでは、制御部21は、カレントポインタ設定テーブル23aによりカレント状態のデータオブジェクトの先頭アドレスを特定する。
【0055】
すなわち、制御部21は、カレント状態のデータオブジェクトの先頭アドレスから識別(タグ)およびデータ長(レングス)に続いて記憶されているデータ値(バリュー)を読み出す(ステップS17)。カレント状態のデータオブジェクトのデータを読み出すと、制御部21は、読み出したデータを含むレスポンスデータを生成し、受信コマンドの送信元であるICカード処理装置2へ送信する(ステップS18)。
【0056】
上記のような手順により、カレント指定のリードコマンド又はライトコマンドに対する処理が実行される。たとえば、図10は、カレント指定のライトコマンドによる処理結果の例を示す図である。図10は、図4に示す第1EF34におけるカレント状態のデータオブジェクトを図7に示すカレントポインタ設定テーブル23aを参照して書き換えた場合の例を示している。
【0057】
図10に示す例では、図4に示す第1EF34内において、図中の斜線で示す領域のデータが書換えられている。図10に示す書換えられたデータ領域の直前の領域には、データオブジェクトのデータ長として「30」が格納され、さらに、その直前の領域にはデータオブジェクトの識別子として「DF01」が格納されている。すなわち、図10に示す例では、識別子「DF01」のデータオブジェクトのデータ値(バリュー)が書換えられたことを示している。この識別子「DF01」のデータオブジェクトは、図7に示すカレントポインタ設定テーブル23aで示されるカレント状態のデータオブジェクトである。つまり、カレントポインタ設定テーブル23aが図7に示すような状態である場合、カレント指定のライトコマンドを受けたICカード1は、図4に示す第1EF34内のデータオブジェクトを図10に示すように書き換えるようになっている。
【0058】
なお、カレント指定のリードコマンド又はライトコマンドに対する処理では、カレント状態のデータオブジェクトを変更する必要がない。このため、上述した例では、カレントポインタ設定テーブル23aの更新を行っていない。しかしながら、実行した処理によってカレントポインタ設定テーブル23aに記憶されている情報が変化する場合、制御部21は、カレントポインタ設定テーブル23aを更新する。たとえば、書換え処理などによりカレント状態のデータオブジェクトのデータ長が変更される場合、カレント状態のデータオブジェクトに続く各データオブジェクトの先頭アドレスも変更される。このような場合、制御部21は、各データオブジェクトの変更された先頭アドレスを判別して、カレントポインタ設定テーブル23aを更新する。
【0059】
上記のようなカレント指定のリードコマンド又はライトコマンドに対する処理では、上記カンレトポインタ設定テーブルで示されるカレント状態のデータオブジェクトに対して繰り返し読出しあるいは書込みすることが容易である。たとえば、カレント指定のコマンドが連続して与えられた場合、ICカードは、上記カンレトポインタ設定テーブルにより、カンレト状態のデータオブジェクトを直ちに特定することができ、カンレト状態のデータオブジェクトに効率よくアクセスできる。
【0060】
次に、カレント状態のデータオブジェクトの次のデータオブジェクトを指定するコマンド(ネクスト指定のコマンド)に対応する処理について説明する。
図11は、ネクスト指定のリードコマンド又はライトコマンドに対する処理について説明するためのフローチャートである。
まず、上記ICカード1は、ICカード処理装置2などの上位装置からネクスト指定のリードコマンド又はライトコマンドを受信したものとする(ステップS20)。ネクスト指定のコマンドを受信した場合、上記ICカード1の制御部21は、当該受信コマンドのロジカルチャネルを判別する。当該受信コマンドのロジカルチャネルを判別すると、制御部21は、カレントポインタ設定テーブル23aから当該受信コマンドのロジカルチャネルにおけるカレント状態のデータオブジェクトを特定する(ステップS21)。
【0061】
上述したように、カレント状態のデータオブジェクトは、カレントフラグが「1」となっているか否かにより判別される。カレント状態のデータオブジェクトを特定すると、上記制御部21は、さらに、カレント状態のデータオブジェクトの次のデータオブジェクト(ネクスト指定のデータオブジェクト)を特定する(ステップS22)。
【0062】
たとえば、カレントポインタ設定テーブル23aが図7に示すような状態である場合、ロジカルチャネル「0」でネクスト指定のコマンドを受信した制御部21は、カレントポインタ設定テーブル23aからロジカルチャネルが「0」でカレントフラグが「1」のデータオブジェクトを検索する。図7に示す例では、ロジカルチャネルが「0」でカレントフラグが「1」のデータオブジェクト(カレント状態のデータオブジェクト)は、EFIDが「0001」でタグが「DF01」のデータオブジェクトである。この場合、カレント状態のデータオブジェクトの次のデータオブジェクトは、EFIDが「0001」でタグが「DF02」のデータオブジェクトである。従って、制御部21は、EFIDが「0001」でタグが「DF01」のデータオブジェクトがネクスト指定のデータオブジェクトであると判別する。
【0063】
ネクスト指定のデータオブジェクトと判別されたEFIDが「0001」でタグが「DF01」のデータオブジェクトは、図7に示すカレントポインタ設定テーブル23aにより先頭アドレスが「008C」であると判別される。このように、カレントポインタ設定テーブル23aを参照することにより、制御部21は、ネクスト指定されたデータオブジェクト(カレント状態のデータオブジェクトの次のデータオブジェクト)の先頭アドレスが容易に判別できる。この結果として、制御部21は、直接的にネクスト指定のデータオブジェクトにアクセスすることができる。
【0064】
受信コマンドでアクセス対象とするネクスト指定のデータオブジェクトを特定すると、制御部21は、受信コマンドがリードコマンドかライトコマンドかを判別する(ステップS23)。
受信コマンドがライトコマンドである場合(ステップS23、ライトコマンド)、制御部21は、ネクスト指定されたデータオブジェクトのデータ領域に当該受信コマンドで指定されるデータを書込む処理(更新処理)を行う(ステップS24〜S26)。ここでは、制御部21は、カレントポインタ設定テーブル23aによりネクスト指定のデータオブジェクトの先頭アドレスを特定する。
【0065】
すなわち、制御部21は、ネクスト指定のデータオブジェクトの先頭アドレスから識別(タグ)およびデータ長(レングス)に続いて記憶されているデータ値(バリュー)の領域(データ領域)を初期化する(ステップS24)。ネクスト指定のデータオブジェクトのデータ領域を初期化すると、制御部21は、初期化したデータ領域に当該受信コマンドで指定されたデータを書込む(ステップS25)。ネクスト指定のデータオブジェクトのデータ領域におけるデータを更新すると、制御部21は、書込み処理の結果を示す情報を含むレスポンスデータを生成する。制御部21は、生成したレスポンスデータを当該受信コマンドの送信元であるICカード処理装置2へ送信する(ステップS26)。
【0066】
受信コマンドがリードコマンドである場合(ステップS23、リードコマンド)、制御部21は、ネクスト指定されたデータオブジェクトのデータを読み出す処理を行う(ステップS27−S28)。ここでは、制御部21は、カレントポインタ設定テーブル23aによりネクスト指定のデータオブジェクトの先頭アドレスを特定する。
【0067】
すなわち、制御部21は、ネクスト指定のデータオブジェクトの先頭アドレスから識別(タグ)およびデータ長(レングス)に続いて記憶されているデータ値(バリュー)を読み出す(ステップS27)。ネクスト指定のデータオブジェクトのデータを読み出すと、制御部21は、読み出したデータを含むレスポンスデータを生成し、受信コマンドの送信元であるICカード処理装置2へ送信する(ステップS28)。
【0068】
上記のようなネクスト指定のリードコマンド又はライトコマンドに対する処理では、データオブジェクトのカレント状態を変更する必要がある。つまり、ネクスト指定されたデータオブジェクトは、カレント状態に変更される。このため、制御部21は、カレントポインタ設定テーブル23aにおけるカレントフラグの更新を行う(ステップS29)。この更新処理では、ネクスト指定されたデータオブジェクトのカレントフラグを「1」に書き換えるとともに、カレント状態であったデータオブジェクトのカレントフラグを「0」に書き換える。
【0069】
たとえば、図12は、ネクスト指定のコマンドを処理した後のカレントポインタ設定テーブル23aの状態を示している。図12は、カレントポインタ設定テーブル23aが図7に示す状態である場合に受信したネクスト指定のコマンドを処理した後の状態を示している。つまり、ネクスト指定のコマンドを実行すると、データオブジェクトのカレント状態は、次のデータオブジェクトに変更される。これは、図7あるいは図12に示すようなカレントポインタ設定テーブル23aでは、ネクスト指定のコマンドを実行するごとに、カレントフラグに「1」がセットされるデータオブジェクトが順次移動することを意味する。
【0070】
上記のような手順により、ネクスト指定のリードコマンド又はライトコマンドに対する処理が実行される。たとえば、図13は、ネクスト指定のライトコマンドによる処理結果の例を示す図である。つまり、図13は、カレントポインタ設定テーブル23aが図7に示す状態である場合に、受信したネクスト指定のライトコマンドの処理結果を示している。
【0071】
図13に示す例では、図4に示す第1EF34内において、図中の斜線で示す領域のデータが書換えられている。図13に示す書換えられたデータ領域の直前の領域には、データオブジェクトのデータ長として「11」が格納され、さらに、その直前の領域にはデータオブジェクトの識別子として「DF02」が格納されている。
【0072】
すなわち、図13に示す例では、識別子「DF02」のデータオブジェクトのデータ値(バリュー)が書換えられている。この識別子「DF02」のデータオブジェクトは、図7に示すカレントポインタ設定テーブル23aで示されるカレント状態のデータオブジェクトの次のデータオブジェクト(ネクスト指定のデータオブジェクト)である。つまり、カレントポインタ設定テーブル23aが図7に示すような状態である場合、ネクスト指定のライトコマンドを受けたICカード1は、図4に示す第1EF34内のデータオブジェクトを図13に示すように書き換えるようになっている。
【0073】
なお、実行した処理によってカレントポインタ設定テーブル23aにおけるカレントフラグ以外の情報が変化する場合も、制御部21は、カレントポインタ設定テーブル23aを更新する。たとえば、書換え処理などによりカレント状態のデータオブジェクトのデータ長が変更される場合、カレント状態のデータオブジェクトに続く各データオブジェクトの先頭アドレスも変更される。このような場合、制御部21は、各データオブジェクトの変更された先頭アドレスを判別して、カレントポインタ設定テーブル23aを更新する。
【0074】
上記のようなネクスト指定のリードコマンド又はライトコマンドに対する処理では、上記カンレトポインタ設定テーブルで示されるカレント状態のデータオブジェクトを基準として、データオブジェクトを順に読出しあるいは書込みすることができる。たとえば、ネクスト指定のコマンドが連続的に与えられた場合、ICカードは、上記カンレトポインタ設定テーブルにより、カンレト状態のデータオブジェクトを基準とする次のデータオブジェクトに順にアクセスする処理を効率よく実行することができる。
【0075】
次に、カレント状態のデータオブジェクトの直前のデータオブジェクトを指定するコマンド(プリビアス指定のコマンド)に対応する処理について説明する。
図14は、プリビアス指定のリードコマンド又はライトコマンドに対する処理について説明するためのフローチャートである。
まず、上記ICカード1は、ICカード処理装置2などの上位装置からプリビアス指定のリードコマンド又はライトコマンドを受信したものとする(ステップS30)。プリビアス指定のコマンドを受信した場合、上記ICカード1の制御部21は、当該受信コマンドのロジカルチャネルを判別する。当該受信コマンドのロジカルチャネルを判別すると、制御部21は、カレントポインタ設定テーブル23aから当該受信コマンドのロジカルチャネルにおけるカレント状態のデータオブジェクトを特定する(ステップS31)。
【0076】
上述したように、カレント状態のデータオブジェクトは、カレントポインタ設定テーブル23aにおいてカレントフラグが「1」となっているか否かにより判別される。カレント状態のデータオブジェクトを特定すると、上記制御部21は、さらに、カレント状態のデータオブジェクトの直前のデータオブジェクト(プリビアス指定のデータオブジェクト)を特定する(ステップS32)。
【0077】
たとえば、カレントポインタ設定テーブル23aが図7に示すような状態である場合、ロジカルチャネル「0」でプリビアス指定のコマンドを受信した制御部21は、カレントポインタ設定テーブル23aからロジカルチャネルが「0」でカレントフラグが「1」のデータオブジェクトを検索する。図7に示す例では、ロジカルチャネルが「0」でカレントフラグが「1」のデータオブジェクト(カレント状態のデータオブジェクト)は、EFIDが「0001」でタグが「DF01」のデータオブジェクトである。この場合、カレント状態のデータオブジェクトの直前のデータオブジェクトは、EFIDが「0001」でタグが「09」のデータオブジェクトである。従って、制御部21は、EFIDが「0001」でタグが「09」のデータオブジェクトがプリビアス指定のデータオブジェクトであると判別する。
【0078】
プリビアス指定のデータオブジェクトと判別されたEFIDが「0001」でタグが「09」のデータオブジェクトは、図7に示すカレントポインタ設定テーブル23aにより先頭アドレスが「0027」であると判別される。このように、カレントポインタ設定テーブル23aを参照することにより、制御部21は、プリビアス指定されたデータオブジェクト(カレント状態のデータオブジェクトの直前のデータオブジェクト)の先頭アドレスが容易に判別できる。この結果として、制御部21は、直接的にプリビアス指定のデータオブジェクトにアクセスすることができる。
【0079】
受信コマンドでアクセス対象とするプリビアス指定のデータオブジェクトを特定すると、制御部21は、受信コマンドがリードコマンドかライトコマンドかを判別する(ステップS33)。
受信コマンドがライトコマンドである場合(ステップS33、ライトコマンド)、制御部21は、プリビアス指定されたデータオブジェクトのデータ領域に当該受信コマンドで指定されるデータを書込む処理(更新処理)を行う(ステップS34〜S36)。ここでは、制御部21は、カレントポインタ設定テーブル23aによりプリビアス指定のデータオブジェクトの先頭アドレスを特定する。
【0080】
すなわち、制御部21は、プリビアス指定のデータオブジェクトの先頭アドレスから識別(タグ)およびデータ長(レングス)に続いて記憶されているデータ値(バリュー)の領域(データ領域)を初期化する(ステップS34)。プリビアス指定のデータオブジェクトのデータ領域を初期化すると、制御部21は、初期化したデータ領域に当該受信コマンドで指定されたデータを書込む(ステップS35)。プリビアス指定のデータオブジェクトのデータ領域におけるデータを更新すると、制御部21は、書込み処理の結果を示す情報を含むレスポンスデータを生成する。制御部21は、生成したレスポンスデータを当該受信コマンドの送信元であるICカード処理装置2へ送信する(ステップS36)。
【0081】
受信コマンドがリードコマンドである場合(ステップS33、リードコマンド)、制御部21は、プリビアス指定されたデータオブジェクトのデータを読み出す処理を行う(ステップS37−S38)。ここでは、制御部21は、カレントポインタ設定テーブル23aによりプリビアス指定のデータオブジェクトの先頭アドレスを特定する。
【0082】
すなわち、制御部21は、プリビアス指定のデータオブジェクトの先頭アドレスから識別(タグ)およびデータ長(レングス)に続いて記憶されているデータ値(バリュー)を読み出す(ステップS37)。プリビアス指定のデータオブジェクトのデータを読み出すと、制御部21は、読み出したデータを含むレスポンスデータを生成し、受信コマンドの送信元であるICカード処理装置2へ送信する(ステップS38)。
【0083】
上記のようなプリビアス指定のリードコマンド又はライトコマンドに対する処理では、データオブジェクトのカレント状態を変更する必要がある。つまり、プリビアス指定されたデータオブジェクトは、カレント状態に変更される。このため、制御部21は、カレントポインタ設定テーブル23aにおけるカレントフラグの更新を行う(ステップS39)。この更新処理では、プリビアス指定されたデータオブジェクトのカレントフラグを「1」に書き換えるとともに、カレント状態であったデータオブジェクトのカレントフラグを「0」に書き換える。
【0084】
たとえば、図15は、プリビアス指定のコマンドを処理した後のカレントポインタ設定テーブル23aの状態を示している。図15は、カレントポインタ設定テーブル23aが図7に示す状態である場合に受信したプリビアス指定のコマンドを処理した後の状態を示している。つまり、プリビアス指定のコマンドを実行すると、データオブジェクトのカレント状態は、次のデータオブジェクトに変更される。これは、図7あるいは図15に示すようなカレントポインタ設定テーブル23aでは、プリビアス指定のコマンドを実行するごとに、カレントフラグに「1」がセットされるデータオブジェクトが順次移動することを意味する。
【0085】
上記のような手順により、プリビアス指定のリードコマンド又はライトコマンドに対する処理が実行される。たとえば、図16は、プリビアス指定のライトコマンドによる処理結果の例を示す図である。図16は、カレントポインタ設定テーブル23aが図7に示す状態である場合に、受信したプリビアス指定のライトコマンドの処理結果の例を示している。
【0086】
図16に示す例では、図4に示す第1EF34内において、図中の斜線で示す領域のデータが書換えられている。図16に示す書換えられたデータ領域の直前の領域には、データオブジェクトのデータ長として「30」が格納され、さらに、その直前の領域にはデータオブジェクトの識別子として「09」が格納されている。すなわち、図16に示す例では、識別子「09」のデータオブジェクトのデータ値(バリュー)が書換えられている。この識別子「09」のデータオブジェクトは、図7に示すカレントポインタ設定テーブル23aで示されるカレント状態のデータオブジェクトの直前のデータオブジェクト(プリビアス指定のデータオブジェクト)である。つまり、カレントポインタ設定テーブル23aが図7に示すような状態である場合、プリビアス指定のライトコマンドを受けたICカード1は、図4に示す第1EF34内のデータオブジェクトを図16に示すように書き換えるようになっている。
【0087】
なお、実行した処理によってカレントポインタ設定テーブル23aにおけるカレントフラグ以外の情報が変化する場合も、制御部21は、カレントポインタ設定テーブル23aを更新する。たとえば、書換え処理などによりプリビアス指定のデータオブジェクトのデータ長が変更される場合、プリビアス指定のデータオブジェクトに続く各データオブジェクトの先頭アドレスも変更される。このような場合、制御部21は、各データオブジェクトの変更された先頭アドレスを判別して、カレントポインタ設定テーブル23aを更新する。
【0088】
上記のようなプリビアス指定のリードコマンド又はライトコマンドに対する処理では、上記カンレトポインタ設定テーブルで示されるカレント状態のデータオブジェクトを基準とする直前のデータオブジェクトを順に読出しあるいは書込みすることができる。たとえば、プリビアス指定のコマンドが連続的に与えられた場合、ICカードは、上記カンレトポインタ設定テーブルにより、カンレト状態のデータオブジェクトを基準とする前のデータオブジェクトに順にアクセスする処理を効率よく実行することができる。
【符号の説明】
【0089】
B…本体、M…モジュール、C…ICチップ、1…ICカード、2…ICカード処理装置、11…端末装置、12…ディスプレイ、13…キーボード、14…テンキー、15…カードリーダライタ、21…制御部、22…データメモリ、23…RAM、23a…カレントポインタ設定テーブル、24…ROM、25…通信部。
【特許請求の範囲】
【請求項1】
外部装置との通信を行う通信インターフェースと、
複数のデータオブジェクトを有するレコードファイルを記憶するデータメモリと、
前記データメモリに記憶されているアクセス対象のレコードファイルにおける各データオブジェクトの管理情報を記憶する管理テーブルと、
外部装置から指定のデータオブジェクトへのアクセスを要求するコマンドを受信した場合、前記管理テーブルに記憶されている管理情報に基づいて当該コマンドで指定されたデータオブジェクトにアクセスするアクセス制御部と、
を有することを特徴とする携帯可能電子装置。
【請求項2】
さらに、アクセス対象のレコードファイルが選択された場合、当該レコードファイルにおける各データオブジェクトの管理情報を記憶する管理テーブルを生成するテーブル生成部を有する、
ことを特徴とする前記請求項1に記載の携帯可能電子装置。
【請求項3】
さらに、外部装置から受信したコマンドに対応する処理内容に応じて管理テーブルの記憶内容を更新するテーブル更新部を有する、
ことを特徴とする前記請求項1又は2の何れかに記載の携帯可能電子装置。
【請求項4】
前記管理テーブルは、カレント状態のデータオブジェクトを示す情報を記憶し、
前記アクセス制御部は、前記通信インターフェースによりカレント状態のデータオブジェクトを指定するコマンドを受信した場合、前記管理テーブルからカレント状態となっているデータオブジェクトを特定し、カレント状態であると特定したデータオブジェクトの管理情報に基づいてデータオブジェクトにアクセスする、
ことを特徴とする前記請求項1に記載の携帯可能電子装置。
【請求項5】
前記管理テーブルは、カレント状態となっているデータオブジェクトを示す情報を記憶し、
前記アクセス制御部は、前記通信インターフェースによりカレント状態となっているデータオブジェクトの次のデータオブジェクトを指定するコマンドを受信した場合、前記管理テーブルからカレント状態となっているデータオブジェクトを特定し、カレント状態となっているデータオブジェクトの次のデータオブジェクトの管理情報に基づいてデータオブジェクトにアクセスする、
ことを特徴とする前記請求項1に記載の携帯可能電子装置。
【請求項6】
さらに、前記管理テーブルにおいてカレント状態となっているデータオブジェクトを示す情報を前記受信したコマンドで指定された次のデータオブジェクトがカレント状態であることを示す情報に更新するテーブル更新部を有する、
ことを特徴とする前記請求項5に記載の携帯可能電子装置。
【請求項7】
前記管理テーブルは、カレント状態となっているデータオブジェクトを示す情報を記憶し、
前記アクセス制御部は、前記通信インターフェースによりカレント状態となっているデータオブジェクトの直前のデータオブジェクトを指定するコマンドを受信した場合、前記管理テーブルからカレント状態となっているデータオブジェクトを特定し、カレント状態となっているデータオブジェクトの直前のデータオブジェクトの管理情報に基づいてデータオブジェクトにアクセスする、
ことを特徴とする前記請求項1に記載の携帯可能電子装置。
【請求項8】
さらに、前記管理テーブルにおいてカレント状態となっているデータオブジェクトを示す情報を前記受信したコマンドで指定された直前のデータオブジェクトがカレント状態であることを示す情報に更新するテーブル更新部を有する、
ことを特徴とする前記請求項7に記載の携帯可能電子装置。
【請求項9】
複数のデータオブジェクトを有するレコードファイルをデータメモリに記憶しておき、
アクセス対象となるレコードファイルにおける複数のデータオブジェクトに対する管理情報をテーブルに記憶し、
外部装置から特定のデータオブジェクトを指定してアクセスを要求するコマンドが与えられた場合、前記テーブルに記憶されている各データオブジェクトの管理情報に基づいて当該コマンドで指定されたデータオブジェクトへのアクセスを制御する、
ことを特徴とする携帯可能電子装置におけるアクセス制御方法。
【請求項10】
さらに、アクセス対象のレコードファイルが選択された場合、選択されたレコードファイルにおける各データオブジェクトの管理情報を記憶するテーブルを生成する、
ことを特徴とする前記請求項9に記載の携帯可能電子装置におけるアクセス制御方法。
【請求項11】
前記テーブルには、カレント状態となっているデータオブジェクトを示す情報を記憶し、
前記アクセス制御では、カレント状態のデータオブジェクトを指定するコマンドを受信した場合、前記テーブルからカレント状態となっているデータオブジェクトを特定し、カレント状態であると特定したデータオブジェクトの管理情報に基づいてデータオブジェクトにアクセスする、
ことを特徴とする前記請求項9に記載の携帯可能電子装置におけるアクセス制御方法。
【請求項12】
前記テーブルには、カレント状態となっているデータオブジェクトを示す情報を記憶し、
前記アクセス制御では、カレント状態となっているデータオブジェクトの次のデータオブジェクトを指定するコマンドが与えられた場合、前記テーブルからカレント状態となっているデータオブジェクトを特定し、カレント状態となっているデータオブジェクトの次のデータオブジェクトの管理情報に基づいてデータオブジェクトにアクセスする、
ことを特徴とする前記請求項9に記載の携帯可能電子装置におけるアクセス制御方法。
【請求項13】
前記テーブルには、カレント状態となっているデータオブジェクトを示す情報を記憶し、
前記アクセス制御は、カレント状態となっているデータオブジェクトの直前のデータオブジェクトを指定するコマンドを受信した場合、前記テーブルからカレント状態となっているデータオブジェクトを特定し、カレント状態となっているデータオブジェクトの直前のデータオブジェクトの管理情報に基づいてデータオブジェクトにアクセスする、
ことを特徴とする前記請求項9に記載の携帯可能電子装置におけるアクセス制御方法。
【請求項1】
外部装置との通信を行う通信インターフェースと、
複数のデータオブジェクトを有するレコードファイルを記憶するデータメモリと、
前記データメモリに記憶されているアクセス対象のレコードファイルにおける各データオブジェクトの管理情報を記憶する管理テーブルと、
外部装置から指定のデータオブジェクトへのアクセスを要求するコマンドを受信した場合、前記管理テーブルに記憶されている管理情報に基づいて当該コマンドで指定されたデータオブジェクトにアクセスするアクセス制御部と、
を有することを特徴とする携帯可能電子装置。
【請求項2】
さらに、アクセス対象のレコードファイルが選択された場合、当該レコードファイルにおける各データオブジェクトの管理情報を記憶する管理テーブルを生成するテーブル生成部を有する、
ことを特徴とする前記請求項1に記載の携帯可能電子装置。
【請求項3】
さらに、外部装置から受信したコマンドに対応する処理内容に応じて管理テーブルの記憶内容を更新するテーブル更新部を有する、
ことを特徴とする前記請求項1又は2の何れかに記載の携帯可能電子装置。
【請求項4】
前記管理テーブルは、カレント状態のデータオブジェクトを示す情報を記憶し、
前記アクセス制御部は、前記通信インターフェースによりカレント状態のデータオブジェクトを指定するコマンドを受信した場合、前記管理テーブルからカレント状態となっているデータオブジェクトを特定し、カレント状態であると特定したデータオブジェクトの管理情報に基づいてデータオブジェクトにアクセスする、
ことを特徴とする前記請求項1に記載の携帯可能電子装置。
【請求項5】
前記管理テーブルは、カレント状態となっているデータオブジェクトを示す情報を記憶し、
前記アクセス制御部は、前記通信インターフェースによりカレント状態となっているデータオブジェクトの次のデータオブジェクトを指定するコマンドを受信した場合、前記管理テーブルからカレント状態となっているデータオブジェクトを特定し、カレント状態となっているデータオブジェクトの次のデータオブジェクトの管理情報に基づいてデータオブジェクトにアクセスする、
ことを特徴とする前記請求項1に記載の携帯可能電子装置。
【請求項6】
さらに、前記管理テーブルにおいてカレント状態となっているデータオブジェクトを示す情報を前記受信したコマンドで指定された次のデータオブジェクトがカレント状態であることを示す情報に更新するテーブル更新部を有する、
ことを特徴とする前記請求項5に記載の携帯可能電子装置。
【請求項7】
前記管理テーブルは、カレント状態となっているデータオブジェクトを示す情報を記憶し、
前記アクセス制御部は、前記通信インターフェースによりカレント状態となっているデータオブジェクトの直前のデータオブジェクトを指定するコマンドを受信した場合、前記管理テーブルからカレント状態となっているデータオブジェクトを特定し、カレント状態となっているデータオブジェクトの直前のデータオブジェクトの管理情報に基づいてデータオブジェクトにアクセスする、
ことを特徴とする前記請求項1に記載の携帯可能電子装置。
【請求項8】
さらに、前記管理テーブルにおいてカレント状態となっているデータオブジェクトを示す情報を前記受信したコマンドで指定された直前のデータオブジェクトがカレント状態であることを示す情報に更新するテーブル更新部を有する、
ことを特徴とする前記請求項7に記載の携帯可能電子装置。
【請求項9】
複数のデータオブジェクトを有するレコードファイルをデータメモリに記憶しておき、
アクセス対象となるレコードファイルにおける複数のデータオブジェクトに対する管理情報をテーブルに記憶し、
外部装置から特定のデータオブジェクトを指定してアクセスを要求するコマンドが与えられた場合、前記テーブルに記憶されている各データオブジェクトの管理情報に基づいて当該コマンドで指定されたデータオブジェクトへのアクセスを制御する、
ことを特徴とする携帯可能電子装置におけるアクセス制御方法。
【請求項10】
さらに、アクセス対象のレコードファイルが選択された場合、選択されたレコードファイルにおける各データオブジェクトの管理情報を記憶するテーブルを生成する、
ことを特徴とする前記請求項9に記載の携帯可能電子装置におけるアクセス制御方法。
【請求項11】
前記テーブルには、カレント状態となっているデータオブジェクトを示す情報を記憶し、
前記アクセス制御では、カレント状態のデータオブジェクトを指定するコマンドを受信した場合、前記テーブルからカレント状態となっているデータオブジェクトを特定し、カレント状態であると特定したデータオブジェクトの管理情報に基づいてデータオブジェクトにアクセスする、
ことを特徴とする前記請求項9に記載の携帯可能電子装置におけるアクセス制御方法。
【請求項12】
前記テーブルには、カレント状態となっているデータオブジェクトを示す情報を記憶し、
前記アクセス制御では、カレント状態となっているデータオブジェクトの次のデータオブジェクトを指定するコマンドが与えられた場合、前記テーブルからカレント状態となっているデータオブジェクトを特定し、カレント状態となっているデータオブジェクトの次のデータオブジェクトの管理情報に基づいてデータオブジェクトにアクセスする、
ことを特徴とする前記請求項9に記載の携帯可能電子装置におけるアクセス制御方法。
【請求項13】
前記テーブルには、カレント状態となっているデータオブジェクトを示す情報を記憶し、
前記アクセス制御は、カレント状態となっているデータオブジェクトの直前のデータオブジェクトを指定するコマンドを受信した場合、前記テーブルからカレント状態となっているデータオブジェクトを特定し、カレント状態となっているデータオブジェクトの直前のデータオブジェクトの管理情報に基づいてデータオブジェクトにアクセスする、
ことを特徴とする前記請求項9に記載の携帯可能電子装置におけるアクセス制御方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【公開番号】特開2010−211516(P2010−211516A)
【公開日】平成22年9月24日(2010.9.24)
【国際特許分類】
【出願番号】特願2009−56927(P2009−56927)
【出願日】平成21年3月10日(2009.3.10)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.EEPROM
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成22年9月24日(2010.9.24)
【国際特許分類】
【出願日】平成21年3月10日(2009.3.10)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.EEPROM
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]