説明

携帯可能電子装置、及び携帯可能電子装置の制御方法

【課題】より効率的にコマンドに応じた処理を行うことができる携帯可能電子装置、及び携帯可能電子装置の制御方法を提供する。
【解決手段】携帯可能電子装置(2)は、TLVデータオブジェクトの少なくともデータ種別とデータ本体とを離間した記憶領域にそれぞれ記憶し、前記データ本体が記憶されている位置を示す固定長のアドレス情報を前記データ種別に連結して記憶する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、例えば、外部から受信するコマンドに基づいて種々の処理を実行する携帯可能電子装置、及び携帯可能電子装置の制御方法に関する。
【背景技術】
【0002】
一般的に、携帯可能電子装置として用いられるICカードは、プラスチックなどで形成されたカード状の本体と本体に埋め込まれたICモジュールとを備えている。ICモジュールは、ICチップを有している。ICチップは、電源が無い状態でもデータを保持することができるEEPROM(Electrically Erasable Programmable Read−Only Memory)、フラッシュROMなどの不揮発性メモリ、RAMなどの揮発性メモリ、及び種々の演算を実行するCPUを有する。
【0003】
ICカードは、例えば、国際標準規格ISO/IEC7816に準拠したICカードである。ICカードは、不揮発性メモリ内に、ファイル構造の根幹となるMaster File(MF)を有している。また、ICカードは、MFの下位に設けられ、アプリケーションなどをグループ化するDedicated File(DF)を有する。また、ICカードは、DFまたはMFの下位に設けられ、様々なデータを格納するためのElementary File(EF)を有する。
【0004】
上記のMF、DF及びEFなどのファイルの構成として、データ種別(Tag)と、データの長さ(Length)と、データ値(Value)と、を有するTLV形式のデータ(TLVデータオブジェクト)が国際標準規格ISO/IEC7816に規定されている。
【0005】
TLVデータオブジェクトのTagは、ICカードのCPUにTLVデータオブジェクトを識別させる為の情報である。Lengthは、TLVデータオブジェクトのValueのデータ長を示す情報である。Valueは、TLVデータオブジェクトのデータ本体である。
【0006】
例えば、非特許文献1である国際標準規格ISO/IEC7816−4には、ICカードに対して処理を指示する為のコマンドが規定されている。例えば、国際標準規格ISO/IEC7816−4には、ファイルの中の所望のTLVデータオブジェクトを読み出す為の「GET DATA」コマンドが規定されている。
【先行技術文献】
【非特許文献】
【0007】
【非特許文献1】国際標準規格ISO/IEC7816−4
【発明の概要】
【発明が解決しようとする課題】
【0008】
GET DATAコマンドは、TLVデータオブジェクトを特定する為の情報(指定情報)を有する。ICカードは、GET DATAコマンドを受信する場合、GET DATAコマンドに含まれる指定情報と一致するTagを有するTLVデータオブジェクトをファイル中から検索する。
【0009】
しかし、TLVデータオブジェクトは、所定長ではない為、所望のデータの検索に時間がかかるという問題がある。例えば、ファイル内に複数のTLVデータオブジェクトが連結されて記憶されている場合、ICカードのCPUは、記憶領域の先頭に記憶されるTagと指定情報とを照合する。
【0010】
記憶領域の先頭に記憶されるTagと指定情報とが一致しない場合、CPUは、Tagの後ろのLengthが示す値分だけデータポインタ(読み取り位置)を移動させる。CPUは、データポインタの移動先に記憶されるTagと指定情報とを照合する。CPUは、指定情報と一致するTagを見つけるまで、この処理を繰り返し行う必要がある。この為、所望のTLVデータオブジェクトの検索に時間がかかるという問題がある。
【0011】
そこで、本発明の目的は、より効率的にコマンドに応じた処理を行うことができる携帯可能電子装置、及び携帯可能電子装置の制御方法を提供することにある。
【課題を解決するための手段】
【0012】
本発明の一実施形態としての携帯可能電子装置は、外部機器から入力されるコマンドに応じて処理を行い、TLVデータオブジェクトを複数記憶する携帯可能電子装置であって、TLVデータオブジェクトの少なくともデータ種別とデータ本体とを離間した記憶領域にそれぞれ記憶し、前記データ本体が記憶されている位置を示す固定長のアドレス情報を前記データ種別に連結して記憶する記憶部を具備する。
【0013】
また、本発明の一実施形態としての携帯可能電子装置の制御方法は、外部機器から入力されるコマンドに応じて処理を行い、TLVデータオブジェクトを複数記憶する携帯可能電子装置の制御方法であって、TLVデータオブジェクトの少なくともデータ種別とデータ本体とを離間した記憶領域にそれぞれ記憶し、前記データ本体が記憶されている位置を示す固定長のアドレス情報を前記データ種別に連結して記憶する。
【発明の効果】
【0014】
本発明によれば、より効率的にコマンドに応じた処理を行うことができる携帯可能電子装置、及び携帯可能電子装置の制御方法を提供することができる。
【図面の簡単な説明】
【0015】
【図1】図1は、本発明の一実施形態に係る携帯可能電子装置の処理システムの構成の例について説明するためのブロック図である。
【図2】図2は、図1に示すICカードの構成例について説明するためのブロック図である。
【図3】図3は、図2に示すICカードにおいて行われる処理の例について説明する為の説明図である。
【図4】図4は、図2に示すICカードにおいて行われる読み出し処理の例について説明する為のフローチャートである。
【図5】図5は、図2に示すICカードにおいて行われる処理の他の例について説明する為の説明図である。
【図6】図6は、図2に示すICカードにおいて行われる処理の他の例について説明する為の説明図である。
【図7】図7は、図2に示すICカードにおいて行われる処理の他の例について説明する為の説明図である。
【図8】図8は、図2に示すICカードにおいて行われるデータの更新処理の例について説明する為の説明図である。
【発明を実施するための形態】
【0016】
以下、図面を参照しながら、本発明の一実施形態に係る携帯可能電子装置、及び携帯可能電子装置の制御方法について詳細に説明する。
【0017】
図1は、本実施形態に係るICカード2と通信を行うICカード処理装置1の構成例について説明するためのブロック図である。
図1に示すようにICカード処理装置1は、本体11、ディスプレイ12、キーボード13、及びカードリーダライタ14などを有している。
【0018】
本体11は、CPU、種々のメモリ、及び各種インターフェースなどを備える。本体11は、ICカード処理装置1全体の動作を制御する。
【0019】
ディスプレイ12は、本体11の制御により種々の情報を表示する。キーボード13は、ICカード処理装置1の操作者による操作を操作信号として受け取る。
【0020】
カードリーダライタ14は、ICカード2と通信を行うためのインターフェース装置である。カードリーダライタ14は、接触通信、または非接触通信によりICカード2と通信を行う。
【0021】
接触通信を行うカードリーダライタ14は、ICカード2が有する接触端子と電気的に接続する為の接続部を備える。また、非接触通信を行うカードリーダライタ14は、ICカード2が有するアンテナと磁気的に接続する為のアンテナを備える。カードリーダライタ14は、ICカード2に対して、電源供給、クロック供給、リセット制御、及びデータの送受信を行う。
【0022】
本体11は、カードリーダライタ14によりICカード2に対して種々のコマンドを入力する。ICカード2は、例えば、カードリーダライタ14からデータの書き込みコマンドを受信した場合、受信したデータを内部の不揮発性メモリに書き込む処理を行う。
【0023】
また、本体11は、ICカード2に読み取りコマンドを送信することにより、ICカード2からデータを読み出す。本体11は、ICカード2から受信したデータに基づいて種々の処理を行う。本体11は、例えば、ICカード2の不揮発性メモリに記憶されているファイルのTLVデータオブジェクトを読み出す為のGET DATAコマンドをICカード2に送信する。
【0024】
図2は、図1に示す1ICカード2の構成例について説明するためのブロック図である。
図2に示すように、ICカード2は、カード状の本体21と、本体21内に内蔵されたICモジュール22とを備えている。ICモジュール22は、1つ又は複数のICチップ23と、通信部24とを備える。ICチップ23と通信部24とは、互いに接続された状態でICモジュール22に形成されている。
【0025】
ICチップ23は、データバス20、通信部24、CPU25、ROM26、RAM27、及び不揮発性メモリ28などを備える。通信部24、CPU25、ROM26、RAM27、及び不揮発性メモリ28は、データバス20を介して互いに接続されている。
【0026】
ICカード2は、ICカード処理装置1などの上位機器から電力の供給を受けた場合、動作可能な状態になる。ICカード2は、接触通信、または非接触通信によりICカード処理装置1と通信を行う。
【0027】
通信部24は、ICカード処理装置1のカードリーダライタ14との通信を行うためのインターフェースである。
通信部24は、例えば、ICカード処理装置1のカードリーダライタ14と接触して信号の送受信を行うコンタクト部を備える。この場合、ICカード2は、接触式のICカードとして機能する。
また、通信部24は、例えば、ICカード処理装置1のカードリーダライタ14と無線通信を行うアンテナを備える。この場合、ICカード2は、非接触式のICカードとして機能する。
【0028】
例えば、ICカード2が接触式通信によりICカード処理装置1と通信を行う場合、ICカード2は、コンタクト部を介してICカード処理装置1からの動作電源及び動作クロックの供給を受けとる。これにより、ICカード2は起動する。
【0029】
また、ICカード2が非接触式の通信方式によりICカード処理装置1と通信を行う場合、ICカード2は、アンテナなどを介してICカード処理装置1からの電波を受信し、受信した電波に基づいて電力を生成する。これにより、ICカード2は起動する。
【0030】
CPU25は、ICカード2全体の制御を司る制御部として機能する。CPU25は、ROM26あるいは不揮発性メモリ28に記憶されている制御プログラム及び制御データに基づいて種々の処理を行う。
【0031】
ROM26は、予め制御用のプログラム及び制御データなどを記憶する不揮発性のメモリである。ROM26は、製造段階で制御プログラム及び制御データなどを記憶した状態でICカード2内に組み込まれる。即ち、ROM26に記憶される制御プログラム及び制御データは、予めICカード2の仕様に応じて組み込まれる。
【0032】
RAM27は、ワーキングメモリとして機能する揮発性のメモリである。RAM27は、CPU25の処理中のデータなどを一時的に格納する。例えば、RAM27は、通信部24を介してICカード処理装置1から受信したデータを一時的に格納する。また、RAM27は、CPU25が実行するプログラムを一時的に格納する。
【0033】
不揮発性メモリ28は、例えば、EEPROMあるいはフラッシュROMなどのデータの書き込み及び書換えが可能な不揮発性のメモリにより構成される。不揮発性メモリ28は、ICカード2の運用用途に応じて制御プログラム、アプリケーション、及び種々のデータを格納する。CPU25は、不揮発性メモリ28、または、ROM26に記憶されているプログラムを実行することにより、種々の処理を実現することができる。
【0034】
たとえば、不揮発性メモリ28は、ICカード2の発行時に創成されるMF、DF、及びEFのメモリ構造を有する。DF及びEFには、プログラムファイル、またはデータファイルなどが記憶される。
【0035】
図2に示す不揮発性メモリ28の各ファイルは、第1の記憶領域28aと、第2の記憶領域28bとを有する。さらに、各ファイルは、ファイル内のデータの構造を示す属性情報を有する。
【0036】
第1の記憶領域28aは、TLVデータオブジェクトの少なくともTag部分と、Valueが記憶されている記憶領域のアドレス情報(ポインタ)を格納する。また、第2の記憶領域28bは、TLVデータオブジェクトの少なくともValueのデータ(データ値)を格納する。
【0037】
図3は、図2に示すICカード2の処理について説明する為の説明図である。図3は、不揮発性メモリ28が記憶する情報を示す。
【0038】
TLVデータオブジェクトを書き込むコマンドを受信する場合、ICカード2のCPU25は、Valueのデータ値を第2の記憶領域28bに書き込む。
【0039】
また、CPU25は、TagとLengthとを第1の記憶領域28aに書き込む。さらに、CPU25は、Valueのデータ値を書き込んだ位置を特定する為のアドレス情報(ポインタ)を第1の記憶領域28aに書き込んだLengthの後ろに書き込む。
【0040】
CPU25は、第2の記憶領域28bに書き込んだValueのデータ値の先頭アドレスをアドレス情報として書き込む。
【0041】
なお、CPU25は、アドレス情報を書き込む位置から、第2の記憶領域28bに書き込んだValueのデータ値の位置までのオフセット値をアドレス情報として書き込む構成であってもよい。さらに、CPU25は、ファイルの先頭から、第2の記憶領域28bに書き込んだValueのデータ値の位置までのオフセット値をアドレス情報として書き込む構成であってもよい。
【0042】
なお、ここでは、第1の記憶領域28aに記憶されるTag、Length、及びアドレス情報(ポインタ)のデータ長(バイト数)は、それぞれ所定の長さであると仮定する。CPU25は、Tag、Length、及びポインタの長さを示す情報(バイト数)を属性情報として不揮発性メモリ28のファイル内に記憶する。
【0043】
図3に示す情報を不揮発性メモリ28に格納するICカード2のCPU25は、ICカード処理装置1からGET DATAコマンドを受信する場合、GET DATAコマンドにより指定されているTLVデータオブジェクトを検索する。例えば、GET DATAコマンドの指定情報が「A5」である場合、CPU25は、第1の記憶領域28aから「A5」と一致する値のTagを検索する。
【0044】
GET DATAコマンドを受信する場合、CPU25は、ファイルの先頭から所定長のデータを読み出す。即ち、CPU25は、ファイルの先頭アドレスから所定長の長さで格納されているTag1を読み出す。
【0045】
CPU25は、読み出したTag1の値と指定情報の値とを照合する。図3に示すように、Tag1の値は「88」、であり、指定情報の値は「A5」である為、CPU25は、Tag1の値と指定情報の値とが一致しないと判断する。この場合、CPU25は、データポインタ(読み取り位置)を所定バイト数移動させる。即ち、CPU25は、属性情報に示されているLength1及びポインタ1のバイト数だけデータポインタを進める。これにより、CPU25は、Tag1の次に格納されているTag2の格納位置を容易に特定することが出来る。
【0046】
CPU25は、データポインタが示す位置から所定長のデータを読み出す。即ち、CPU25は、データポインタから所定長の長さで格納されているTag2を読み出す。CPU25は、読み出したTag2の値と指定情報の値とを照合する。図3に示すように、Tag2の値は「50」、であり、指定情報の値は「A5」である為、CPU25は、Tag2の値と指定情報の値とが一致しないと判断する。この場合、CPU25は、データポインタ(読み取り位置)をLength2及びポインタ2のバイト数だけデータポインタを進める。
【0047】
CPU25は、データポインタが示す位置から所定長のデータを読み出す。即ち、CPU25は、データポインタから所定長の長さで格納されているTag3を読み出す。CPU25は、読み出したTag3の値と指定情報の値とを照合する。図3に示すように、Tag3の値は「A5」、であり、指定情報の値は「A5」である為、CPU25は、Tag3の値と指定情報の値とが一致すると判断する。
【0048】
この場合、CPU25は、Tag3の後ろに格納されているLength3の値を読み出す。また、CPU25は、Length3の後ろに格納されているポインタ3の値を読み出す。CPU25は、ポインタ3の値に基づいてデータポインタを移動させる。CPU25は、データポインタが示す位置からLength3が示すバイト数のデータ(Value3)を読み出す。
【0049】
CPU25は、読み出したValueの値に基づいてレスポンスデータを作成する。CPU25は、通信部24を介してカードリーダライタ14に作成したレスポンスデータを送信する。
【0050】
図4は、図2に示すICカード2におけるTLVデータオブジェクトの読み出し処理について説明する為のフローチャートである。
【0051】
ICカード2のCPU25は、外部機器からGET DATAコマンドを受信する場合、ファイルの先頭から所定の長さで格納されているTagを読み出す(ステップS11)。
【0052】
CPU25は、読み出したTagの値と、GET DATAコマンドが有する指定情報の値とを照合し(ステップS12)、Tagの値と指定情報の値とが一致するか否か判定する(ステップS13)。
【0053】
Tagの値と指定情報の値とが一致しない場合(ステップS13、NO)、CPU25は、読み出し位置を所定バイト進め(ステップS14)、ステップS11にループする。なお、CPU25は、ファイルの属性情報が示すLengthのバイト数とポインタのバイト数との和だけデータポインタを移動させる。CPU25は、指定情報と一致するTagが見つかるまで、上記のステップS11乃至S14に示す処理を繰り返し行う。
【0054】
また、Tagの値と指定情報の値とが一致する場合(ステップS13、YES)、CPU25は、Tagの直後に格納されているLengthを読み出す(ステップS15)。さらに、CPU25は、Lengthの直後に格納されているポインタを読み出す(ステップS16)。
【0055】
CPU25は、ポインタの値に基づいてデータポインタを移動させる。CPU25は、データポインタが示す位置からValueを読み出す(ステップS17)。即ち、CPU25は、データポインタが示す位置から、読み出したLengthが示すバイト数のデータを読み出す。
【0056】
CPU25は、読み出したValueの値に基づいてレスポンスデータを作成する。CPU25は、通信部24を介してカードリーダライタ14に作成したレスポンスデータを送信する(ステップS18)。
【0057】
上記した実施形態に係るICカード2のCPU25は、Tag、Length、及びValueが格納されている位置を示すアドレス情報を第1の記憶領域28aに格納する。また、CPU25は、Valueの実データを第2の記憶領域28bに格納する。これにより、第1の記憶領域28aに格納されるTag、Length、及びアドレス情報の長さをそれぞれ所定の長さにすることができる。
【0058】
この為、CPU25は、第1の記憶領域28aにおいてTagが格納される位置を自動的に認識することができる。即ち、CPU25は、コマンドで指定される指定情報に基づいてTagを検索する場合、Lengthの値を読み出すことなく、Tagの格納位置を特定することが出来る。
【0059】
これにより、CPU25は、TLVデータオブジェクトの検索に要する時間を短縮することが出来る。この結果、より効率的にコマンドに応じた処理を行うことができる携帯可能電子装置、及び携帯可能電子装置の制御方法を提供することができる。
【0060】
また、TLVデータオブジェクトのValueの中に複数のTLVデータオブジェクトが含まれる場合がある。この場合、不揮発性メモリ28は、図5に示すような情報を記憶する。
図5は、図2に示すICカード2の処理の他の例について説明する為の説明図である。
【0061】
TLVデータオブジェクトのValueの中に複数のTLVデータオブジェクト(下位のTLVデータオブジェクト)を含むTLVデータオブジェクト(上位のTLVデータオブジェクト)を書き込むコマンドを受信する場合、ICカード2のCPU25は、図5に示すようなデータを書き込む。
【0062】
即ち、CPU25は、下位のTLVデータオブジェクトのValueのデータ値をそれぞれ第2の記憶領域28bに書き込む。
【0063】
また、CPU25は、上位のTLVデータオブジェクトのTagとLengthとを第1の記憶領域28aに書き込む。
【0064】
さらに、CPU25は、下位のTLVデータオブジェクトのValueを、Valueのデータ値を書き込んだ位置を特定する為のアドレス情報に置き換える。CPU25は、Valueを置き換えた下位のTLVデータオブジェクトを上位のTLVデータオブジェクトのValueの位置に書き込む。
【0065】
なお、ここでは、第1の記憶領域28aに記憶されるTLVデータオブジェクトのTag、Length、及びアドレス情報のデータ長は、それぞれ所定長であると仮定する。Tag、Length、及びポインタのバイト数は、属性情報として不揮発性メモリ28のファイル内に記憶されている。また、本ファイルが上位のTLVデータオブジェクトのValue部に下位のTLVデータオブジェクトを有することを示す情報などが属性情報として不揮発性メモリ28のファイル内に記憶される。
【0066】
CPU25は、ファイルを選択する場合、そのファイルが格納する属性情報を確認する。これにより、CPU25は、当該ファイルが上位のTLVデータオブジェクトのValue部に下位のTLVデータオブジェクトを有するファイルであることを認識する。
【0067】
また、CPU25は、属性情報を確認することにより、Tag、Length、及びアドレス情報の長さを予め認識する。即ち、CPU25は、下位のTLVデータオブジェクトのデータ長を予め認識する。この為、CPU25は、上位のTLVデータオブジェクトのLengthを確認することにより、上位のTLVデータオブジェクト内に含まれている下位のTLVデータオブジェクトの数を認識する事ができる。
【0068】
図5に示す情報を不揮発性メモリ28に格納するICカード2のCPU25は、ICカード処理装置1から指定情報が「A5」であるGET DATAコマンドを受信する場合、Tagの値が「A5」であるTLVデータオブジェクトを検索する。
【0069】
即ち、CPU25は、ファイルの先頭からTag1を読み出す。CPU25は、読み出したTag1の値と指定情報の値とを照合する。図5に示すように、Tag1の値は「70」、であり、指定情報の値は「A5」である為、CPU25は、Tag1の値と指定情報の値とが一致しないと判断する。
【0070】
この場合、CPU25は、データポインタを次のTag2まで進める。即ち、CPU25は、予め認識したLengthの長さに基づいて、Length1を読み飛ばす。
【0071】
CPU25は、Tag2を読み出す。CPU25は、読み出したTag2の値と指定情報の値とを照合する。図5に示すように、Tag2の値は「88」、であり、指定情報の値は「A5」である為、CPU25は、Tag2の値と指定情報の値とが一致しないと判断する。
【0072】
この場合、CPU25は、データポインタを次のTag3まで進める。即ち、CPU25は、予め認識したLength及びアドレス情報の長さに基づいて、Length2及びポインタ2を読み飛ばす。
【0073】
CPU25は、Tag3を読み出す。CPU25は、読み出したTag3の値と指定情報の値とを照合する。図5に示すように、Tag3の値は「50」、であり、指定情報の値は「A5」である為、CPU25は、Tag3の値と指定情報の値とが一致しないと判断する。
【0074】
この場合、CPU25は、データポインタを次のTag4まで進める。即ち、CPU25は、予め認識したLength及びアドレス情報の長さに基づいて、Length3及びポインタ3を読み飛ばす。
【0075】
CPU25は、Tag4を読み出す。CPU25は、読み出したTag4の値と指定情報の値とを照合する。図5に示すように、Tag4の値は「A5」、であり、指定情報の値は「A5」である為、CPU25は、Tag4の値と指定情報の値とが一致すると判断する。
【0076】
この場合、CPU25は、Tag4の後ろに格納されているLength4の値を読み出す。また、CPU25は、Length4の後ろに格納されているポインタ4の値を読み出す。CPU25は、ポインタ4の値に基づいてデータポインタを移動させる。CPU25は、データポインタが示す位置からLength4が示すバイト数のデータ(Value4)を読み出す。
【0077】
CPU25は、読み出したValueの値に基づいてレスポンスデータを作成する。CPU25は、通信部24を介してカードリーダライタ14に作成したレスポンスデータを送信する。
【0078】
上記したように、本発明は、上位のTLVデータオブジェクトのValueの中に複数の下位のTLVデータオブジェクトを含む場合であっても、実施することが出来る。また、CPU25は、TLVデータオブジェクトの検索に要する時間を短縮することが出来る。この結果、より効率的にコマンドに応じた処理を行うことができる携帯可能電子装置、及び携帯可能電子装置の制御方法を提供することができる。
【0079】
また、ファイル中に格納されるTLVデータオブジェクトのLengthのデータ長が一定でない場合がある。このような場合、不揮発性メモリ28は、図6に示すような情報を記憶する。
図6は、図2に示すICカード2の処理の他の例について説明する為の説明図である。
【0080】
ファイル内に書き込む複数のTLVデータオブジェクトのLengthの長さが一定でない場合、ICカード2のCPU25は、図6に示すようにデータを書き込む。
【0081】
TLVデータオブジェクトの書込みコマンドを受信する場合、CPU25は、TLVデータオブジェクトのLength及びValueをそれぞれ第2の記憶領域28bに書き込む。この場合、CPU25は、Lengthの直後にValueを書き込む。
【0082】
また、CPU25は、TLVデータオブジェクトのTagを第1の記憶領域28aに書き込む。さらに、CPU25は、TLVデータオブジェクトのLength及びValueを書き込んだ位置を特定する為のアドレス情報を第1の記憶領域28aのTagの直後に書き込む。
【0083】
なお、ここでは、第1の記憶領域28aに記憶されるTLVデータオブジェクトのTag、及びアドレス情報のデータ長は、それぞれ所定長であると仮定する。Tag、及びポインタのバイト数は、属性情報として不揮発性メモリ28のファイル内に記憶されている。また、本ファイルが不定長のLengthを有するTLVデータオブジェクトを記憶することを示す情報などが属性情報として不揮発性メモリ28のファイル内に記憶される。
【0084】
CPU25は、ファイルを選択する場合、そのファイルが格納する属性情報を確認する。これにより、CPU25は、当該ファイルに不定長のLengthを有するTLVデータオブジェクトが記憶されていることを認識する。また、CPU25は、属性情報を確認することにより、Tag、及びアドレス情報の長さを予め認識する。
【0085】
図6に示す情報を不揮発性メモリ28に格納するICカード2のCPU25は、ICカード処理装置1から指定情報が「A5」であるGET DATAコマンドを受信する場合、Tagの値が「A5」であるTLVデータオブジェクトを検索する。
【0086】
CPU25は、Tag1を読み出す。CPU25は、読み出したTag1の値と指定情報の値とを照合する。図6に示すように、Tag1の値は「88」、であり、指定情報の値は「A5」である。この為、CPU25は、Tag1の値と指定情報の値とが一致しないと判断する。
【0087】
この場合、CPU25は、データポインタを次のTag2まで進める。即ち、CPU25は、予め認識したアドレス情報の長さに基づいて、Tag1の直後のポインタ1を読み飛ばす。
【0088】
CPU25は、Tag2を読み出す。CPU25は、読み出したTag2の値と指定情報の値とを照合する。図6に示すように、Tag2の値は「50」、であり、指定情報の値は「A5」である。この為、CPU25は、Tag2の値と指定情報の値とが一致しないと判断する。
【0089】
この場合、CPU25は、データポインタを次のTag3まで進める。即ち、CPU25は、予め認識したアドレス情報の長さに基づいて、Tag2の直後のポインタ2を読み飛ばす。
【0090】
CPU25は、Tag3を読み出す。CPU25は、読み出したTag3の値と指定情報の値とを照合する。図6に示すように、Tag3の値は「A5」、であり、指定情報の値は「A5」である。この為、CPU25は、Tag3の値と指定情報の値とが一致すると判断する。
【0091】
この場合、CPU25は、Tag3の後ろに格納されているポインタ3の値を読み出す。CPU25は、ポインタ3の値に基づいてデータポインタを移動させる。CPU25は、データポインタが示す位置からLength3を読み出す。さらに、CPU25は、Length3が示すバイト数のデータ(Value3)を読み出す。
【0092】
CPU25は、読み出したValueの値に基づいてレスポンスデータを作成する。CPU25は、通信部24を介してカードリーダライタ14に作成したレスポンスデータを送信する。
【0093】
上記したように、本発明に係るICカード2のCPU25は、Tag、及びアドレス情報を第1の記憶領域28aに格納する。また、CPU25は、LengthとValueとを第2の記憶領域28bに格納する。これにより、第1の記憶領域28aに格納されるTag、及びアドレス情報の長さをそれぞれ所定の長さにすることができる。
【0094】
この為、CPU25は、第1の記憶領域28aにおいてTagが格納されて位置を自動的に認識することができる。即ち、CPU25は、コマンドで指定される指定情報に基づいてTagを検索する場合、Tagの格納位置を容易に特定することが出来る。
【0095】
これにより、CPU25は、TLVデータオブジェクトの検索に要する時間を短縮することが出来る。この結果、より効率的にコマンドに応じた処理を行うことができる携帯可能電子装置、及び携帯可能電子装置の制御方法を提供することができる。
【0096】
また、ファイル中に格納されるTLVデータオブジェクトのTagのデータ長が一定でない場合がある。このような場合、不揮発性メモリ28は、図7に示すような情報を記憶する。
図7は、図2に示すICカード2の処理の他の例について説明する為の説明図である。
【0097】
ファイル内に書き込む複数のTLVデータオブジェクトのTagの長さが一定でない場合、ICカード2のCPU25は、図7に示すようにデータを書き込む。
【0098】
TLVデータオブジェクトの書込みコマンドを受信する場合、CPU25は、TLVデータオブジェクトのLength及びValueをそれぞれ第2の記憶領域28bに書き込む。この場合、CPU25は、Lengthの直後にValueを書き込む。
【0099】
また、CPU25は、TLVデータオブジェクトのTagを第1の記憶領域28aに書き込む。さらに、CPU25は、TLVデータオブジェクトのLength及びValueを書き込んだ位置を特定する為のアドレス情報を第1の記憶領域28aのTagの直後に書き込む。
【0100】
この場合、CPU25は、第1の記憶領域28aに書き込むTagの長さを、最もデータ長の長いTagに合わせる。例えば、図7に示すように、Tagが「9F 38」であるTLVデータオブジェクトと、Tagが「9F 27」であるTLVデータオブジェクトと、Tagが「A5」であるTLVデータオブジェクトと、を書き込む場合、CPU25は、第1の記憶領域28aに書き込むTagの長さを2バイトとして書き込み処理を行う。
【0101】
さらに、CPU25は、Tagの長さが2バイトであるTLVデータオブジェクトのTag「A5」を「A5 (NULL)」として書き込み処理を行う。即ち、CPU25は、所定長に満たないTagに対して空白(NULL)を付加し、書込み処理を行う。これにより、CPU25は、第1の記憶領域28aに書き込むTagの長さを一定の長さに合わせる。
【0102】
なお、ここでは、第1の記憶領域28aに記憶されるアドレス情報のデータ長は、所定長であると仮定する。CPU25は、Tag、及びポインタの長さを属性情報として不揮発性メモリ28のファイル内に記憶する。
【0103】
CPU25は、ファイルを選択する場合、そのファイルが格納する属性情報を確認する。これにより、CPU25は、当該ファイルにTag、及びアドレス情報の長さを予め認識する。
【0104】
図7に示す情報を不揮発性メモリ28に格納するICカード2のCPU25は、ICカード処理装置1から指定情報が「A5」であるGET DATAコマンドを受信する場合、Tagの値が「A5」であるTLVデータオブジェクトを検索する。
【0105】
CPU25は、Tag1を読み出す。CPU25は、読み出したTag1の値と指定情報の値とを照合する。図7に示すように、Tag1の値は「9F 38」、であり、指定情報の値は「A5」である。この為、CPU25は、Tag1の値と指定情報の値とが一致しないと判断する。
【0106】
この場合、CPU25は、データポインタを次のTag2まで進める。即ち、CPU25は、予め認識したアドレス情報の長さに基づいて、Tag1の直後のポインタ1を読み飛ばす。
【0107】
CPU25は、Tag2を読み出す。CPU25は、読み出したTag2の値と指定情報の値とを照合する。図7に示すように、Tag2の値は「9F 27」、であり、指定情報の値は「A5」である。この為、CPU25は、Tag2の値と指定情報の値とが一致しないと判断する。
【0108】
この場合、CPU25は、データポインタを次のTag3まで進める。即ち、CPU25は、予め認識したアドレス情報の長さに基づいて、Tag2の直後のポインタ2を読み飛ばす。
【0109】
CPU25は、Tag3を読み出す。CPU25は、読み出したTag3の値と指定情報の値とを照合する。図6に示すように、Tag3の値は「A5」、であり、指定情報の値は「A5」である。この為、CPU25は、Tag3の値と指定情報の値とが一致すると判断する。
【0110】
この場合、CPU25は、Tag3の後ろに格納されているポインタ3の値を読み出す。CPU25は、ポインタ3の値に基づいてデータポインタを移動させる。CPU25は、データポインタが示す位置からLength3を読み出す。さらに、CPU25は、Length3が示すバイト数のデータ(Value3)を読み出す。
【0111】
CPU25は、読み出したValueの値に基づいてレスポンスデータを作成する。CPU25は、通信部24を介してカードリーダライタ14に作成したレスポンスデータを送信する。
【0112】
上記したように、本発明に係るICカード2のCPU25は、第1の記憶領域28aに格納するTagの長さを予め最も長いTagに合わせて書込み処理を行う。これにより、第1の記憶領域28aに格納される複数のTLVデータオブジェクトのTagの長さが異なる場合であっても、所定バイト毎にTagを書き込むことができる。
【0113】
この為、CPU25は、第1の記憶領域28aにおいてTagが格納されて位置を自動的に認識することができる。即ち、CPU25は、コマンドで指定される指定情報に基づいてTagを検索する場合、Tagの格納位置を容易に特定することが出来る。
【0114】
これにより、CPU25は、TLVデータオブジェクトの検索に要する時間を短縮することが出来る。この結果、より効率的にコマンドに応じた処理を行うことができる携帯可能電子装置、及び携帯可能電子装置の制御方法を提供することができる。
【0115】
また、従来のTLVデータオブジェクトでは、不揮発性メモリ28のファイルは、1つのTLVデータオブジェクトのValueの直後に、他のTLVデータオブジェクトのTagを記憶している。この為、TLVデータオブジェクトのValueの内容を更新する場合、既に記憶されているValueの長さより長いデータを記憶する事ができないという問題がある。
【0116】
しかし、本実施形態に示すように、Tag及びLengthを格納する記憶領域とValueを記憶する記憶領域とを隔てることにより、Valueをより長いデータに更新することができる。
【0117】
図8は、図2に示すICカードにおいて行われるデータの更新処理の例について説明する為の説明図である。
【0118】
不揮発性メモリ28に格納されているファイルのTLVデータオブジェクトの更新コマンドを受信する場合、ICカード2のCPU25は、まず指定されているTLVデータオブジェクトを特定する。即ち、CPU25は、更新コマンドが有する指定情報と一致するTagを有するTLVデータオブジェクトを不揮発性メモリ28の中から検索する。
【0119】
例えば、更新コマンドが有する指定情報が「50」である場合、CPU25は、第1の記憶領域28aから「50」と一致する値のTagを検索する。この場合、CPU25は、図3の例において説明した処理により、指定情報と一致するTagを検索する。これにより、CPU25は、指定情報と図8に示すTag2とが一致することを特定する。
【0120】
この場合、CPU25は、Tag2の後ろに格納されているLength2の値を読み出す。CPU25は、更新するTLVデータオブジェクトのLengthの値と、Length2の値とを比較する。更新するTLVデータオブジェクトのLengthの値がLength2の値より大きい場合、CPU25は、既に第2の記憶領域28bに記憶されているValue2を削除する。
【0121】
即ち、CPU25は、Length2の直後に格納されているポインタ2の値を読み出す。CPU25は、ポインタ2の値に基づいてデータポインタを移動させる。CPU25は、データポインタが示す位置からLength2が示すバイト数のデータ(Value2)を削除する。
【0122】
CPU25は、第2の記憶領域28bの他のアドレスにデータポインタを移動させる。CPU25は、更新するTLVデータオブジェクトのValue(Value2´)をデータポインタの位置から書き込む。
【0123】
また、CPU25は、第1の記憶領域28aのLength2の値「04」を、更新するTLVデータオブジェクトのLength2´の値「05」に書き換える。さらに、CPU25は、第1の記憶領域28aのポインタ2の値を、Value2´が格納されている位置を示すポインタ2´の値に書き換える。
【0124】
上記したように、本発明に係るICカード2のCPU25は、既に記憶されているValueよりデータ長の長いValueに更新する処理を行う場合、既にValueが記憶されている領域を放棄する。さらに、CPU25は、第2の記憶領域28b内の他の領域に、新たなValueを書き込む。CPU25は、新たに書き込んだValueに応じて、第1の記憶領域28aに格納されているLength、及びポインタの書き換えを行う。
【0125】
これにより、既に記憶されているValueよりデータ長の長いValueに更新する処理を行うことができる。これにより、TLVデータオブジェクトの更新に係る制限を排除することができる。
【0126】
なお、この発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具現化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合わせてもよい。
【符号の説明】
【0127】
1…ICカード処理装置、2…ICカード、11…本体、12…ディスプレイ、13…キーボード、14…カードリーダライタ、20…データバス、21…本体、22…ICモジュール、23…ICチップ、24…通信部、25…CPU、26…ROM、27…RAM、28…不揮発性メモリ、28a…第1の記憶領域、28b…第2の記憶領域。

