(57)【特許請求の範囲】
【請求項１】
データを記憶するデータ記憶部と、
前記データ記憶部に記憶させるデータと、前記データを識別するデータ識別子とを含む書き込み要求を、外部装置から受信する受信部と、
前記データ記憶部に記憶されているデータに対応する前記データ識別子に関連する情報を記憶するデータ識別子記憶部と、
前記データ識別子記憶部が記憶する前記データ識別子に関連する情報に基づいて、前記受信部によって受信した前記データ識別子に対応するデータが前記データ記憶部に記憶されているか否かを判定し、前記データ識別子に対応するデータが前記データ記憶部に記憶されていない場合に、前記書き込み要求に含まれるデータを前記データ記憶部に記憶させ、前記データ識別子に対応するデータが前記データ記憶部に記憶されている場合に、前記書き込み要求に含まれるデータと、前記データ記憶部に記憶されている前記データ識別子に対応するデータとが一致するか否かを判定する処理部と、
前記処理部によって判定された前記一致するか否かの判定結果を示す情報を含む応答を前記外部装置に送信する送信部と
を備えるＩＣカード。
【請求項２】
前記処理部は、前記書き込み要求に含まれるデータを前記データ記憶部に記憶させる場合に、前記書き込み要求に含まれる前記データ識別子に関する情報を前記データ識別子記憶部に記憶させる
請求項１に記載のＩＣカード。
【請求項３】
前記データ識別子記憶部は、前記データ識別子を、前記データ識別子に関連する情報として記憶し、
前記処理部は、
前記書き込み要求に含まれる前記データ識別子が、前記データ識別子記憶部に記憶されているか否かに基づいて、前記データ識別子に対応するデータが前記データ記憶部に記憶されているか否かを判定する
請求項１又は請求項２に記載のＩＣカード。
【請求項４】
前記データ識別子記憶部は、前記データ識別子に対応する前記データ記憶部のデータ領域に既にデータが記憶されているか否かを示す情報を、前記データ識別子に関連する情報として記憶し、
前記処理部は、受信した前記データ識別子を用いて前記データ識別子記憶部を参照して得られる、前記データ識別子に対応する前記データ記憶部のデータ領域に既にデータが記憶されているか否かを示す情報に基づいて、前記データ識別子に対応するデータが前記データ記憶部に記憶されているか否かを判定する
請求項１又は請求項２に記載のＩＣカード。
【請求項５】
前記データ識別子記憶部は、揮発性メモリである
請求項１乃至請求項４のいずれか一項に記載のＩＣカード。
【請求項６】
前記データ識別子記憶部は、電気的に書き換え可能な不揮発性メモリである
請求項１乃至請求項４のいずれか一項に記載のＩＣカード。
【請求項７】
データを記憶するデータ記憶部と、
前記データ記憶部に記憶させるデータと、前記データを識別するデータ識別子とを含む書き込み要求を、外部装置から受信する受信部と、
前記データ記憶部に記憶されているデータに対応する前記データ識別子に関連する情報を記憶するデータ識別子記憶部と、
前記データ識別子記憶部が記憶する前記データ識別子に関連する情報に基づいて、前記受信部によって受信した前記データ識別子に対応するデータが前記データ記憶部に記憶されているか否かを判定し、前記データ識別子に対応するデータが前記データ記憶部に記憶されていない場合に、前記書き込み要求に含まれるデータを前記データ記憶部に記憶させ、前記データ識別子に対応するデータが前記データ記憶部に記憶されている場合に、前記書き込み要求に含まれるデータと、前記データ記憶部に記憶されている前記データ識別子に対応するデータとが一致するか否かを判定する処理部と、
前記処理部によって判定された前記一致するか否かの判定結果を示す情報を含む応答を前記外部装置に送信する送信部と
を備えるＩＣモジュール。
【請求項８】
請求項７に記載のＩＣモジュールと、
前記ＩＣモジュールが埋め込まれたカード本体と
を備えるＩＣカード。
【請求項９】
データを記憶するデータ記憶部と、前記データを識別するデータ識別子であって、前記データ記憶部に記憶されているデータに対応する前記データ識別子に関連する情報を記憶するデータ識別子記憶部とを備えるＩＣカードが有するコンピュータに、
データ記憶部に記憶させるデータと、前記データを識別するデータ識別子とを含む書き込み要求を、外部装置から受信する受信ステップと、
前記データ識別子記憶部が記憶する前記データ識別子に関連する情報に基づいて、前記受信ステップによって受信した前記データ識別子に対応するデータが前記データ記憶部に記憶されているか否かを判定する判定ステップと、
前記データ識別子に対応するデータが前記データ記憶部に記憶されていない場合に、前記書き込み要求に含まれるデータを前記データ記憶部に記憶させ、前記データ識別子に対応するデータが前記データ記憶部に記憶されている場合に、前記書き込み要求に含まれるデータと、前記データ記憶部に記憶されている前記データ識別子に対応するデータとが一致するか否かを判定する処理ステップと、
前記処理ステップによって判定された前記一致するか否かの判定結果を示す情報を含む応答を前記外部装置に送信する送信ステップと
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ＩＣカード、ＩＣモジュール、及びプログラムに関する。
【背景技術】
【０００２】
近年、ＩＣ（Integrated Circuit）チップを内蔵したＩＣカードが広く使用されている。ＩＣカードでは、用途に対応したＩＣカードの動作に必要な情報を、書き込み要求のコマンドを含む発行コマンドを用いてＩＣチップ内の不揮発性メモリに書き込む発行工程が実行される。しかしながら、従来のＩＣカードでは、例えば、書き込んだ情報を確認する際に、発行コマンドとは異なる読み出しコマンドなどを使用する必要があり、発行装置が対応するコマンドの種類が多くなる場合があった。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−２１６０６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、発行工程に使用するコマンドの種類を低減することができるＩＣカード、ＩＣモジュール、及びプログラムを提供することである。
【課題を解決するための手段】
【０００５】
実施形態のＩＣカードは、データ記憶部と、受信部と、データ識別子記憶部と、処理部と、送信部とを持つ。データ記憶部は、データを記憶する。受信部は、前記データ記憶部に記憶させるデータと、前記データを識別するデータ識別子とを含む書き込み要求を、外部装置から受信する。データ識別子記憶部は、前記データ記憶部に記憶されているデータに対応する前記データ識別子に関連する情報を記憶する。処理部は、前記データ識別子記憶部が記憶する前記データ識別子に関連する情報に基づいて、前記受信部によって受信した前記データ識別子に対応するデータが前記データ記憶部に記憶されているか否かを判定し、前記データ識別子に対応するデータが前記データ記憶部に記憶されていない場合に、前記書き込み要求に含まれるデータを前記データ記憶部に記憶させ、前記データ識別子に対応するデータが前記データ記憶部に記憶されている場合に、前記書き込み要求に含まれるデータと、前記データ記憶部に記憶されている前記データ識別子に対応するデータとが一致するか否かを判定する。送信部は、前記処理部によって判定された前記一致するか否かの判定結果を示す情報を含む応答を前記外部装置に送信する。
【図面の簡単な説明】
【０００６】
【図１】第１の実施形態のＩＣカードの一例を示す外観図。
【図２】第１の実施形態のＩＣカードのハードウェア構成例を示す図。
【図３】第１の実施形態のＩＣカードの機能構成例を示すブロック図。
【図４】第１の実施形態の過去受信ＤＧＩ記憶部が記憶するデータ例を示す図。
【図５】第１の実施形態のＤＧＩテーブル記憶部が記憶するデータ例を示す図。
【図６】第１の実施形態のファイル管理情報記憶部が記憶するデータ例を示す図。
【図７】ＳＴＯＲＥ  ＤＡＴＡコマンドのデータ構成例を示す図。
【図８】第１の実施形態のＩＣカードのＳＴＯＲＥ  ＤＡＴＡコマンド処理の一例を示すフローチャート。
【図９】第２の実施形態のＩＣカードの機能構成例を示すブロック図。
【図１０】第２の実施形態のファイル管理情報記憶部が記憶するデータ例を示す図。
【図１１】第２の実施形態のＩＣカードのＳＴＯＲＥ  ＤＡＴＡコマンド処理の一例を示すフローチャート。
【発明を実施するための形態】
【０００７】
以下、実施形態のＩＣカード、ＩＣモジュール、及びプログラムを、図面を参照して説明する。
【０００８】
（第１の実施形態）
図１は、第１の実施形態のＩＣカード１の一例を示す外観図である。
図１に示すように、ＩＣカード１は、ＩＣモジュール１０を備える。ＩＣモジュール１０は、ＩＣカード１が接触式ＩＣカードの場合は、コンタクト部３と、ＩＣチップ１００とを備える。なお、ＩＣカード１が非接触式ＩＣカードの場合は、ＩＣモジュール１０は、アンテナ部とＩＣチップ１００とを備える。ＩＣカード１は、例えば、プラスチックのカード基材ＰＴ（カード本体の一例）に、ＩＣモジュール１０を実装して形成されている。すなわち、ＩＣカード１は、ＩＣモジュール１０と、ＩＣモジュール１０が埋め込まれたカード基材ＰＴとを備えている。また、ＩＣカード１は、コンタクト部３を介して外部装置２と通信可能である。
【０００９】
ＩＣカード１は、例えば、外部装置２が送信したコマンド（処理要求）を、コンタクト部３を介して受信し、受信したコマンドに応じた処理（コマンド処理）を実行する。そして、ＩＣカード１は、コマンド処理の実行結果であるレスポンス（処理応答）を外部装置２にコンタクト部３を介して送信する。
ここで、外部装置２は、ＩＣカード１と通信する上位装置であり、例えば、リーダ／ライタ装置、発行装置などである。
【００１０】
ＩＣモジュール１０は、コンタクト部３と、ＩＣチップ１００とを備え、例えば、テープ上にＩＣモジュール１０が複数配置されたＣＯＴ（Chip On Tape）などの形態で取引されるモジュールである。なお、テープから個片抜きして切り離した単体のＩＣモジュール１０をＣＯＴという場合がある。
【００１１】
コンタクト部３は、ＩＣカード１が動作するために必要な各種信号の端子を有している。ここで、各種信号の端子は、電源電圧、クロック信号、リセット信号などを外部装置２から供給を受ける端子、及び、外部装置２と通信するためのシリアルデ―タ入出力端子（ＳＩＯ端子）を有する。
ＩＣチップ１００は、例えば、１チップのマイクロプロセッサなどのＬＳＩ（Large Scale Integration）である。
【００１２】
次に、図２を参照して、本実施形態のＩＣカード１のハードウェア構成について説明する。
図２は、本実施形態のＩＣカード１のハードウェア構成例を示す図である。
図２に示すように、ＩＣカード１は、コンタクト部３と、ＩＣチップ１００とを備えたＩＣモジュール１０を備えている。そして、ＩＣチップ１００は、ＵＡＲＴ（Universal Asynchronous Receiver Transmitter）４と、ＣＰＵ（Central Processing Unit）５と、ＲＯＭ（Read Only Memory）６と、ＲＡＭ（Random Access Memory）７と、ＥＥＰＲＯＭ（Electrically Erasable Programmable ROM）８とを備えている。
【００１３】
ＵＡＲＴ４（通信部の一例）は、ＩＣカード１と外部装置２との間の通信（コマンド／レスポンスの送受信）を行う。ＵＡＲＴ４は、例えば、ＥＥＰＲＯＭ８に個人情報や内部制御用情報、等を設定する発行処理を要求する発行コマンド（発行処理要求）などの各種コマンドを外部装置２から受信する。また、ＵＡＲＴ４は、各種コマンドに応じた処理の実行結果であるレスポンスを外部装置２に送信する。
【００１４】
ＣＰＵ５は、ＲＯＭ６又はＥＥＰＲＯＭ８に記憶されているプログラムを実行して、ＩＣカード１の各種処理を行う。ＣＰＵ５は、例えば、コンタクト部３を介して、ＵＡＲＴ４が受信したコマンドに応じたコマンド処理を実行する。また、ＣＰＵ５は、実行したコマンド処理のレスポンスをＵＡＲＴ４に送信させる。
【００１５】
ＲＯＭ６は、例えば、マスクＲＯＭなどの不揮発性メモリであり、ＩＣカード１の各種処理を実行するためのプログラム、及びコマンドテーブルなどのデータを記憶する。
ＲＡＭ７は、例えば、ＳＲＡＭ（Static RAM）などの揮発性メモリであり、ＩＣカード１の各種処理を行う際に利用されるデータを一時記憶する。ＲＡＭ７は、受信バッファ７１と、送信バッファ７２とを備えている。
受信バッファ７１は、ＵＡＲＴ４が受信したコマンドなどのデータを記憶する。また、送信バッファ７２は、ＵＡＲＴ４が送信するレスポンスなどのデータを記憶する。
【００１６】
ＥＥＰＲＯＭ８は、例えば、電気的に書き換え可能な不揮発性メモリである。ＥＥＰＲＯＭ８は、ＩＣカード１が利用する各種データを記憶する。ＥＥＰＲＯＭ８は、例えば、使用者氏名、使用者ＩＤ、カードＩＤ、各種鍵情報、内部制御用情報などをＩＣカード１の用途に応じて記憶する。
【００１７】
次に、図３を参照して、本実施形態によるＩＣカード１の機能構成例について説明する。
図３は、本実施形態のＩＣカード１の機能構成例を示すブロック図である。
図３に示すように、ＩＣカード１は、ＵＡＲＴ４と、制御部５０と、ＤＧＩテーブル記憶部６０と、過去受信ＤＧＩ記憶部７０と、データ記憶部８０と、ファイル管理情報記憶部８１とを備えている。
ここで、図３に示されるＩＣカード１の各部は、図２に示されるＩＣカード１のハードウェアを用いて実現される。
【００１８】
過去受信ＤＧＩ記憶部７０は、例えば、ＲＡＭ７により構成され、データ記憶部８０に既に記憶されているデータに対応するＤＧＩ（Data Grouping Identifier）を記憶する。ここで、ＤＧＩとは、データ記憶部８０に記憶させるデータを識別するデータ識別子のことである。また、過去受信ＤＧＩ記憶部７０は、データ記憶部８０に既に記憶されているデータに対応するＤＧＩに関連する情報を記憶するデータ識別子記憶部の一例である。ＤＧＩに関連する情報には、ＤＧＩが含まれる。過去受信ＤＧＩ記憶部７０は、例えば、データ記憶部８０にデータを書き込む（記憶させる）ＳＴＯＲＥ  ＤＡＴＡコマンド（書き込み要求）が既に実行されたＤＧＩを、図４に示すように記憶する。なお、ＳＴＯＲＥ  ＤＡＴＡコマンドは、発行コマンドの一例であり、詳細は後述する。
【００１９】
図４は、本実施形態の過去受信ＤＧＩ記憶部７０が記憶するデータ例を示す図である。
図４に示すように、過去受信ＤＧＩ記憶部７０は、「過去受信ＤＧＩ」を記憶する。ここで、「過去受信ＤＧＩ」は、既に実行したＳＴＯＲＥ  ＤＡＴＡコマンドに含まれていたＤＧＩであり、例えば、ＵＡＲＴ４を介して過去に受信したＤＧＩである。すなわち、過去受信ＤＧＩ記憶部７０は、過去に受信したＤＧＩのリストを記憶する。
図４に示す例では、過去受信ＤＧＩ記憶部７０は、「過去受信ＤＧＩ」として、“０ｘ０１０１”、“０ｘ０２０１”、・・・を記憶する。すなわち、ＤＧＩが“０ｘ０１０１”、“０ｘ０２０１”、・・・であるデータに対して、既にＳＴＯＲＥ  ＤＡＴＡコマンドが実行された状態であり、当該過去受信ＤＧＩに対応するデータが、データ記憶部８０に既に記憶されていることを示している。ここで、データ冒頭の“０ｘ”は、１６進法（ヘキサデシマル）の表記であることを示している。
【００２０】
図３の説明に戻り、データ記憶部８０は、例えば、ＥＥＰＲＯＭ８により構成され、ＩＣカード１の用途に応じた各種データを記憶する。データ記憶部８０は、ＩＣカード１の発行によって、アプリケーションに対応したＤＦ（Dedicated File）と、アプリケーションにおいて利用される各種データ及び内部制御用のデータを記憶するＥＦ（Elementary File）とが構築（確保）される。データ記憶部８０の各ＥＦには、例えば、発行工程において、ＳＴＯＲＥ  ＤＡＴＡコマンドによって、データが記憶される。
【００２１】
ＤＧＩテーブル記憶部６０は、例えば、ＲＯＭ６により構成され、図５に示すように、「ＤＧＩ」と、「ファイル識別子」とを対応付けたＤＧＩテーブルを記憶する。なお、「ファイル識別子」は、データ記憶部８０に記憶されるファイル（例えば、ＥＦ）を識別する識別情報である。
図５は、本実施形態のＤＧＩテーブル記憶部６０が記憶するデータ例を示す図である。
図５が示す例では、「ＤＧＩ」が“０ｘ０１０１”に対応するデータが、「ファイル識別子」が“０ｘ０００１”のＥＦに記憶されることを示している。また、「ＤＧＩ」が“０ｘ０２０１”に対応するデータが、「ファイル識別子」が“０ｘ０００２”のＥＦに記憶されることを示している。また、「ＤＧＩ」が“０ｘ０３０１”に対応するデータが、「ファイル識別子」が“０ｘ０００３”のＥＦに記憶されることを示している。
【００２２】
再び図３に戻り、ファイル管理情報記憶部８１は、例えば、ＥＥＰＲＯＭ８により構成され、図６に示すように、「ファイル識別子」と、「ファイル格納先のＥＥＰＲＯＭ８の先頭アドレス」とを対応付けて記憶する。すなわち、ファイル管理情報記憶部８１は、ＥＦと、当該ＥＦに対応するＥＥＰＲＯＭ８の先頭アドレスとを対応付けて記憶する。なお、ファイル管理情報記憶部８１には、例えば、ＥＦが作成（構築）された際に、作成されたＥＦに対する「ファイル識別子」と、「ファイル格納先のＥＥＰＲＯＭ８の先頭アドレス」とが、追加されて記憶される。
【００２３】
図６は、本実施形態のファイル管理情報記憶部８１が記憶するデータ例を示す図である。
図６に示す例では、「ファイル識別子」が“０ｘ０００１”であるＥＦは、「ファイル格納先のＥＥＰＲＯＭ８の先頭アドレス」が“０ｘ８０５０００”であることを示している。また、「ファイル識別子」が“０ｘ０００２”であるＥＦは、「ファイル格納先のＥＥＰＲＯＭ８の先頭アドレス」が“０ｘ８０４Ｆ００”であることを示している。
【００２４】
再び図３に戻り、制御部５０は、例えば、ＣＰＵ５と、ＲＡＭ７と、ＲＯＭ６又はＥＥＰＲＯＭ８とにより実現され、ＩＣカード１を統括的に制御する。制御部５０は、例えば、外部装置２からＩＣカード１に送信された各種コマンドを、ＵＡＲＴ４を介して受信し、受信したコマンドの処理（コマンド処理）を実行する。また、制御部５０は、例えば、実行したコマンド処理の結果を含むレスポンスを、ＵＡＲＴ４を介して外部装置２に出力する。また、制御部５０は、受信処理部５１と、コマンド処理部５２と、送信処理部５３とを備えている。
【００２５】
受信処理部５１（受信部の一例）は、ＵＡＲＴ４が外部装置２から受信したコマンドを受信バッファ７１に記憶させる。受信処理部５１は、例えば、データ記憶部８０に記憶させるデータと、当該データを識別するＤＧＩとを含むＳＴＯＲＥ  ＤＡＴＡコマンドを、ＵＡＲＴ４を介して受信する。ここで、図７を参照して、ＳＴＯＲＥ  ＤＡＴＡコマンドのデータ構成例について説明する。
【００２６】
図７は、ＳＴＯＲＥ  ＤＡＴＡコマンドのデータ構成例を示す図である。
この図に示すように、ＳＴＯＲＥ  ＤＡＴＡコマンド（書き込み要求の一例）は、コマンドヘッダと、コマンドボディとを有している。コマンドヘッダは、「ＣＬＡ」（クラスバイト）、「ＩＮＳ」（命令バイト）、「Ｐ１」（パラメータ１）、及び「Ｐ２」（パラメータ２）を有している。なお、「ＣＬＡ」、「ＩＮＳ」、「Ｐ１」、及び「Ｐ２」のぞれぞれは、１バイトで構成されている。また、コマンドボディは、「Ｌｃ」（データ長）、及び「ＤＡＴＡ」（データ）を有している。なお、「Ｌｃ」は、１バイトで構成され、「ＤＡＴＡ」は、「Ｌｃ」によって指定されたデータ長（例えば、ｍバイト）のデータである。
【００２７】
また、ＳＴＯＲＥ  ＤＡＴＡコマンドの「ＤＡＴＡ」は、「ＤＧＩ」と、「ＤＧＩ長」と、「ＤＧＩ  ＤＡＴＡ」とを含んでいる。なお、「ＤＧＩ」は、２バイトで構成され、「ＤＧＩ長」は、１バイトで構成される。また、「ＤＧＩ  ＤＡＴＡ」は、「ＤＧＩ長」によって指定されたデータ長（例えば、ｎバイト）のデータである。
例えば、図７に示す例では、ＳＴＯＲＥ  ＤＡＴＡコマンドは、「ＤＧＩ」が“０ｘ０１０１”のＥＦに対して、「ＤＧＩ  ＤＡＴＡ」が“０ｘ１１２２３３４４５５”の５バイトのデータを記憶させる（書き込む）処理要求をＩＣカード１に行うことを示している。このように、ＳＴＯＲＥ  ＤＡＴＡコマンドには、データ記憶部８０に記憶させるデータ（「ＤＧＩ  ＤＡＴＡ」）と、データ識別子（「ＤＧＩ」）とを含んでいる。
【００２８】
再び図３に戻り、コマンド処理部５２（処理部の一例）は、受信処理部５１によって受信したコマンドに応じて、各種コマンド処理を実行する。コマンド処理部５２は、例えば、受信バッファ７１に記憶されているコマンドを取得し、コマンドに応じて、各種コマンド処理を実行する。コマンド処理部５２は、例えば、ＳＴＯＲＥ  ＤＡＴＡコマンドを取得した場合に、過去受信ＤＧＩ記憶部７０が記憶する「過去受信ＤＧＩ」（ＤＧＩに関連する情報の一例）に基づいて、受信処理部５１によって受信したＤＧＩに対応するデータがデータ記憶部８０に既に記憶されているか否かを判定する。
【００２９】
例えば、コマンド処理部５２は、ＳＴＯＲＥ  ＤＡＴＡコマンドに含まれるＤＧＩが、過去受信ＤＧＩ記憶部７０に記憶されているか否かに基づいて、当該ＤＧＩに対応するデータがデータ記憶部８０に既に記憶されているか否かを判定する。すなわち、コマンド処理部５２は、例えば、過去受信ＤＧＩ記憶部７０に記憶されている過去受信ＤＧＩを検索し、受信したＳＴＯＲＥ  ＤＡＴＡコマンドに含まれるＤＧＩと一致する過去受信ＤＧＩがあるか否かを判定する。コマンド処理部５２は、受信したＳＴＯＲＥ  ＤＡＴＡコマンドに含まれるＤＧＩが、過去受信ＤＧＩ記憶部７０に記憶されている場合に、当該ＤＧＩに対応するデータがデータ記憶部８０に既に記憶されていると判定する。また、コマンド処理部５２は、受信したＳＴＯＲＥ  ＤＡＴＡコマンドに含まれるＤＧＩが、過去受信ＤＧＩ記憶部７０に記憶されていない場合に、当該ＤＧＩに対応するデータがデータ記憶部８０に記憶されていないと判定する。
【００３０】
コマンド処理部５２は、受信したＤＧＩに対応するデータがデータ記憶部８０に記憶されていない場合に、ＳＴＯＲＥ  ＤＡＴＡコマンドに含まれるデータをデータ記憶部８０に記憶させる(書き込む)。すなわち、コマンド処理部５２は、データ記憶部８０のＤＧＩに対応するＥＦに受信したデータを記憶させる。この場合、コマンド処理部５２は、例えば、ＤＧＩテーブル記憶部６０を参照して、ＤＧＩに対応するＥＦのファイル識別子をＤＧＩテーブル記憶部６０から取得する。また、コマンド処理部５２は、ファイル管理情報記憶部８１を参照し、取得したファイル識別子に対応するＥＥＰＲＯＭ８の先頭アドレスをファイル管理情報記憶部８１から取得する。コマンド処理部５２は、取得したＥＥＰＲＯＭ８の先頭アドレスから順に、受信したデータを記憶させる。すなわち、コマンド処理部５２は、データ記憶部８０のＤＧＩに対応するデータ領域（ＥＦ）に、受信したデータを記憶させる。
また、コマンド処理部５２は、ＳＴＯＲＥ  ＤＡＴＡコマンドに含まれるデータをデータ記憶部８０に記憶させる場合に、ＳＴＯＲＥ  ＤＡＴＡコマンドに含まれるＤＧＩに関する情報を過去受信ＤＧＩ記憶部７０に記憶させる。コマンド処理部５２は、例えば、受信したＤＧＩを、図４に示すように、過去受信ＤＧＩのリストに追加する。
【００３１】
また、コマンド処理部５２は、受信したＤＧＩに対応するデータがデータ記憶部８０に既に記憶されている場合に、ＳＴＯＲＥ  ＤＡＴＡコマンドに含まれるデータと、データ記憶部８０に記憶されている当該ＤＧＩに対応するデータとが一致するか否かを判定する。この場合、コマンド処理部５２は、上述した書き込みの場合と同様に、ＤＧＩテーブル記憶部６０からＤＧＩに対応するＥＦのファイル識別子を取得し、ファイル管理情報記憶部８１から取得したファイル識別子に対応するＥＥＰＲＯＭ８の先頭アドレスを取得する。コマンド処理部５２は、取得したＥＥＰＲＯＭ８の先頭アドレスから読み出したデータと、ＳＴＯＲＥ  ＤＡＴＡコマンドに含まれるデータとが一致するか否かを判定する。すなわち、コマンド処理部５２は、受信したデータと、データ記憶部８０のＤＧＩに対応するデータ領域（ＥＦ）に記憶されているデータとが一致するか否かを判定する。
【００３２】
また、コマンド処理部５２は、上述したＳＴＯＲＥ  ＤＡＴＡコマンドの処理結果であるレスポンス（応答）を、例えば、送信バッファ７２に記憶させる。すなわち、受信したデータをデータ記憶部８０に記憶させる場合には、コマンド処理部５２は、データの書き込みが完了したことを示す情報を含むレスポンスを生成し、生成したレスポンスを送信バッファ７２に記憶させる。また、受信したデータをデータ記憶部８０に記憶しているデータと比較する場合には、コマンド処理部５２は、ＳＴＯＲＥ  ＤＡＴＡコマンドに含まれるデータと、データ記憶部８０に記憶されている当該ＤＧＩに対応するデータとが一致するか否かの判定結果を示す情報を含むレスポンスを生成する。そして、コマンド処理部５２は、生成したレスポンスを送信バッファ７２に記憶させる。
【００３３】
送信処理部５３（送信部の一例）は、コマンド処理部５２が実行したコマンド処理の結果を含むレスポンスを、ＵＡＲＴ４を介して外部装置２に出力する。送信処理部５３は、例えば、送信バッファ７２に記憶されているレスポンスのデータをＵＡＲＴ４に送信し、ＵＡＲＴ４に外部装置２に向けて送信させる。送信処理部５３は、例えば、ＳＴＯＲＥ  ＤＡＴＡコマンドにおいて、受信したデータをデータ記憶部８０に記憶しているデータと比較した場合には、当該判定結果を示す情報を含むレスポンスを、ＵＡＲＴ４を介して送信する。すなわち、送信処理部５３は、コマンド処理部５２によって判定された、上述の一致するか否かの判定結果を示す情報を含むレスポンスを、ＵＡＲＴ４を介して外部装置２に送信する。また、送信処理部５３は、例えば、ＳＴＯＲＥ  ＤＡＴＡコマンドにおいて、データを書き込む場合には、データの書き込みが完了したことを示す情報を含むレスポンスを、ＵＡＲＴ４を介して外部装置２に送信する。
【００３４】
次に、図８を参照して、本実施形態のＩＣカード１の動作について説明する。
図８は、本実施形態のＩＣカード１のＳＴＯＲＥ  ＤＡＴＡコマンド処理の一例を示すフローチャートである。
図８に示すように、外部装置２とＩＣカード１とがコンタクト部３を介して接続され、ＩＣカード１が活性化された状態において、ＩＣカード１は、コマンドを受信したか否かを判定する（ステップＳ１０１）。すなわち、ＩＣカード１の受信処理部５１は、ＵＡＲＴ４を介して、外部装置２からコマンドを受信したか否かを判定する。受信処理部５１は、コマンドを受信した場合（ステップＳ１０１：ＹＥＳ）に、受信したコマンドを受信バッファ７１に記憶させて、処理をステップＳ１０２に進める。また、受信処理部５１は、コマンドを受信していない場合（ステップＳ１０１：ＮＯ）に、処理をステップＳ１０１に戻し、ステップＳ１０１の処理を繰り返す。
【００３５】
ステップＳ１０２において、ＩＣカード１のコマンド処理部５２は、コマンドを取得する。すなわち、コマンド処理部５２は、受信バッファ７１に記憶されているコマンドを取得する。
【００３６】
次に、コマンド処理部５２は、受信したコマンドがＳＴＯＲＥ  ＤＡＴＡコマンドであるか否かを判定する（ステップＳ１０３）。コマンド処理部５２は、受信バッファ７１から取得したコマンドのうちの「ＣＬＡ」及び「ＩＮＳ」に基づいて、受信したコマンドがＳＴＯＲＥ  ＤＡＴＡコマンドであるか否かを判定する。コマンド処理部５２は、受信したコマンドがＳＴＯＲＥ  ＤＡＴＡコマンドである場合（ステップＳ１０３：ＹＥＳ）に、処理をステップＳ１０４に進める。また、コマンド処理部５２は、受信したコマンドがＳＴＯＲＥ  ＤＡＴＡコマンドでない場合（ステップＳ１０３：ＮＯ）に、処理をステップＳ１１０に進める。
【００３７】
ステップＳ１０４において、コマンド処理部５２は、受信したＤＧＩが、過去受信ＤＧＩ記憶部７０に記憶されているか否かを判定する。すなわち、コマンド処理部５２は、例えば、過去受信ＤＧＩ記憶部７０に記憶されている過去受信ＤＧＩを検索し、受信したＳＴＯＲＥ  ＤＡＴＡコマンドに含まれるＤＧＩと一致する過去受信ＤＧＩがあるか否かを判定する。なお、以下の説明において、受信したＤＧＩのことを「受信ＤＧＩ」ということがある。コマンド処理部５２は、受信ＤＧＩが、過去受信ＤＧＩ記憶部７０に記憶されている場合（ステップＳ１０４：ＹＥＳ）に、当該ＤＧＩに対応する「ＤＧＩ  ＤＡＴＡ」（図７参照）が既にデータ記憶部８０に記憶されていると判定し、処理をステップＳ１０８に進める。また、コマンド処理部５２は、受信ＤＧＩが、過去受信ＤＧＩ記憶部７０に記憶されていない場合（ステップＳ１０４：ＮＯ）に、当該ＤＧＩに対応する「ＤＧＩ  ＤＡＴＡ」がまだデータ記憶部８０に記憶されていないと判定し、処理をステップＳ１０５に進める。
【００３８】
ステップＳ１０５において、コマンド処理部５２は、ＳＴＯＲＥ  ＤＡＴＡコマンドに含まれる「ＤＧＩ  ＤＡＴＡ」（図７参照）をＥＥＰＲＯＭ８に書き込む。すなわち、コマンド処理部５２は、「ＤＧＩ  ＤＡＴＡ」を、受信ＤＧＩに対応するデータ記憶部８０のＥＦに記憶させる。具体的には、コマンド処理部５２は、ＤＧＩテーブル記憶部６０を参照して、受信ＤＧＩに対応するＥＦのファイル識別子をＤＧＩテーブル記憶部６０から取得する。次に、コマンド処理部５２は、ファイル管理情報記憶部８１を参照し、取得したファイル識別子に対応するＥＥＰＲＯＭ８の先頭アドレスをファイル管理情報記憶部８１から取得する。そして、コマンド処理部５２は、取得したＥＥＰＲＯＭ８の先頭アドレスから順に、受信したデータ（「ＤＧＩ  ＤＡＴＡ」）を記憶させる。
【００３９】
次に、コマンド処理部５２は、受信ＤＧＩを過去受信ＤＧＩ記憶部７０に記憶させる（ステップＳ１０６）。
次に、ＩＣカード１は、レスポンスを外部装置２に送信する（ステップＳ１０７）。すなわち、コマンド処理部５２は、データの書き込みが完了したことを示す情報を含むレスポンスを生成し、送信バッファ７２に記憶させる。ＩＣカード１の送信処理部５３は、送信バッファ７２に記憶されている当該レスポンスを、ＵＡＲＴ４を介して外部装置２に送信する。ステップＳ１０７の処理後に、送信処理部５３は、処理をステップＳ１０１に戻す。
【００４０】
また、ステップＳ１０８において、コマンド処理部５２は、ＳＴＯＲＥ  ＤＡＴＡコマンドに含まれる「ＤＧＩ  ＤＡＴＡ」（図７参照）と、ＥＥＰＲＯＭ８に記憶されているデータとを比較する。すなわち、コマンド処理部５２は、「ＤＧＩ  ＤＡＴＡ」と、受信ＤＧＩに対応するデータ記憶部８０のＥＦに記憶されているデータとを比較し、両データが一致するか否かを判定する。具体的には、コマンド処理部５２は、ＤＧＩテーブル記憶部６０を参照して、受信ＤＧＩに対応するＥＦのファイル識別子をＤＧＩテーブル記憶部６０から取得する。次に、コマンド処理部５２は、ファイル管理情報記憶部８１を参照し、取得したファイル識別子に対応するＥＥＰＲＯＭ８の先頭アドレスをファイル管理情報記憶部８１から取得する。そして、コマンド処理部５２は、取得したＥＥＰＲＯＭ８の先頭アドレスから順に読み出したデータと、受信したデータ（「ＤＧＩ  ＤＡＴＡ」）とを比較して、両データが一致するか否かを判定する。
【００４１】
次に、ＩＣカード１は、比較結果を示す情報を含むレスポンスを外部装置２に送信する（ステップＳ１０９）。すなわち、コマンド処理部５２は、上述した比較結果（両データが一致するか否かの判定結果）を示す情報を含むレスポンスを生成し、送信バッファ７２に記憶させる。送信処理部５３は、送信バッファ７２に記憶されている当該レスポンスを、ＵＡＲＴ４を介して外部装置２に送信する。ステップＳ１０９の処理後に、送信処理部５３は、処理をステップＳ１０１に戻す。
【００４２】
また、ステップＳ１１０おいて、コマンド処理部５２は、他のコマンド処理を実行する。ここで、他のコマンド処理とは、ＳＴＯＲＥ  ＤＡＴＡコマンド以外の「ＣＬＡ」及び「ＩＮＳ」に対応するコマンドの処理を示す。
【００４３】
次に、ＩＣカード１は、レスポンスを外部装置２に送信する（ステップＳ１１１）。すなわち、コマンド処理部５２は、コマンド処理の結果を含むレスポンスを生成し、送信バッファ７２に記憶させる。送信処理部５３は、送信バッファ７２に記憶されている当該レスポンスを、ＵＡＲＴ４を介して外部装置２に送信する。ステップＳ１１１の処理後に、送信処理部５３は、処理をステップＳ１０１に戻す。
【００４４】
上述したフローチャートにおいて、ステップＳ１０１が、データ記憶部８０に記憶させるデータと、データを識別するＤＧＩとを含むＳＴＯＲＥ  ＤＡＴＡコマンドを、ＵＡＲＴ４を介して受信する受信ステップに対応する。また、ステップＳ１０４が、判定ステップに対応する。判定ステップにおいて、コマンド処理部５２は、過去受信ＤＧＩ記憶部７０が記憶するＤＧＩに関連する情報に基づいて、受信ステップによって受信したＤＧＩに対応するデータがデータ記憶部８０に既に記憶されているか否かを判定する。また、ステップＳ１０５、ステップＳ１０６、及びステップＳ１０８が、処理ステップに対応する。処理ステップにおいて、コマンド処理部５２は、ＤＧＩに対応するデータがデータ記憶部８０に既に記憶されていない場合に、ＳＴＯＲＥ  ＤＡＴＡコマンドに含まれるデータをデータ記憶部８０に記憶させる。また、コマンド処理部５２は、ＤＧＩに対応するデータがデータ記憶部８０に既に記憶されている場合に、ＳＴＯＲＥ  ＤＡＴＡコマンドに含まれるデータと、データ記憶部８０に記憶されているＤＧＩに対応するデータとが一致するか否かを判定する。また、ステップＳ１０９が、処理ステップによって判定された一致するか否かの判定結果を示す情報を含む応答を、ＵＡＲＴ４を介して外部装置２に送信する送信ステップに対応する。
【００４５】
なお、外部装置２は、発行工程において、ＩＣカード１に対して、まず、ＤＧＩ及び書き込むデータを含むＳＴＯＲＥ  ＤＡＴＡコマンドを送信して、データ記憶部８０の当該ＤＧＩに対応するＥＦに、データを記憶させる。そして、外部装置２は、次に、同一のＤＧＩ及びデータを含むＳＴＯＲＥ  ＤＡＴＡコマンドを送信して、前回のＳＴＯＲＥ  ＤＡＴＡコマンドにおいて、データの書き込みが正常に実行されたか否かを確認する。
【００４６】
以上説明したように、本実施形態によるＩＣカード１は、データ記憶部８０と、受信処理部５１（受信部）と、過去受信ＤＧＩ記憶部７０（データ識別子記憶部）と、コマンド処理部５２（処理部）と、送信処理部５３（送信部）とを備えている。データ記憶部８０は、データを記憶する。受信処理部５１は、データ記憶部８０に記憶させるデータと、データを識別するデータ識別子（例えば、ＤＧＩ）とを含む書き込み要求（例えば、ＳＴＯＲＥ  ＤＡＴＡコマンド）を、外部装置２から受信する。また、過去受信ＤＧＩ記憶部７０は、データ記憶部８０に記憶されているデータに対応するＤＧＩに関連する情報（例えば、過去受信ＤＧＩ）を記憶する。コマンド処理部５２は、過去受信ＤＧＩ記憶部７０が記憶する過去受信ＤＧＩに基づいて、受信処理部５１によって受信したＤＧＩに対応するデータがデータ記憶部８０に記憶されているか否かを判定する。コマンド処理部５２は、ＤＧＩに対応するデータがデータ記憶部８０に記憶されていない場合に、ＳＴＯＲＥ  ＤＡＴＡコマンドに含まれるデータをデータ記憶部８０に記憶させる。また、コマンド処理部５２は、受信処理部５１によって受信したＤＧＩに対応するデータがデータ記憶部８０に記憶されている場合に、ＳＴＯＲＥ  ＤＡＴＡコマンドに含まれるデータと、データ記憶部８０に記憶されている受信ＤＧＩに対応するデータとが一致するか否かを判定する。そして、送信処理部５３は、コマンド処理部５２によって判定された一致するか否かの判定結果を示す情報を含むレスポンス（応答）を、外部装置２に送信する。
【００４７】
これにより、本実施形態によるＩＣカード１は、同一の書き込み要求（例えば、ＳＴＯＲＥ  ＤＡＴＡコマンド）によって、データの書き込みと、書き込んだデータの確認との２種類の処理を実行する。そのため、本実施形態によるＩＣカード１は、書き込んだデータを確認する際に、発行コマンドとは異なる読み出しコマンドなどを使用する必要がなく、外部装置２が対応するコマンドの種類を低減することができる。すなわち、本実施形態によるＩＣカード１は、発行工程に使用するコマンドの種類を低減することができる。
【００４８】
また、本実施形態によるＩＣカード１では、コマンド処理部５２が、例えば、ＳＴＯＲＥ  ＤＡＴＡコマンドに含まれるデータと、データ記憶部８０に記憶されている受信ＤＧＩに対応するデータとが一致するか否かを判定する。そのため、本実施形態によるＩＣカード１は、鍵情報やパスワードなどの秘密情報が正常に書き込まれたか否かを検査する際に、ＩＣカード１の外部に、秘密情報を読み出す必要がない。よって、本実施形態によるＩＣカード１は、セキュリティを低下させずに、書き込んだデータを確認することができる。
【００４９】
また、本実施形態では、コマンド処理部５２は、ＳＴＯＲＥ  ＤＡＴＡコマンドに含まれるデータをデータ記憶部８０に記憶させる場合に、ＳＴＯＲＥ  ＤＡＴＡコマンドに含まれるＤＧＩに関する情報（例えば、受信ＤＧＩ）を過去受信ＤＧＩ記憶部７０に記憶させる。
これにより、本実施形態によるＩＣカード１は、例えば、過去受信ＤＧＩ記憶部７０を検索するという簡易な手段により、受信したＤＧＩに対応するデータがデータ記憶部８０に記憶されているか否かを判定することができる。
【００５０】
また、本実施形態では、ＤＧＩに関連する情報には、ＤＧＩが含まれる。すなわち、過去受信ＤＧＩ記憶部７０は、ＤＧＩを、ＤＧＩに関連する情報として記憶する。コマンド処理部５２は、ＳＴＯＲＥ  ＤＡＴＡコマンドに含まれるＤＧＩが、過去受信ＤＧＩ記憶部７０に記憶されているか否かに基づいて、ＤＧＩに対応するデータがデータ記憶部８０に記憶されているか否かを判定する。
これにより、本実施形態によるＩＣカード１は、ＤＧＩが過去受信ＤＧＩ記憶部７０に記憶されているか否かというより簡易な手段により、受信したＤＧＩに対応するデータがデータ記憶部８０に記憶されているか否かを判定することができる。
【００５１】
また、本実施形態では、過去受信ＤＧＩ記憶部７０は、揮発性メモリ（例えば、ＲＡＭ７）である。
これにより、本実施形態によるＩＣカード１は、リセットすることにより、過去受信ＤＧＩ記憶部７０に記憶している過去受信ＤＧＩを消去することができる。よって、本実施形態によるＩＣカード１は、発行工程に使用する過去受信ＤＧＩを消去できるので、発行工程の影響を残さずに、アプリケーションに利用することができる。
【００５２】
また、本実施形態によれるＩＣモジュール１０は、上述したＵＡＲＴ４（通信部）と、受信処理部５１（受信部）と、過去受信ＤＧＩ記憶部７０（データ識別子記憶部）と、コマンド処理部５２（処理部）と、送信処理部５３（送信部）とを備えている。
これにより、本実施形態によれるＩＣモジュール１０は、ＩＣカード１と同様の効果を奏する。
【００５３】
（第２の実施形態）
次に、図面を参照して、第２の実施形態のＩＣカードについて説明する。
第２の実施形態では、上述した過去受信ＤＧＩ記憶部７０を用いずに、受信したＤＧＩに対応するデータがデータ記憶部８０に既に記憶されているか否かを判定する一例について説明する。なお、本実施形態では、ＤＧＩに関連する情報は、ＤＧＩに対応するデータ領域に既にデータが記憶されているか否かを示す情報である。
【００５４】
図９は、第２の実施形態のＩＣカード１ａの機能構成例を示すブロック図である。
図９に示すように、ＩＣカード１ａは、ＵＡＲＴ４と、制御部５０ａと、ＤＧＩテーブル記憶部６０と、データ記憶部８０と、ファイル管理情報記憶部８１ａとを備えている。
なお、本実施形態のＩＣカード１ａの外観図及びハード構成は、図１及び図２に示す第１の実施形態と同様であるのでその説明を省略する。また、図９において、図３に示す構成と同一の構成については同一の符号を付し、その説明を省略する。
【００５５】
ファイル管理情報記憶部８１ａ（データ識別子記憶部の一例）は、例えば、ＥＥＰＲＯＭ８により構成され、図１０に示すように、「ファイル識別子」と、「ファイル格納先のＥＥＰＲＯＭ８の先頭アドレス」と、「書き込み済みフラグ」とを対応付けて記憶する。ここで、「書き込み済みフラグ」は、ＤＧＩに対応するＥＦ（データ領域）に既にデータが記憶されているか否かを示す情報である。例えば、「書き込み済みフラグ」が“１”である場合に、当該ＥＦにデータが書き込み済みであり、「書き込み済みフラグ」が“０”である場合に、当該ＥＦにデータが未書き込みである。このように、ファイル管理情報記憶部８１ａは、ＥＦと、当該ＥＦに対応するＥＥＰＲＯＭ８の先頭アドレスとを対応付けて記憶するとともに、既にデータが記憶されているか否かを示す情報を記憶する。すなわち、ファイル管理情報記憶部８１ａは、ＤＧＩに対応するＥＦに既にデータが記憶されているか否かを示す情報を、ＤＧＩに関連する情報として記憶する。なお、ファイル管理情報記憶部８１ａには、例えば、ＥＦが作成（構築）された際に、作成されたＥＦに対する「ファイル識別子」と、「ファイル格納先のＥＥＰＲＯＭ８の先頭アドレス」と“０”の「書き込み済みフラグ」とが、追加されて記憶される。
【００５６】
図１０は、本実施形態のファイル管理情報記憶部８１ａが記憶するデータ例を示す図である。
図１０に示す例では、「ファイル識別子」が“０ｘ０００１”であるＥＦは、「ファイル格納先のＥＥＰＲＯＭ８の先頭アドレス」が“０ｘ８０５０００”であることを示している。また、この「ファイル識別子」が“０ｘ０００１”であるＥＦは、「書き込み済みフラグ」が“１”であり、既にデータが書き込み済みである（ＳＴＯＲＥ  ＤＡＴＡコマンドが既に実行されている）ことお示している。また、「ファイル識別子」が“０ｘ０００３”であるＥＦは、「ファイル格納先のＥＥＰＲＯＭ８の先頭アドレス」が“０ｘ８０４Ａ５０”であることを示している。また、この「ファイル識別子」が“０ｘ０００３”であるＥＦは、「書き込み済みフラグ」が“０”であり、まだデータが書き込まれていない（ＳＴＯＲＥ  ＤＡＴＡコマンドがまだ実行されていない）ことお示している。
【００５７】
図９に戻り、制御部５０ａは、例えば、ＣＰＵ５と、ＲＡＭ７と、ＲＯＭ６又はＥＥＰＲＯＭ８とにより実現され、ＩＣカード１ａを統括的に制御する。制御部５０ａは、例えば、受信処理部５１と、コマンド処理部５２ａと、送信処理部５３とを備えている。
コマンド処理部５２ａ（処理部の一例）は、基本的な機能は、第１の実施形態のコマンド処理部５２と同様であるが、ＳＴＯＲＥ  ＤＡＴＡコマンドが既に実行されているか否かの判定方法が異なる。コマンド処理部５２ａは、コマンド処理部５２は、ＤＧＩに対応するＥＦに既にデータが記憶されているか否かを示す情報（例えば、「書き込み済みフラグ」）に基づいて、ＤＧＩに対するＳＴＯＲＥ  ＤＡＴＡコマンドが既に実行されているか否かを判定する。
【００５８】
例えば、コマンド処理部５２ａは、まず、ＤＧＩテーブル記憶部６０を参照して、受信ＤＧＩに対応するＥＦのファイル識別子をＤＧＩテーブル記憶部６０から取得する。次に、コマンド処理部５２ａは、ファイル管理情報記憶部８１ａを参照し、取得したファイル識別子に対応する書き込み済みフラグをファイル管理情報記憶部８１ａから取得する。コマンド処理部５２ａは、取得した書き込み済みフラグが“１”である場合に、対応するデータがデータ記憶部８０に既に記憶されていると判定する。また、コマンド処理部５２ａは、取得した書き込み済みフラグが“０”である場合に、ＳＴＯＲＥ  ＤＡＴＡコマンドがまだ実行されていないと判定する。このように、コマンド処理部５２ａは、受信したＤＧＩを用いてファイル管理情報記憶部８１ａを参照して得られる、ＤＧＩに対応するデータ領域（ＥＦ）に既にデータが記憶されているか否かを示す情報（書き込み済みフラグ）に基づいて、ＤＧＩに対応するデータがデータ記憶部８０に既に記憶されているか否かを判定する。
【００５９】
また、コマンド処理部５２ａは、受信したＤＧＩに対応するデータがデータ記憶部８０に既に記憶されていない場合に、ＳＴＯＲＥ  ＤＡＴＡコマンドに含まれるデータをデータ記憶部８０に記憶させる(書き込む)とともに、ファイル管理情報記憶部８１ａの上述した書き込み済みフラグを“１”に変更する。このように、コマンド処理部５２ａは、ＳＴＯＲＥ  ＤＡＴＡコマンドに含まれるデータをデータ記憶部８０に記憶させる場合に、ＳＴＯＲＥ  ＤＡＴＡコマンドに含まれるＤＧＩに関する情報（例えば、書き込み済みフラグの“１”）をファイル管理情報記憶部８１ａに記憶させる。
【００６０】
次に、図１１を参照して、本実施形態のＩＣカード１ａの動作について説明する。
図１１は、本実施形態のＩＣカード１ａのＳＴＯＲＥ  ＤＡＴＡコマンド処理の一例を示すフローチャートである。
図１１において、ステップＳ２０１からステップＳ２０３までの処理は、図８に示すステップＳ１０１からステップＳ１０３までの処理と同様であるので、ここではその説明を省略する。
【００６１】
ステップＳ２０４において、コマンド処理部５２ａは、受信したＤＧＩに対応する書き込み済みフラグが“１”であるか否かを判定する。すなわち、コマンド処理部５２ａは、例えば、ＤＧＩテーブル記憶部６０を参照して、受信ＤＧＩに対応するＥＦのファイル識別子をＤＧＩテーブル記憶部６０から取得する。コマンド処理部５２ａは、ファイル管理情報記憶部８１ａを参照し、取得したファイル識別子に対応する書き込み済みフラグが“１”であるか否かを判定する。コマンド処理部５２ａは、受信したＤＧＩに対応する書き込み済みフラグが“１”である場合（ステップＳ２０４：ＹＥＳ）に、当該ＤＧＩに対応するデータがデータ記憶部８０に既に記憶されていると判定し、処理をステップＳ２０８に進める。また、コマンド処理部５２ａは、受信したＤＧＩに対応する書き込み済みフラグが“０”である場合（ステップＳ２０４：ＮＯ）に、当該ＤＧＩに対応するデータがデータ記憶部８０にまだ記憶されていないと判定し、処理をステップＳ２０５に進める。
【００６２】
続くステップＳ２０５の処理、及びステップＳ２０７からステップＳ２１１までの処理は、図８に示すステップＳ１０５の処理、及びステップＳ１０７からステップＳ１１１までの処理と同様であるので、ここではその説明を省略する。
ステップＳ２０６において、コマンド処理部５２ａは、ファイル管理情報記憶部８１ａ内の受信したＤＧＩに対応する書き込み済みフラグに“１”を記憶させる。すなわち、コマンド処理部５２ａは、受信したＤＧＩに対応する書き込み済みフラグを“１”に変更する。
【００６３】
以上説明したように、本実施形態によるＩＣカード１ａは、ＵＡＲＴ４（通信部）と、受信処理部５１（受信部）と、ファイル管理情報記憶部８１ａ（データ識別子記憶部）と、コマンド処理部５２ａ（処理部）と、送信処理部５３（送信部）とを備えている。
これにより、本実施形態によるＩＣカード１ａは、第１の実施形態と同様に、書き込んだデータを確認する際に、発行コマンドとは異なる読み出しコマンドなどを使用する必要がなく、外部装置２が対応するコマンドの種類を低減することができる。すなわち、本実施形態によるＩＣカード１ａは、第１の実施形態と同様に、発行工程に使用するコマンドの種類を低減することができる。
【００６４】
また、本実施形態では、ＤＧＩに関連する情報には、ＤＧＩに対応するデータ領域（例えば、ＥＦ）に既にデータが記憶されているか否かを示す情報（例えば、書き込み済みフラグ）が含まれる。すなわち、ファイル管理情報記憶部８１ａは、ＤＧＩに対応するデータ領域（例えば、ＥＦ）に既にデータが記憶されているか否かを示す情報（例えば、書き込み済みフラグ）を、ＤＧＩに関連する情報として記憶する。コマンド処理部５２ａは、受信したＤＧＩを用いてファイル管理情報記憶部８１ａを参照して得られる、ＤＧＩに対応するデータ領域（例えば、ＥＦ）に既にデータが記憶されているか否かを示す情報（例えば、書き込み済みフラグ）に基づいて、ＤＧＩに対応するデータがデータ記憶部８０に既に記憶されているか否かを判定する。
これにより、本実施形態によるＩＣカード１ａは、ＤＧＩに対応するデータ領域（例えば、ＥＦ）に既にデータが記憶されているか否かを示す情報（例えば、書き込み済みフラグ）により簡易な手段により、ＤＧＩに対応するデータがデータ記憶部８０に既に記憶されているか否かを判定することができる。
【００６５】
また、本実施形態では、ファイル管理情報記憶部８１ａ（データ識別子記憶部）は、電気的に書き換え可能な不揮発性メモリ（例えば、ＥＥＰＲＯＭ８）である。
これにより、本実施形態によるＩＣカード１ａは、リセットされてもＤＧＩに関連する情報が消えないため、発行工程の途中でリセットを行う場合や、発行工程を複数の工程に分割する場合などに対応することができる。
【００６６】
上記の第１の実施形態では過去受信ＤＧＩ記憶部７０は、ＲＡＭ７により構成される例を説明したが、電気的に書き換え可能な不揮発性メモリ（例えば、ＥＥＰＲＯＭ８）によって構成されるようにしてもよい。これにより、ＩＣカード１は、第２の実施形態と同様に、リセットされても過去受信ＤＧＩが消えないため、発行工程の途中でリセットを行う場合や、発行工程を複数の工程に分割する場合などに対応することができる。
【００６７】
また、上記の各実施形態において、書き込み要求（書き込みコマンド）の一例として、ＳＴＯＲＥ  ＤＡＴＡコマンドにおける例を説明したが、他の書き込み要求（書き込みコマンド）に対して適用してもよい。
また、上記の各実施形態において、ＩＣカード１（１ａ）は、コンタクト部３を介して外部装置２と通信する例を説明したが、コイルなどを用いたコンタクトレスインターフェースを介して外部装置２と通信するように構成してもよい。
【００６８】
また、上記の各実施形態において、ＩＣカード１（１ａ）は、書き換え可能な不揮発性メモリとして、ＥＥＰＲＯＭ８を備える構成としたが、これに限定されるものではない。例えば、ＩＣカード１（１ａ）は、ＥＥＰＲＯＭ８の代わりに、フラッシュメモリ、ＦｅＲＡＭ（Ferroelectric Random Access Memory：強誘電体メモリ）などを備えてもよい。
【００６９】
以上説明した少なくともひとつの実施形態によれば、データ記憶部８０に記憶させるデータと、データを識別するＤＧＩとを含むＳＴＯＲＥ  ＤＡＴＡコマンドを、外部装置２から受信する受信処理部５１と、データ記憶部８０に記憶されているデータに対応するＤＧＩに関連する情報を記憶する過去受信ＤＧＩ記憶部７０と、過去受信ＤＧＩ記憶部７０が記憶するＤＧＩに関連する情報に基づいて、受信したＤＧＩに対応するデータがデータ記憶部８０に記憶されているか否かを判定し、ＤＧＩに対応するデータがデータ記憶部８０に記憶されていない場合に、ＳＴＯＲＥ  ＤＡＴＡコマンドに含まれるデータをデータ記憶部８０に記憶させ、ＤＧＩに対応するデータがデータ記憶部８０に記憶されている場合に、ＳＴＯＲＥ  ＤＡＴＡコマンドに含まれるデータと、データ記憶部８０に記憶されているＤＧＩに対応するデータとが一致するか否かを判定するコマンド処理部５２と、コマンド処理部５２によって判定された一致するか否かの判定結果を示す情報を含むレスポンスを、外部装置２に送信する送信処理部５３とを持つことにより、発行工程に使用するコマンドの種類を低減することができる。
【００７０】
上記実施形態は、以下のように表現することができる。
コンタクト部を介して外部装置と通信する通信部と、
データ記憶部に記憶させるデータと、前記データを識別するデータ識別子とを含む書き込み要求を、前記通信部を介して受信する受信部と、
前記データ記憶部に記憶されているデータに対応する前記データ識別子を記憶するデータ識別子記憶部と、
前記受信部によって受信した前記データ識別子に対する前記書き込み要求に含まれる前記データ識別子が、前記データ識別子記憶部に記憶されていない場合に、前記書き込み要求に含まれるデータを前記データ記憶部に記憶させ、前記データ識別子が前記データ識別子記憶部に記憶されている場合に、前記書き込み要求に含まれるデータと、前記データ記憶部に記憶されている前記データ識別子に対応するデータとが一致するか否かを判定する処理部と、
前記処理部によって判定された前記一致するか否かの判定結果を示す情報を含む応答を、前記通信部を介して前記外部装置に送信する送信部と
を備えるＩＣカード。
【００７１】
なお、実施形態におけるＩＣカード１（１ａ）が備える各構成の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより上述したＩＣカード１（１ａ）が備える各構成における処理を行ってもよい。ここで、「記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行する」とは、コンピュータシステムにプログラムをインストールすることを含む。ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
【００７２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【００７３】
１，１ａ…ＩＣカード、２…外部装置、３…コンタクト部、４…ＵＡＲＴ、５…ＣＰＵ、６…ＲＯＭ、７…ＲＡＭ、８…ＥＥＰＲＯＭ、１０‥ＩＣモジュール、５０，５０ａ…制御部、５１…受信処理部、５２，５２ａ…コマンド処理部、５３…送信処理部、６０…ＤＧＩテーブル記憶部、７０…過去受信ＤＧＩ記憶部、７１…受信バッファ、７２…送信バッファ、８０…データ記憶部、８１，８１ａ…ファイル管理情報記憶部、１００…ＩＣチップ、ＰＴ…カード基材
【図１】
0006499052.tif 000002
【図２】
0006499052.tif 000003
【図３】
0006499052.tif 000004
【図４】
0006499052.tif 000005
【図５】
0006499052.tif 000006
【図６】
0006499052.tif 000007
【図７】
0006499052.tif 000008
【図８】
0006499052.tif 000009
【図９】
0006499052.tif 000010
【図１０】
0006499052.tif 000011
【図１１】
0006499052.tif 000012