(57)【要約】【課題】TLV形式のデータであって同一のTag値を持つデータが複数記憶されている場合でも、外部機器が効率的に所望のデータを取得することができる電子情報記憶媒体等を提供する。【解決手段】電子情報記憶媒体は、それぞれのデータについて記憶された順序を示す記憶順序情報と、記憶された位置を示す位置情報を紐付ける紐付け情報をT(Tag)値毎に記憶し、データを取得する取得コマンドとともに当該取得コマンドで取得するデータのT(Tag)値と、当該データが記憶された順序を示す順序情報を外部機器から受信した場合、当該T(Tag)値の紐付け情報を参照して、当該順序情報に対応する記憶順序情報と紐付く位置情報の示す位置に記憶されているデータを外部機器に送信する。【選択図】図５
2018067187.tif 000002
【特許請求の範囲】
【請求項１】
TLV（Tag-Length-Value）形式のデータであって、同一のT(Tag)値を持つ複数のデータを記憶するデータ記憶手段と、
それぞれの前記データについて前記データ記憶手段に記憶された順序を示す記憶順序情報と、記憶された位置を示す位置情報を紐付ける紐付け情報を前記T(Tag)値毎に記憶する紐付け情報記憶手段と、
前記データ記憶手段に記憶されているデータを取得する取得コマンドとともに当該取得コマンドで取得するデータのT(Tag)値と、当該データが前記データ記憶手段に記憶された順序を示す順序情報を外部機器から受信した場合、当該T(Tag)値の前記紐付け情報を参照して、当該順序情報に対応する前記記憶順序情報と紐付く位置情報の示す位置に記憶されているデータを前記外部機器に送信する送信手段と、
を備えることを特徴とする電子情報記憶媒体。
【請求項２】
請求項１に記載の電子情報記憶媒体であって、
前記送信手段は、前記取得コマンドとともに前記T(Tag)値と、前記順序情報の代わりである第１の所定情報を受信した場合、当該T(Tag)値の前記紐付け情報を参照して、直近に記憶されたデータを前記外部機器に送信することを特徴とする電子情報記憶媒体。
【請求項３】
請求項１又は２に記載の電子情報記憶媒体であって、
前記送信手段は、前記取得コマンドとともに前記T(Tag)値と、前記順序情報の代わりである第２の所定情報を受信した場合、当該T(Tag)値と同一のT(Tag)値を持つ全データを前記外部機器に送信することを特徴とする電子情報記憶媒体。
【請求項４】
請求項１乃至３の何れか一項に記載の電子情報記憶媒体であって、
前記データ記憶手段は、第１の記憶領域と、第２の記憶領域を有し、オブジェクトデータを記憶する際、当該オブジェクトデータのTag値と同じTag値を持つオブジェクトデータを未だ記憶していない場合に前記第１の記憶領域に記憶する一方、当該オブジェクトデータのTag値と同じTag値を持つオブジェクトデータを既に記憶している場合に前記第２の記憶領域に記憶し、
前記送信手段は、前記取得コマンドとともに前記T(Tag)値と、前記順序情報の代わりである第３の所定情報を受信した場合、当該T(Tag)値と同一のT(Tag)値を持つオブジェクトデータであって、前記第１の記憶領域に記憶されているオブジェクトデータを前記外部機器に送信することを特徴とする電子情報記憶媒体。
【請求項５】
TLV（Tag-Length-Value）形式のデータであって、同一のT(Tag)値を持つ複数のデータを記憶するデータ記憶手段と、
それぞれの前記データについて前記データ記憶手段に記憶された順序を示す記憶順序情報と、記憶された位置を示す位置情報を紐付ける紐付け情報を前記T(Tag)値毎に記憶する紐付け情報記憶手段と、
を備える電子情報記憶媒体におけるプロセッサによるデータ送信方法であって、
前記データ記憶手段に記憶されているデータを取得する取得コマンドとともに当該取得コマンドで取得するデータのT(Tag)値と、当該データが前記データ記憶手段に記憶された順序を示す順序情報を外部機器から受信した場合、当該T(Tag)値の前記紐付け情報を参照して、当該順序情報に対応する前記記憶順序情報と紐付く位置情報の示す位置に記憶されているデータを前記外部機器に送信する送信ステップ、
を含むことを特徴とするデータ送信方法。
【請求項６】
TLV（Tag-Length-Value）形式のデータであって、同一のT(Tag)値を持つ複数のデータを記憶するデータ記憶手段と、
それぞれの前記データについて前記データ記憶手段に記憶された順序を示す記憶順序情報と、記憶された位置を示す位置情報を紐付ける紐付け情報を前記T(Tag)値毎に記憶する紐付け情報記憶手段と、
前記データ記憶手段に記憶されているデータを取得する取得コマンドとともに当該取得コマンドで取得するデータのT(Tag)値と、当該データが前記データ記憶手段に記憶された順序を示す順序情報を外部機器から受信した場合、当該T(Tag)値の前記紐付け情報を参照して、当該順序情報に対応する前記記憶順序情報と紐付く位置情報の示す位置に記憶されているデータを前記外部機器に送信する送信手段と、
を備えることを特徴とするＩＣカード。
【請求項７】
TLV（Tag-Length-Value）形式のデータであって、同一のT(Tag)値を持つ複数のデータを記憶するデータ記憶手段と、
それぞれの前記データについて前記データ記憶手段に記憶された順序を示す記憶順序情報と、記憶された位置を示す位置情報を紐付ける紐付け情報を前記T(Tag)値毎に記憶する紐付け情報記憶手段と、
を備える電子情報記憶媒体におけるプロセッサを、
前記データ記憶手段に記憶されているデータを取得する取得コマンドとともに当該取得コマンドで取得するデータのT(Tag)値と、当該データが前記データ記憶手段に記憶された順序を示す順序情報を外部機器から受信した場合、当該T(Tag)値の前記紐付け情報を参照して、当該順序情報に対応する前記記憶順序情報と紐付く位置情報の示す位置に記憶されているデータを前記外部機器に送信する送信手段、
として機能させることを特徴とするデータ送信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
ＩＣカード等の技術分野に関する。
【背景技術】
【０００２】
近年、ＩＣカードの用途は広がり、個人情報や取引データなど様々なデータがメモリに記録される。図１はアプリケーションに関するデータを格納するファイルの構成例を示す図である。データはデータオブジェクトなどのフォーマットでフォルダの配下にあるファイルに格納される。フォルダには、カード発行時のデータオブジェクトを格納する発行時格納ファイルと、追記されたデータオブジェクトを格納する追記用ファイルがある。こうしたファイル構成において、データオブジェクト１−１の内容を変更する場合に、データオブジェクト１−１を書き換えずにそのまま残した状態で、変更内容が反映されたデータオブジェクト１−２を追記する運用が行われることがある。例えば、ＩＣカード発行時において、住所情報が記述されたデータオブジェクトが格納されるが、その後発行時の住所から変更があった場合、変更後の住所情報が記述されたデータオブジェクトが住所変更の度に追記される。これにより、住所の履歴情報がＩＣカード内に保持されることとなる。
【０００３】
データオブジェクトは、例えば、TLV（Tag-Length-Value）形式で記述される。TLV形式は、データの種類（Tag）・長さ（Length）・値（value）を一纏めにして表現するフォーマットである。このＩＣカードの住所の例では、データの種類（Tag）として「住所情報」であることを示す値が設定され、データの値（value）として実際の住所情報（例えば、東京都〇〇市〇〇町１−１−１）を示す値が設定され、データの長さ（Length）として、データの値（value）の長さ（データ長）を示す値が設定される。つまり、一のＩＣカード内に同一のTag値を持つ複数のデータオブジェクトが記憶されることとなる。
【０００４】
一方で、特許文献１には、データオブジェクトを読み出す際、検索対象のファイルをカレントファイルだけでなく、指定したファイルまで拡張することで、効率的にデータオブジェクトを読み出すシステムが開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−１９１８０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に記載のシステムによれば、効率的にデータオブジェクトを検索することが可能であるが、同一のTag値を持つデータオブジェクトが存在する場合について考慮されていないという問題がある。
【０００７】
そこで、本発明は、このような点に鑑みてなされたものであり、同一のTag値を持つデータが複数記憶されている場合であっても、外部機器が効率的に所望のデータを取得することができる電子情報記憶媒体等を提供することを課題とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、請求項１に記載の発明は、TLV（Tag-Length-Value）形式のデータであって、同一のT(Tag)値を持つ複数のデータを記憶するデータ記憶手段と、それぞれの前記データについて前記データ記憶手段に記憶された順序を示す記憶順序情報と、記憶された位置を示す位置情報を紐付ける紐付け情報を前記T(Tag)値毎に記憶する紐付け情報記憶手段と、前記データ記憶手段に記憶されているデータを取得する取得コマンドとともに当該取得コマンドで取得するデータのT(Tag)値と、当該データが前記データ記憶手段に記憶された順序を示す順序情報を外部機器から受信した場合、当該T(Tag)値の前記紐付け情報を参照して、当該順序情報に対応する前記記憶順序情報と紐付く位置情報の示す位置に記憶されているデータを前記外部機器に送信する送信手段と、を備えることを特徴とする。
【０００９】
請求項２に記載の発明は、請求項１に記載の電子情報記憶媒体であって、前記送信手段は、前記取得コマンドとともに前記T(Tag)値と、前記順序情報の代わりである第１の所定情報を受信した場合、当該T(Tag)値の前記紐付け情報を参照して、直近に記憶されたデータを前記外部機器に送信することを特徴とする。
【００１０】
請求項３に記載の発明は、請求項１又は２に記載の電子情報記憶媒体であって、前記送信手段は、前記取得コマンドとともに前記T(Tag)値と、前記順序情報の代わりである第２の所定情報を受信した場合、当該T(Tag)値と同一のT(Tag)値を持つ全データを前記外部機器に送信することを特徴とする。
【００１１】
請求項４に記載の発明は、請求項１乃至３の何れか一項に記載の電子情報記憶媒体であって、前記データ記憶手段は、第１の記憶領域と、第２の記憶領域を有し、オブジェクトデータを記憶する際、当該オブジェクトデータのTag値と同じTag値を持つオブジェクトデータを未だ記憶していない場合に前記第１の記憶領域に記憶する一方、当該オブジェクトデータのTag値と同じTag値を持つオブジェクトデータを既に記憶している場合に前記第２の記憶領域に記憶し、前記送信手段は、前記取得コマンドとともに前記T(Tag)値と、前記順序情報の代わりである第３の所定情報を受信した場合、当該T(Tag)値と同一のT(Tag)値を持つオブジェクトデータであって、前記第１の記憶領域に記憶されているオブジェクトデータを前記外部機器に送信することを特徴とする。
【００１２】
請求項５に記載の発明は、TLV（Tag-Length-Value）形式のデータであって、同一のT(Tag)値を持つ複数のデータを記憶するデータ記憶手段と、それぞれの前記データについて前記データ記憶手段に記憶された順序を示す記憶順序情報と、記憶された位置を示す位置情報を紐付ける紐付け情報を前記T(Tag)値毎に記憶する紐付け情報記憶手段と、を備える電子情報記憶媒体におけるプロセッサによるデータ送信方法であって、前記データ記憶手段に記憶されているデータを取得する取得コマンドとともに当該取得コマンドで取得するデータのT(Tag)値と、当該データが前記データ記憶手段に記憶された順序を示す順序情報を外部機器から受信した場合、当該T(Tag)値の前記紐付け情報を参照して、当該順序情報に対応する前記記憶順序情報と紐付く位置情報の示す位置に記憶されているデータを前記外部機器に送信する送信ステップ、を含むことを特徴とする。
【００１３】
請求項６に記載の発明は、TLV（Tag-Length-Value）形式のデータであって、同一のT(Tag)値を持つ複数のデータを記憶するデータ記憶手段と、それぞれの前記データについて前記データ記憶手段に記憶された順序を示す記憶順序情報と、記憶された位置を示す位置情報を紐付ける紐付け情報を前記T(Tag)値毎に記憶する紐付け情報記憶手段と、前記データ記憶手段に記憶されているデータを取得する取得コマンドとともに当該取得コマンドで取得するデータのT(Tag)値と、当該データが前記データ記憶手段に記憶された順序を示す順序情報を外部機器から受信した場合、当該T(Tag)値の前記紐付け情報を参照して、当該順序情報に対応する前記記憶順序情報と紐付く位置情報の示す位置に記憶されているデータを前記外部機器に送信する送信手段と、を備えることを特徴とする。 
【００１４】
請求項７に記載の発明は、TLV（Tag-Length-Value）形式のデータであって、同一のT(Tag)値を持つ複数のデータを記憶するデータ記憶手段と、それぞれの前記データについて前記データ記憶手段に記憶された順序を示す記憶順序情報と、記憶された位置を示す位置情報を紐付ける紐付け情報を前記T(Tag)値毎に記憶する紐付け情報記憶手段と、を備える電子情報記憶媒体におけるプロセッサを、前記データ記憶手段に記憶されているデータを取得する取得コマンドとともに当該取得コマンドで取得するデータのT(Tag)値と、当該データが前記データ記憶手段に記憶された順序を示す順序情報を外部機器から受信した場合、当該T(Tag)値の前記紐付け情報を参照して、当該順序情報に対応する前記記憶順序情報と紐付く位置情報の示す位置に記憶されているデータを前記外部機器に送信する送信手段、として機能させることを特徴とする。
【発明の効果】
【００１５】
本発明によれば、同一のTag値を持つデータが複数記憶されている場合でも、外部機器は、取得したいデータが記憶された順序とTag値を指定して取得コマンドとともに送信することにより効率的に当該データを取得することができる。
【図面の簡単な説明】
【００１６】
【図１】データを格納するファイルの構成例を示す図である。
【図２】ＩＣカード１に搭載されるＩＣチップ１ａのハードウェア構成例を示す図である。
【図３】（Ａ）は、発行時格納ファイルの構成例を示す図であり、（Ｂ）は、追記用ファイルの構成例を示す図であり、（Ｃ）は、管理テーブル（Tag：“００５Ａ”）の構成例を示す図であり、（Ｄ）は、管理テーブル（Tag：“５２０１”）の構成例を示す図である。
【図４】（Ａ）は、データ取得コマンドの構成例を示す図であり、（Ｂ）は、パラメータの構成例を示す図である。
【図５】コマンド受信時処理の一例を示すフローチャートである。
【図６】（Ａ）は、変形例における格納ファイルの構成例を示す図であり、（Ｂ）は、変形例における管理テーブル（Tag：“００５Ａ”）の構成例を示す図であり、（Ｃ）は、変形例における管理テーブル（Tag：“５２０１”）の構成例を示す図であり、（Ｄ）は、変形例におけるパラメータの構成例を示す図である。
【図７】変形例におけるコマンド受信時処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１７】
以下、図面を参照して本発明の実施形態について詳細に説明する。以下に説明する実施形態は、ＩＣチップを搭載するＩＣカードに対して本発明を適用した場合の実施の形態である。
【００１８】
［１．ＩＣチップ１ａの構成及び機能概要］
まず、図２を参照して、本実施形態に係るＩＣカード１に搭載されるＩＣチップ１ａの構成及び機能概要について説明する。図２は、ＩＣカード１に搭載されるＩＣチップ１ａのハードウェア構成例を示す図である。ＩＣカード１は、キャッシュカード、クレジットカード、社員カード等として使用される。或いは、ＩＣカード１は、スマートフォンや携帯電話機等の通信機器に組み込まれる。或いは、ＩＣチップ１ａが通信機器の回路基板上に直接組み込まれて構成されるようにしてもよい。なお、ＩＣチップ１ａは、本発明の電子情報記憶媒体の一例である。
【００１９】
図２に示すように、ＩＣチップ１ａは、ＣＰＵ（Central Processing Unit）１０、ＲＡＭ（Random Access Memory）１１、ＲＯＭ（Read Only Memory）１２、不揮発性メモリ１３、及びＩ／Ｏ回路１４を備えて構成される。ＣＰＵ１０は、ＲＯＭ１２又は不揮発性メモリ１３に記憶された各種プログラムを実行するプロセッサ（コンピュータ）である。なお、Ｉ／Ｏ回路１４は、外部機器２とのインターフェイスを担う。これにより、ＩＣチップ１ａは、ＩＣリーダ・ライタを備える外部機器２との間で接触又は非接触で通信を行うことができる。接触式のＩＣチップ１ａの場合、Ｉ／Ｏ回路１４には、例えば、Ｃ１〜Ｃ８の８個の端子が備えられている。例えば、Ｃ１端子は電源端子（ＩＣチップ１ａへ電源供給する端子）、Ｃ２端子はリセット端子、Ｃ３端子はクロック端子、Ｃ５端子はグランド端子、Ｃ７端子は外部機器２との間で通信を行うための端子である。一方、非接触式のＩＣチップ１ａの場合、Ｉ／Ｏ回路１４には、例えば、アンテナ、及び変復調回路が備えられている。なお、外部機器２の例としては、ＩＣカード発行機、ＡＴＭ、改札機、認証用ゲート等が挙げられる。或いは、ＩＣチップ１ａが通信機器に組み込まれる場合、外部機器２には通信機器の機能を担う制御部が該当する。
【００２０】
不揮発性メモリ１３には、例えばフラッシュメモリが適用される。不揮発性メモリ１３に記憶される各種プログラム及びデータの一部は、ＲＯＭ１２に記憶されてもよい。なお、不揮発性メモリ１３は、「Electrically Erasable Programmable Read-Only Memory」であってもよい。本実施形態において、ＲＯＭ１２と不揮発性メモリ１３との何れかに記憶されるプログラムには、オペレーティングシステム（Operating System、以下、「ＯＳ」という）、アプリケーションプログラム等が含まれる。
【００２１】
ここで、アプリケーションプログラムは、ＩＣカード１においてアプリケーションインスタンスの機能（言い換えれば、モジュール）を実現するためのプログラムである。これにより、ＣＰＵ１０は、アプリケーションとして機能する。
【００２２】
また、不揮発性メモリ１３には、アプリケーションに関するデータを格納するフォルダ（図示しない）が設けられており、更にその配下に発行時格納ファイル（図３（Ａ））及び追記用ファイル（図３（Ｂ））が設けられている。発行時格納ファイルには、ＩＣカード１が発行された際に発行者により作成されたオブジェクトデータが格納される。図３（Ａ）の例では、オブジェクトデータ１０１、１０２が格納されている。オブジェクトデータ１０１のTag値は「0x005A」であり、オブジェクトデータ１０２のTag値は「0x5201」である。追記用ファイルには、ＩＣカード１が発行された後に発行者又は第三者により作成されたオブジェクトデータであって、発行時格納ファイルに格納されている何れかのオブジェクトデータと同じTag値を持つオブジェクトデータが格納される。図３（Ｂ）の例では、Tag値が「0x005A」であるオブジェクトデータ２０１、２０３と、Tag値が「0x5201」であるオブジェクトデータ２０２が格納されている。すなわち、追記用ファイルには、発行時格納ファイルに格納されている何れかのオブジェクトデータと同じTag値を持ち、value値が異なるオブジェクトデータが格納されている。但し、発行時格納ファイルに格納されている何れかのオブジェクトデータとTag値及びvalue値が同一のオブジェクトデータが追記用ファイルに追加されることがあってもよい。
【００２３】
更に、不揮発性メモリ１２には、管理テーブルが記憶される。管理テーブルは、追記用ファイルに格納されるオブジェクトデータのTag値毎に作成される。管理テーブルには、同じTag値を持つオブジェクトデータが追記用ファイルに追記された順序を示す情報（「追記順」という場合がある）と、当該オブジェクトデータが追記された位置を示す基準アドレス（例えば、追記用ファイルに対応するメモリ領域上の先頭アドレス）からのオフセット値を示す情報（「オフセット」という場合がある）が対応付けて記述される。例えば、図３（Ｂ）に示すように、オブジェクトデータ２０１、オブジェクトデータ２０２、オブジェクトデータ２０３の順序でオブジェクトデータが追記された場合、まず、オブジェクトデータ２０１が追加されると、図３（Ｃ）に示す管理テーブル（Tag：“0x005A”）が作成され（予めデータが記述されないテーブルの枠組みだけを作成しておいてもよい）、追記順「0x01」とオフセット「0x00」が対応付けて記述される。次いで、オブジェクトデータ２０２が追加されると、図３（Ｄ）に示す管理テーブル（Tag：“0x5201”）が作成され、追記順「0x01」とオフセット「0x02」が対応付けて記述される。次いで、オブジェクトデータ２０３が追加されると、図３（Ｃ）に示す管理テーブル（Tag：“0x005A”）に、追記順「0x02」とオフセット「0x06」が対応付けて記述される。
【００２４】
［２．コマンドの概要］
次に、外部機器２からＩＣカード１に送信されるオブジェクトデータを取得するためのコマンド（「データ取得コマンド」という場合がある）について説明する。データ取得コマンドは、図４（Ａ）に示すように、ヘッダとボディから構成される。ヘッダは「ＣＬＳ」、「ＩＮＳ」、「Ｐ１」、「Ｐ２」から構成される。ＣＬＡは、ＩＮＳにて指定したコマンドがＩＳＯ準拠であるか否かを示す情報や、論理チャンネルのチャンネル番号を示す情報が格納される。ＩＮＳはオブジェクトデータの取得を意味する情報が格納される。一方、ボディは「Ｌｃ」、「ＤＡＴＡ」から構成される。ＬｃはＤＡＴＡに格納される値の長さを示す情報が格納される。ＤＡＴＡには、取得対象であるオブジェクトデータのTag値を示す情報が格納される。ヘッダのＰ１、Ｐ２（計２バイトの「パラメータ」）には、ＤＡＴＡで指定したTag値を持つオブジェクトデータのうち取得するオブジェクトデータを指定するための情報が格納される。具体的には、図４（Ｂ）に示すように、発行時に記憶されたオブジェクトデータを指定する場合には「0x0000」が格納され、直近に追記されたオブジェクトデータを指定する場合には「0xFFFF」が格納される。また、例えば、２番目に追記されたオブジェクトデータを指定する場合には１０進数の２を示す「0x0002」（すなわち、追記順を示す情報）が格納される。
【００２５】
［３．ＩＣチップ１ａにおけるコマンド受信時処理］
次に、図５を用いて、ＩＣチップ１ａのアプリケーション（外部機器２と通信を行うアプリケーションであって、例えば、SELECTコマンドにより選択されたアプリケーション）が外部機器２からコマンドを受信した際の動作（コマンド受信時処理）について説明する。
【００２６】
まず、アプリケーション（を実行するＣＰＵ１０）は、データ取得コマンドを受信したか否かを判定する（ステップＳ１０１）。具体的には、ヘッダのＩＮＳの値に基づいて判定する。アプリケーションは、データ取得コマンドを受信していない（他のコマンドを受信した）と判定した場合には（ステップＳ１０１：ＮＯ）、受信したコマンドを実行し、応答を外部機器２に送信して（ステップ１０２）、当該フローチャートに示す処理を終了する。一方、アプリケーションは、データ取得コマンドを受信したと判定した場合には（ステップＳ１０１：ＹＥＳ）、次いで、受信したコマンドのパラメータＰ１、Ｐ２の値が「0x0000」であるか否かを判定する（ステップＳ１０３）。
【００２７】
アプリケーションは、パラメータＰ１、Ｐ２の値が「0x0000」であると判定した場合には（ステップＳ１０３：ＹＥＳ）、発行時に追加されたオブジェクトデータを応答とともに外部機器２に送信して（ステップ１０４）、当該フローチャートに示す処理を終了する。具体的には、アプリケーションは、発行時格納ファイルに格納されているオブジェクトデータのうち、受信したコマンドのＤＡＴＡに格納されている情報が示すTag値と同じTag値を持つオブジェクトデータを外部機器２に送信する。一方、アプリケーションは、パラメータＰ１、Ｐ２の値が「0x0000」ではないと判定した場合には（ステップＳ１０３：ＮＯ）、次いで、受信したコマンドのパラメータＰ１、Ｐ２の値が「0xFFFF」であるか否かを判定する（ステップＳ１０５）。
【００２８】
アプリケーションは、パラメータＰ１、Ｐ２の値が「0xFFFF」であると判定した場合には（ステップＳ１０５：ＹＥＳ）、ＤＡＴＡのTag値に対応する管理テーブルを参照し、追記順が最大値であるオフセットを特定し（ステップＳ１０６）、特定したオフセットから記憶位置を算出し、当該記憶位置にあるオブジェクトデータを応答とともに外部機器２に送信して（ステップＳ１０８）、当該フローチャートに示す処理を終了する。すなわち、アプリケーションは、パラメータＰ１、Ｐ２の値が「0xFFFF」である場合に、直近に追記されたオブジェクトデータを送信する。
【００２９】
一方、アプリケーションは、パラメータＰ１、Ｐ２の値が「0xFFFF」ではないと判定した場合には（ステップＳ１０５：ＮＯ）、ＤＡＴＡのTag値に対応する管理テーブルを参照し、パラメータで指定された追記順のオフセットを特定し（ステップＳ１０７）、特定したオフセットから記憶位置を算出し、当該記憶位置にあるオブジェクトデータを応答とともに外部機器２に送信して（ステップＳ１０８）、当該フローチャートに示す処理を終了する。すなわち、アプリケーションは、パラメータＰ１、Ｐ２の値が「0xFFFF」ではない場合に、パラメータで指定された追記順で追記されたオブジェクトデータを送信する。
【００３０】
以上のように、本実施形態のＩＣカード１は、不揮発性メモリ１３（「データ記憶手段」、「紐付け情報記憶手段」の一例）が、TLV（Tag-Length-Value）形式のデータであって、同一のT(Tag)値を持つ複数のオブジェクトデータ（「データ」の一例）を記憶するとともに、それぞれのオブジェクトデータについて不揮発性メモリ１３に記憶された順序を示す追記順（「記憶順序情報」の一例）と、記憶された位置を示すオフセット（「位置情報」の一例）を紐付ける管理テーブル（「紐付け情報」の一例）をT(Tag)値毎に記憶し、ＣＰＵ１０（「送信手段」の一例）が、不揮発性メモリ１３に記憶されているオブジェクトデータを取得するデータ取得コマンド（「取得コマンド」の一例）とともに当該データ取得コマンドで取得するオブジェクトデータのT(Tag)値と、当該オブジェクトデータが不揮発性メモリ１３に記憶された順序を示すパラメータ（「順序情報」の一例）を外部機器２から受信した場合、当該T(Tag)値の管理テーブルを参照して、当該パラメータに対応する追記順と紐付くオフセットの示す位置（オフセットから算出される位置）に記憶されているオブジェクトデータを外部機器２に送信する。
【００３１】
したがって、本実施形態のＩＣカード１によれば、同一のTag値を持つオブジェクトデータが複数記憶されている場合でも、外部機器２は、取得したいオブジェクトデータが追記された順序とTag値を指定してデータ取得コマンドとともに送信することにより効率的に当該オブジェクトデータを取得することができる。
【００３２】
また、ＩＣカード１のＣＰＵ１０は、不揮発性メモリ１３が、発行時格納ファイル（「第１の記憶領域」の一例）と、追記用ファイル（「第２の記憶領域」の一例）を有し、オブジェクトデータを記憶する際、当該オブジェクトデータのTag値と同じTag値を持つオブジェクトデータを未だ記憶していない場合に（最初に記憶させる場合に）発行時格納ファイルに記憶する一方、当該オブジェクトデータのTag値と同じTag値を持つオブジェクトデータを既に記憶している場合に追記用ファイルに記憶し、ＣＰＵ１０は、データ取得コマンドとともにT(Tag)値と、取得対象のオブジェクトデータが不揮発性メモリ１３に追記された順序を示すパラメータの代わりである「0x0000」を示すパラメータ（「第３の所定情報」の一例）を受信した場合、当該T(Tag)値と同一のT(Tag)値を持つオブジェクトデータであって、発行時格納ファイルに記憶されているオブジェクトデータを外部機器２に送信する。
【００３３】
したがって、ＩＣカード１によれば、「0x0000」を示すパラメータをデータ取得コマンドとともに送信することにより、最初に記憶されたオブジェクトデータを取得することができる。
【００３４】
［４．変形例］
次に、上記実施形態の変形例について説明する。なお、以下に説明する変形例は適宜組み合わせることができる。
【００３５】
［４．１．変形例１］
上記実施形態では、不揮発性メモリ１３に、オブジェクトデータを格納するファイルとして発行時格納ファイルと追記用ファイルが設けられていたが、変形例では、図６（Ａ）に示すようにこれらを統合した格納ファイルが設けられる。図６（Ａ）に示す格納ファイルは、オブジェクトデータ３０１−３０５が格納されており、オブジェクトデータ３０１、３０２はカード発行時に格納され、オブジェクトデータ３０３−３０５はカード発行後に格納された場合を示している。
【００３６】
また、不揮発性メモリ１３には格納ファイルに記憶されているオブジェクトデータのTag値毎に管理テーブルが設けられる。変形例の管理テーブルは、カード発行時に記憶されるオブジェクトデータのTag値毎に作成される。変形例の管理テーブルには、同じTag値を持つオブジェクトデータが格納ファイルに記憶された順序を示す情報（「記憶順」という場合がある）と、当該オブジェクトデータが記憶された位置を示す基準アドレス（例えば、格納ファイルに対応するメモリ領域上の先頭アドレス）からのオフセット値を示す情報（「オフセット」という場合がある）が対応付けて記述される。
【００３７】
例えば、カード発行時にオブジェクトデータ３０１及びオブジェクトデータ３０２が記憶され、カード発行後にオブジェクトデータ３０３、オブジェクトデータ３０４、オブジェクトデータ３０５の順序でオブジェクトデータが格納ファイルに記憶される場合、カード発行時に図６（Ｂ）に示す管理テーブル（Tag：“0x005A”）が作成されるとともに、記憶順「0x01」とオフセット「0x00」が対応付けて記述される。同様に、図６（Ｃ）に示す管理テーブル（Tag：“0x5201”）が作成されるとともに、記憶順「0x01」とオフセット「0x02」が対応付けて記述される。次いで、オブジェクトデータ３０３が追加されると、図６（Ｂ）に示す管理テーブル（Tag：“0x005A”）に、追記順「0x02」とオフセット「0x06」が対応付けて記述される。次いで、オブジェクトデータ３０４が追加されると、図６（Ｃ）に示す管理テーブル（Tag：“0x5201”）に、追記順「0x02」とオフセット「0x08」が対応付けて記述される。次いで、オブジェクトデータ３０５が追加されると、図６（Ｂ）に示す管理テーブル（Tag：“0x005A”）に、追記順「0x03」とオフセット「0x0C」が対応付けて記述される。
【００３８】
次に、図６（Ｄ）を用いて、本変形例におけるデータ取得コマンドについて説明する。なお、データ取得コマンドのパラメータ（Ｐ１、Ｐ２）以外の部分については上記実施形態と同様であるので説明を省略する。ヘッダのＰ１、Ｐ２（計２バイトの「パラメータ」）には、ＤＡＴＡで指定したTag値を持つオブジェクトデータのうち取得するオブジェクトデータを指定するための情報が格納される。具体的には、図６（Ｄ）に示すように、発行時に記憶されたオブジェクトデータ（例えば、図６（Ａ）のオブジェクトデータ３０１、３０２）を指定する場合には「0x0001」が格納され、直近に記憶されたオブジェクトデータを指定する場合には「0xFFFF」が格納される。また、例えば、２番目に記録されたオブジェクトデータを指定する場合には１０進数の２を示す「0x0002」（すなわち、記憶順を示す情報）が格納される。
【００３９】
次に、図７を用いて、本変形におけるコマンド受信時処理について説明する。
【００４０】
まず、アプリケーション（を実行するＣＰＵ１０）は、データ取得コマンドを受信したか否かを判定する（ステップＳ２０１）。具体的には、ヘッダのＩＮＳの値に基づいて判定する。アプリケーションは、データ取得コマンドを受信していない（他のコマンドを受信した）と判定した場合には（ステップＳ２０１：ＮＯ）、受信したコマンドを実行し、応答を外部機器２に送信して（ステップ２０２）、当該フローチャートに示す処理を終了する。一方、アプリケーションは、データ取得コマンドを受信したと判定した場合には（ステップＳ２０１：ＹＥＳ）、次いで、受信したコマンドのパラメータＰ１、Ｐ２の値が「0xFFFF」であるか否かを判定する（ステップＳ２０３）。
【００４１】
アプリケーションは、パラメータＰ１、Ｐ２の値が「0xFFFF」であると判定した場合には（ステップＳ２０３：ＹＥＳ）、ＤＡＴＡのTag値に対応する管理テーブルを参照し、記憶順が最大値であるオフセットを特定し（ステップＳ２０４）、特定したオフセットから記憶位置を算出し、当該記憶位置にあるオブジェクトデータを応答とともに外部機器２に送信して（ステップ２０６）、当該フローチャートに示す処理を終了する。すなわち、アプリケーションは、パラメータＰ１、Ｐ２の値が「0xFFFF」である場合に、直近に記憶されたオブジェクトデータを送信する。
【００４２】
一方、アプリケーションは、パラメータＰ１、Ｐ２の値が「0xFFFF」ではないと判定した場合には（ステップＳ２０３：ＮＯ）、ＤＡＴＡのTag値に対応する管理テーブルを参照し、パラメータで指定された記憶順のオフセットを特定し（ステップＳ２０５）、特定したオフセットから記憶位置を算出し、当該記憶位置にあるオブジェクトデータを応答とともに外部機器２に送信して（ステップ２０６）、当該フローチャートに示す処理を終了する。すなわち、アプリケーションは、パラメータＰ１、Ｐ２の値が「0xFFFF」ではない場合に、パラメータで指定された記憶順で記憶されたオブジェクトデータを送信する。
【００４３】
［４．２．変形例２］
上記実施形態及び変形例１では、データ取得コマンドによって指定された１件のデータオブジェクトを外部機器２に送信することとしたが、例えば、パラメータＰ１、Ｐ２の値が「0xFF00」（1111111100000000b）であるデータ取得コマンドを受信した場合に、アプリケーション（を実行するＣＰＵ１０）は、ＤＡＴＡのTag値と同一のTag値を持つ全てのオブジェクトデータ（発行時に記憶されたオブジェクトデータから直近に記憶されたオブジェクトデータまで）を外部機器２に送信することとしてもよい。この場合、外部機器２は、あるTag値を持つ全てのオブジェクトデータを取得したい場合に、データ取得コマンドのパラメータＰ１、Ｐに「0xFF00」を設定するだけでこれらのデータオブジェクトを取得することができる。なお、当該変形例においては、同一のTag値を持つオブジェクトデータの最大記憶件数は256件（最大追記件数は255件）とする。
【符号の説明】
【００４４】
１  ＩＣカード
１ａ  ＩＣチップ
２  外部機器
１０  ＣＰＵ
１１  ＲＡＭ
１２  ＲＯＭ
１３  不揮発性メモリ
１４  Ｉ／Ｏ回路
【図１】
2018067187.tif 000003
【図２】
2018067187.tif 000004
【図３】
2018067187.tif 000005
【図４】
2018067187.tif 000006
【図５】
2018067187.tif 000007
【図６】
2018067187.tif 000008
【図７】
2018067187.tif 000009