【特許請求の範囲】
【請求項1】
外部機器から入力されるコマンドに応じて処理を行い、TLVデータオブジェクトを複数記憶する携帯可能電子装置であって、
TLVデータオブジェクトの少なくともデータ種別とデータ本体とを離間した記憶領域にそれぞれ記憶し、前記データ本体が記憶されている位置を示す固定長のアドレス情報を前記データ種別に連結して記憶する記憶部を具備することを特徴とする携帯可能電子装置。
【請求項2】
前記記憶部は、
少なくとも前記TLVデータオブジェクトのデータ種別と前記アドレス情報とを連結して記憶する第1の記憶領域と、
少なくとも前記TLVデータオブジェクトのデータ本体を記憶する第2の記憶領域と、
を具備することを特徴とする請求項1に記載の携帯可能電子装置。
【請求項3】
前記外部機器とデータの送受信を行う送受信部と、
前記送受信部によりTLVデータオブジェクトを読み出すコマンドを受信する場合、コマンドが有する指定情報と一致するデータ種別を前記第1の記憶領域から検索し、検索したデータ種別に連結されているアドレス情報に基づいて前記第2の記憶領域に記憶されているデータ本体を読み出す制御部と、
をさらに具備することを特徴とする請求項2に記載の携帯可能電子装置。
【請求項4】
前記記憶部は、前記第2の記憶領域に記憶されるデータ本体の長さを示すデータ長を前記第1の記憶領域に記憶されているデータ種別に連結して記憶することを特徴とする請求項2に記載の携帯可能電子装置。
【請求項5】
前記記憶部は、前記第2の記憶領域に記憶されるデータ本体の長さを示すデータ長を前記2の記憶領域に記憶されているデータ本体に連結して記憶することを特徴とする請求項2に記載の携帯可能電子装置。
【請求項6】
前記外部機器とデータの送受信を行う送受信部と、
前記送受信部によりTLVデータオブジェクトを更新するコマンドを受信する場合、更新するTLVデータオブジェクトのデータ本体を前記第2の記憶領域に記憶し、前記第2の記憶領域に記憶したデータ本体に基づいて、前記第1の記憶領域に記憶されているデータ種別に連結されているアドレス情報及びデータ長を更新するように制御する制御部と、
をさらに具備することを特徴とする請求項4に記載の携帯可能電子装置。
【請求項7】
前記記憶部は、記憶する複数のTLVデータオブジェクトのデータ種別のうちで最もデータ長の長いデータ種別にデータ長を合わせてデータ種別を第1の記憶領域に記憶することを特徴とする請求項2に記載の携帯可能電子装置。
【請求項8】
さらに、前記各部を備えるICモジュールと、
前記ICモジュールが設置される本体と、
を具備することを特徴する請求項2に記載の携帯可能電子装置。
【請求項9】
外部機器から入力されるコマンドに応じて処理を行い、TLVデータオブジェクトを複数記憶する携帯可能電子装置の制御方法であって、
TLVデータオブジェクトの少なくともデータ種別とデータ本体とを離間した記憶領域にそれぞれ記憶し、前記データ本体が記憶されている位置を示す固定長のアドレス情報を前記データ種別に連結して記憶する、
ことを特徴とする携帯可能電子装置の制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate