(57)【特許請求の範囲】
【請求項１】
ファイル、前記ファイルを制御するための定義情報、前記定義情報により指定され前記ファイル毎に設定可能なプログラム、及びコマンドに対応するコマンド処理を実行するためのコマンド実行情報を記憶可能な記憶手段と、
前記コマンドを受信する受信手段と、
前記コマンドを解釈し、前記コマンド処理を開始する実行手段と、
を備え、
前記実行手段は、前記コマンド処理の開始に伴い、前記ファイル毎に設定可能な前記定義情報に基づき前記プログラムが存在しないと判定した場合には前記コマンド実行情報に基づく前記コマンド処理を実行し、前記ファイル毎に設定可能な前記定義情報に基づき前記プログラムが存在すると判定した場合には前記定義情報に基づき前記プログラムを実行し前記プログラムの実行後に前記コマンド実行情報に基づき前記コマンド処理を実行する通信媒体。
【請求項２】
前記受信手段は、ファイル創生コマンドを受信し、
前記実行手段は、前記ファイル創生コマンドを解釈し、前記記憶手段に対して前記定義情報及び前記プログラムを書き込む請求項１記載の通信媒体。
【請求項３】
前記受信手段は、変更コマンドを受信し、
前記実行手段は、前記変更コマンドを解釈し、前記変更コマンドに含まれた変更プログラムに基づき前記記憶手段に記憶された前記プログラムを変更する請求項１又は２記載の通信媒体。
【請求項４】
前記記憶手段は、書き換え可能な不揮発性のデータメモリ、及び書き換え不能なプログラムメモリを備え、
前記データメモリは、前記定義情報及び前記プログラムを記憶し、
前記プログラムメモリは、前記コマンド実行情報を記憶する請求項１乃至３の何れか１項記載の通信媒体。
【請求項５】
前記ファイルは、アプリケーションに対応付けられている請求項１乃至４の何れか１記載の通信媒体。
【請求項６】
ＩＣモジュールが埋め込まれたカード本体により構成されるＩＣカードであって、
前記ＩＣモジュールは、
ファイル、前記ファイルを制御するための定義情報、前記定義情報により指定され前記ファイル毎に設定可能なプログラム、及びコマンドに対応するコマンド処理を実行するためのコマンド実行情報を記憶可能な記憶手段と、
前記コマンドを受信する受信手段と、
前記コマンドを解釈し、前記コマンド処理を開始する実行手段と、
を備え、
前記実行手段は、前記コマンド処理の開始に伴い、前記ファイル毎に設定可能な前記定義情報に基づき前記プログラムが存在しないと判定した場合には前記コマンド実行情報に基づく前記コマンド処理を実行し、前記ファイル毎に設定可能な前記定義情報に基づき前記プログラムが存在すると判定した場合には前記定義情報に基づき前記プログラムを実行し前記プログラムの実行後に前記コマンド実行情報に基づき前記コマンド処理を実行するＩＣカード。
【請求項７】
前記ファイルは、アプリケーションに対応付けられている請求項６記載のＩＣカード。
【請求項８】
ファイル、前記ファイルを制御するための定義情報、前記定義情報により指定され前記ファイル毎に設定可能なプログラム、及びコマンドに対応するコマンド処理を実行するためのコマンド実行情報を記憶可能な通信媒体に適用可能なコマンド実行方法であって、
コマンドを受信し、
前記コマンドを解釈し、前記コマンド処理を開始し、
前記コマンド処理の開始に伴い、前記ファイル毎に設定可能な前記定義情報に基づき前記プログラムが存在しないと判定した場合には前記コマンド実行情報に基づく前記コマンド処理を実行し、前記ファイル毎に設定可能な前記定義情報に基づき前記プログラムが存在すると判定した場合には前記定義情報に基づき前記プログラムを実行し前記プログラムの実行後に前記コマンド実行情報に基づき前記コマンド処理を実行するコマンド実行方法。
【請求項９】
前記ファイルは、アプリケーションに対応付けられている請求項８記載のコマンド実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、通信媒体、ＩＣカード、及びコマンド実行方法に関する。
【背景技術】
【０００２】
近年、ＩＣカードと称される携帯可能電子装置（通信媒体）の普及が目覚ましい。例えば、ＩＣカードは、クレジットカード、定期券、旅券、免許証、その他の商取引の決済に使われるだけでなく、社員証、会員証、保険証などのＩＤカードとしても様々な分野で使用されている。
【０００３】
ＩＣカードは、データの書き込み、書き換え可能な不揮発性のデータメモリ及びＣＰＵなどの制御素子を有するＩＣ（集積回路）チップを内蔵する。また、ＩＣカードリーダライタ等のＩＣカード処理装置は、ＩＣカードに対してリードコマンドを送信しＩＣカードからデータを読み出したり、ＩＣカードに対してライトコマンドを送信しＩＣカードに対してデータを書き込んだりする。
【０００４】
ＩＣカードは、想定される多数の機能に対応するためのコマンド処理をサポートするように構成される。ＩＣカード処理装置は、ＩＣカードに対してコマンドを送信し、ＩＣカードは、コマンドを受信し、コマンドのパラメータによるオプション選択により、コマンド処理を選択する。
【０００５】
ＩＣカードは、上記したように構成されるため、コマンドにより誤った指定がなされた場合、ＩＣカードは、指定された通りに、誤ったコマンド処理を実行してしまうことがある。また、ＩＣカードは、上記したように構成されているため、特定のアプリケーションにおいては、不要な機能までサポートしていることになり、特定のアプリケーションの処理負荷が重くなることがある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−１３２３１５号公報
【特許文献２】特開２００２−４９９０４号公報
【特許文献３】特許第３８９９２２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明が解決しようとする課題は、柔軟なコマンド処理を実行することができる通信媒体、ＩＣカード、コマンド実行方法を提供することである。
【課題を解決するための手段】
【０００８】
実施形態の通信媒体は、記憶手段と、受信手段と、実行手段とを備える。前記記憶手段は、ファイルを記憶し、前記ファイルを制御するための定義情報を記憶し、前記定義情報により指定されるプログラムを記憶し、コマンドに対応するコマンド処理を実行するためのコマンド実行情報を記憶する。前記受信手段は、前記コマンドを受信する。前記実行手段は、前記コマンドを解釈し、前記定義情報に基づき前記プログラムを実行し、前記コマンド実行情報に基づき前記コマンド処理を実行する。
【図面の簡単な説明】
【０００９】
【図１】実施形態に係るＩＣカードシステムの概略構成の一例を示す図である。
【図２】実施形態に係るＩＣカードの概略構成の一例を示す図である。
【図３】実施形態に係るＩＣカードのデータメモリのデータ構造の一例を示す図である。
【図４】実施形態に係るファイル創生コマンドのフォーマットの一例を示す。
【図５】実施形態に係るCommand data field (Data)に格納されるデータの一例を示す図である。
【図６】実施形態に係る読み出しコマンドのフォーマットの一例を示す図である。
【図７】実施形態に係るプログラムメモリに格納される各プログラムコードの一例を示す図である。
【図８】実施形態に係るファイル創生コマンドのコマンド処理の一例を示すフローチャートである。
【図９】実施形態に係る読み出しコマンドのコマンド処理の一例を示すフローチャートである。
【図１０】実施形態に係るプログラムコード或いは設定値を変更、削除するための修正コマンドの一例を示す図である。
【図１１】実施形態に係る修正コマンドのCommand data field (Data)に格納されるデータの一例を示す図である。
【図１２】実施形態に係るデータメモリのデータ構造の一例を示す図である。
【図１３】実施形態に係る読み出しコマンドのコマンド処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、実施形態について図面を参照して説明する。
【００１１】
図１は、実施形態に係るＩＣカードシステム（別称、スマートカードシステム）の概略構成の一例を示す図である。図１に示すように、ＩＣカードシステムは、ＩＣカード（通信媒体）１０１、カードリーダ・ライタ１０２、端末１０３、キーボード１０４、ディスプレイ１０５、プリンタ１０６を備える。ＩＣカード１０１は、カードリーダ／ライタ１０２を介して、端末１０３と接続可能に構成されている。端末１０３は、キーボード１０４、ディスプレイ１０５、プリンタ１０６と接続する。これにより、端末１は、カードリーダ・ライタ１０２を介して、ＩＣカード１０１と通信可能となり、端末１（カードリーダ・ライタ１０２）は、ＩＣカード１０１に対してデータを送信したり、ＩＣカード１０１からのデータを受信したりすることができる。
【００１２】
図２は、実施形態に係るＩＣカード１０１の概略構成の一例を示す図である。図２に示すように、ＩＣカード１０１は、プラスチック等のカード本体により構成され、１以上のＩＣチップ２００（ＩＣモジュール）を備える。例えば、１以上のＩＣチップ２００は、ＩＣカード１０１のカード本体に埋設されている。１以上のＩＣチップ２００が、制御素子２０１、データメモリ（不揮発性メモリ）２０２、ワーキングメモリ２０３、プログラムメモリ２０４、通信部２０５、アドレス監視回路２０６を備えている。
【００１３】
制御素子２０１は、例えば、ＣＰＵ等の制御素子により構成され、コマンドに対応する処理を実行する実行手段として機能する。つまり、制御素子２０１は、端末１（カードリーダ・ライタ１０２）から送信されるコマンドを解釈し、コマンドに対応する処理を実行したり、端末２に対してコマンド実行結果（応答）の返信を制御したりする。データメモリ２０２は、記憶内容が消去可能な不揮発性のデータメモリであり、各種データの記憶に使用され、例えばＥＥＰＲＯＭで構成されている。ワーキングメモリ２０３は、制御素子２０１により処理されるデータ及び処理されたデータを一時的に保持するためのメモリであり、例えばＲＡＭで構成される。プログラムメモリ２０４は、例えばマスクＲＯＭで構成され、制御素子２０１のプログラムなどを記憶する。通信部２０５は、カード本体の表面に配置された端子、及びカード本体の内部に埋設されたアンテナのうちの少なくとも一方を含み、端子又はアンテナを介してカードリーダ・ライタ１０２と通信する。
【００１４】
図３は、実施形態に係るＩＣカード１０１のデータメモリ２０２のデータ構造の一例を示す図である。ここでは、データメモリ２０２は、ファイルを制御するために使用される定義情報を格納するための定義情報領域を含む。例えば、上記ファイルは、アプリケーションを実行するためのファイルである。定義情報は、ＥＦ（Elementary File）識別情報３０２、ＥＦ−ＩＤ３０３、データアドレス３０４、データサイズ３０５、プログラムアドレス３０６、プログラムサイズ３０７を含む。
【００１５】
また、データメモリ２０２は、ＥＦのデータ本体（ファイル）が格納されるデータ領域３０８を含む。なお、本実施形態では、ＥＦを例に挙げて説明するが、ＥＦに替えてＤＦ(Dedicated File）であってもかまわない。また、データメモリ２０２は、プログラム領域３０９を含む。プログラム領域３０９は、プログラムコードを格納する。このプログラムコードは、ＥＦを参照するコマンド処理を実行する前に、実行するプログラムコードである。
【００１６】
定義情報領域について説明する。ＥＦ識別情報３０２は、ＥＦであることを識別するための情報である。ＥＦ−ＩＤ３０３は、外部からＥＦを参照する際に使用するＥＦの識別情報である。データアドレス３０４は、データ領域３０８の先頭アドレスを示す。データサイズ３０５は、データ領域３０８のサイズを示す情報である。プログラムアドレス３０６は、プログラム領域３０９の先頭アドレスを示す。プログラムサイズ３０７は、プログラム領域３０９のサイズを示す情報である。プログラム領域の先頭アドレスが、未設定である場合、すなわち、プログラムアドレス３０６が‘FFFFFFFF’を示す場合、プログラム領域３０９が設定されていないことを示す。また、プログラムサイズ３０７が‘0000’を示す場合、プログラム領域３０９にプログラムが設定されていないことを示す。上記二つのケースでは、何れも、プログラム領域３０９にプログラムが設定されていないものとして、処理される。
【００１７】
図４は、実施形態に係るファイル創生コマンドのフォーマットの一例を示す。図４に示すように、ファイル創生コマンドは、ISO/IEC 7816-4のClass byte（CLA）４０１、ISO/IEC 7816-4のInstruction byte (INS)４０２、ISO/IEC 7816-4のParameter byte (P1)４０３、ISO/IEC 7816-4のParameter byte (P2)４０４、ISO/IEC 7816-4のLc field(Lc)４０５、ISO/IEC 7816-4のCommand data field (Data)４０６を含む。
【００１８】
図５は、実施形態に係るCommand data field (Data)４０６に格納されるデータの一例を示す図である。図５に示すように、例えば、Command data field (Data)４０６は、ファイル創生情報５０３及びプログラム情報５０６を含む。さらに詳しく説明すると、Command data field (Data)４０６は、ファイル創生情報５０３を識別するためのTag５０１、ファイル創生情報５０３の長さを示す情報Len５０２、及びファイル創生情報５０３を含み、さらに、プログラム情報５０６を識別するためのTag５０４、プログラム情報５０６の長さを示す情報Len５０５、及びプログラム情報５０６を含む。
【００１９】
ファイル創生情報５０３は、ＥＦ識別情報３０２、ＥＦ−ＩＤ３０３、ＥＦ−ＩＤ３０３、データアドレス３０４、データサイズ３０５、プログラムアドレス３０６、プログラムサイズ３０７などの定義情報領域に格納される情報を含む。プログラム情報５０６は、プログラム領域に格納するためのプログラムコードを含む。プログラム情報５０６は、プログラムではなく、設定値を含むこともある。
【００２０】
図６は、実施形態に係る読み出しコマンドのフォーマットの一例を示す図である。図６に示すように、読み出しコマンドは、ISO/IEC 7816-4のClass byte（CLA）６０１、ISO/IEC 7816-4のInstruction byte (INS)６０２、ISO/IEC 7816-4のParameter byte (P1)６０３、ISO/IEC 7816-4のParameter byte (P2)６０４、ISO/IEC 7816-4のLe field(Le)６０５を含む。
【００２１】
図７は、実施形態に係るプログラムメモリ２０４に格納される各プログラムコードの一例を示す図である。図７に示すように、プログラムメモリ２０４は、ファイル創生コマンドのプログラムコード７０２、読み出しコマンドのプログラムコード（コマンド実行情報）７０３を含む。
【００２２】
図８は、実施形態に係るファイル創生コマンドのコマンド処理の一例を示すフローチャートである。ＩＣカード１０１通信部２０５は、端末１（カードリーダ・ライタ１０２）からのファイル創生コマンドを受信し、制御素子２０１は、ファイル創生コマンドのコマンド処理を開始する(ＳＴ８０１)。
【００２３】
例えば、最初に、制御素子２０１は、パラメータチェック処理を実行する(ＳＴ８０２)。つまり、制御素子２０１は、ファイル創生コマンドに含まれたP1、P2の値が正しいかどうかをチェックする(ＳＴ８０２)。
【００２４】
P1、P2の値が正しければ(ＳＴ８０２、ＹＥＳ)、さらに制御素子２０１は、データフォーマットチェック処理を実行する(ＳＴ８０３)。つまり、制御素子２０１は、図５に示すTag５０１、Len５０２、Tag５０４、Len５０５が正しいか否かをチェックする。
【００２５】
Tag５０１、Len５０２、Tag５０４、Len５０５が正しければ(ＳＴ８０３、ＹＥＳ)、さらに制御素子２０１は、ファイル創生情報チェック処理を実行する(ＳＴ８０４)。つまり、制御素子２０１は、ファイル創生情報５０３に含まれたＥＦ識別情報、ＥＦ−ＩＤの妥当性をチェックする。
【００２６】
制御素子２０１が、パラメータチェック処理、データフォーマットチェック処理、ファイル創生情報チェックの何れかにおいて異常を検出すると(ＳＴ８０２、ＮＯ)(ＳＴ８０３、ＮＯ)(ＳＴ８０４、ＮＯ)、異常終了応答を実行する(ＳＴ８０９)。例えば、制御素子２０１は、異常終了応答の実行に対応して、ISO/IEC 7816-4のstatus bytesでエラーを出力する。
【００２７】
ファイル創生情報５０３に含まれたＥＦ識別情報、ＥＦ−ＩＤの妥当性が確認されれば(ＳＴ８０４、ＹＥＳ)、制御素子２０１は、ファイル創生情報５０３を定義情報領域に格納するために、ファイル創生情報５０３の形式変換処理を実行する(ＳＴ８０５)。さらに、制御素子２０１は、形式変換処理されたファイル創生情報５０３（つまり定義情報）を定義情報領域に書き込む(ＳＴ８０６)。さらに制御素子２０１は、プログラム情報５０６をプログラム領域３０９へ書き込む(ＳＴ８０７)。そして、制御素子２０１は、正常終了処理を実行する(ＳＴ８０８)。例えば、制御素子は、正常終了処理の実行に対応して、ISO/IEC 7816-4のstatus bytesを出力する。以上で、制御素子２０１は、ファイル創生コマンドのコマンド処理を終了する(ＳＴ８１０)。
【００２８】
図９は、実施形態に係る読み出しコマンドのコマンド処理の一例を示すフローチャートである。ＩＣカード１０１通信部２０５は、端末１（カードリーダ・ライタ１０２）からの読み出しコマンドを受信し、制御素子２０１は、読み出しコマンドのコマンド処理を開始する(ＳＴ９０１)。
【００２９】
例えば、最初に、制御素子２０１は、パラメータチェック処理を実行する(ＳＴ９０２)。つまり、制御素子２０１は、読み出しコマンドに含まれたP1、P2の値が正しいかどうかをチェックする(ＳＴ９０２)。P1、P2の値が正しければ(ＳＴ９０２、ＹＥＳ)、さらに制御素子２０１は、定義情報取得処理を実行する(ＳＴ９０３)。例えば、読み出しコマンドは、ＥＦ−ＩＤを含み、制御素子２０１は、読み出しコマンドに含まれたＥＦ−ＩＤに基づき、データメモリ２０２に記憶された定義情報を取得する。つまり、制御素子２０１は、読み出しコマンドに含まれたＥＦ−ＩＤと同じＥＦ−ＩＤを含む定義情報を取得する。
【００３０】
なお、制御素子２０１が、パラメータチェック処理、定義情報取得処理の何れかにおいて異常を検出すると(ＳＴ９０２、ＮＯ)(ＳＴ９０３、ＮＯ)、異常終了応答を実行する(ＳＴ９０８)。例えば、制御素子２０１は、異常終了応答の実行に対応して、ISO/IEC 7816-4のstatus bytesでエラーを出力する。
【００３１】
異常が検出されなければ(ＳＴ９０２、ＹＥＳ)(ＳＴ９０３、ＹＥＳ)、制御素子２０１は、定義情報中のプログラムアドレス３０６をチェックする(ＳＴ９０４)。プログラムアドレス３０６が、‘FFFFFFFF’を示す場合(ＳＴ９０４、ＹＥＳ)、制御素子２０１は、ＥＦ毎に設定されるプログラムが存在しない（未登録）と判定し、プログラムメモリ２０４内の読み出しコマンドプログラムコード（コマンド実行情報）７０３に基づくコマンド処理を実行する(ＳＴ９０７)。
【００３２】
プログラムアドレス３０６が、‘FFFFFFFF’以外を示す場合(ＳＴ９０４、ＮＯ)、制御素子２０１は、定義情報中のプログラムサイズ３０７をチェックする(ＳＴ９０５)。プログラムサイズ３０７が‘0000’以外を示す場合(ＳＴ９０５、ＮＯ)、制御素子２０１は、プログラム領域３０９にプログラムが存在する（登録済み）と判定し、プログラム領域３０９に格納されたプログラムを実行する(ＳＴ９０６)。
【００３３】
制御素子２０１は、プログラム領域３０９に格納されたプログラムの実行後、プログラムメモリ２０４内のコマンド処理を実行する(ＳＴ９０７)。そして、制御素子２０１は、正常終了応答を実行する。例えば、制御素子は、正常終了処理の実行に対応して、ISO/IEC 7816-4のstatus bytesを出力する。以上で、制御素子２０１は、読み出しコマンドのコマンド処理を終了する(ＳＴ９１０)。
【００３４】
図１０は、実施形態に係るプログラムコード或いは設定値を変更、削除するための修正コマンド（変更コマンド）の一例を示す図である。図１０に示すように、修正コマンドは、ISO/IEC 7816-4のClass byte（CLA）１００１、ISO/IEC 7816-4のInstruction byte (INS)１００２、ISO/IEC 7816-4のParameter byte (P1)１００３、ISO/IEC 7816-4のParameter byte (P2)１００４、ISO/IEC 7816-4のLc field(Lc)１００５、ISO/IEC 7816-4のCommand data field (Data)１００６を含む。
【００３５】
図１１は、実施形態に係る修正コマンドのCommand data field (Data)１００６に格納されるデータの一例を示す図である。図１１に示すように、Command data field (Data)１００６は、更新プログラム情報１１０３を識別するためのTag１１０１、更新プログラム情報１１０３の長さを示す情報Len１１０２、更新プログラム情報１１０３を含む。更新プログラム情報１１０３は、プログラム領域３０９に格納されるプログラムコード（更新用のプログラムコード）を含む。この更新プログラム情報１１０３は、プログラムコードではなく、設定値（更新用の設定値）を含むこともある。
【００３６】
ＩＣカード１０１の通信部２０５が、上記修正コマンドを受信すると、制御素子２０１は、修正コマンドを解釈し、修正コマンドに含まれた更新プログラム情報１１０３に含まれたプログラムコード（更新用のプログラムコード）を、プログラム領域３０９に書き込み、プログラム領域３０９のプログラムコードを更新（変更）する。これにより、ＩＣカード１０１は、プログラム領域３０９のプログラムコードを更新することができ、更新されたプログラムコードを実行することができる。
【００３７】
また、修正コマンドが、ISO/IEC 7816-4のLc field(Lc)１００５、及びISO/IEC 7816-4のCommand data field (Data)１００６を含まない場合、修正コマンドは、プログラム領域３０９に格納されているプログラムコードあるいは設定値を削除する。
【００３８】
ＩＣカード１０１の通信部２０５が、上記修正コマンドを受信すると、制御素子２０１は、修正コマンドを解釈し、修正コマンドにISO/IEC 7816-4のLc field(Lc)１００５、及びISO/IEC 7816-4のCommand data field (Data)１００６が含まれていなければ、制御素子２０１は、プログラム領域３０９のプログラムコードあるいは設定値を削除する。これにより、ＩＣカード１０１は、プログラム領域３０９のプログラムコードあるいは設定値を削除することができる。つまり、ＩＣカード１０１は、不要になったプログラムコードに基づく処理を省略することができる。
【００３９】
図１２は、実施形態に係るデータメモリ２０２のデータ構造の一例を示す図である。図１２に示すように、データメモリ２０２は、ファイルを制御するために使用される定義情報領域を含む。定義情報領域は、ＥＦ（Elementary File）識別情報１２０２、ＥＦ−ＩＤ１２０３、データアドレス１２０４、データサイズ１２０５、設定値アドレス１２０６、設定値サイズ１２０７を含む。
【００４０】
また、データメモリ２０２は、ＥＦのデータ本体が格納されるデータ領域１２０８を含む。なお、本実施形態では、ＥＦを例に挙げて説明するが、ＥＦに替えてＤＦ(Dedicated File）であってもかまわない。また、データメモリ２０２は、設定値領域１２０９を含む。設定値領域１２０９は、プログラムコードを格納する。このプログラムコードは、ＥＦを参照するコマンド処理を実行する前に、実行するプログラムコードである。
【００４１】
定義情報領域について説明する。ＥＦ識別情報１２０２は、ＥＦであることを識別するための情報である。ＥＦ−ＩＤ１２０３は、外部からＥＦを参照する際に使用するＥＦの識別情報である。データアドレス１２０４は、データ領域１２０８の先頭アドレスを示す。データサイズ１２０５は、データ領域１２０８のサイズを示す情報である。設定値アドレス１２０６は、設定値領域１２０９の先頭アドレスを示す。設定値サイズ１２０７は、設定値領域１２０９のサイズを示す情報である。設定値領域の先頭アドレスが、未設定である場合、すなわち、設定値アドレス１２０６が‘FFFFFFFF’を示す場合、設定値領域１２０９が設定されていないことを示す。また、設定値サイズ１２０７が‘0000’を示す場合、設定値領域１２０９に設定値が設定されていないことを示す。上記二つのケースでは、いずれも、設定値領域１２０９に設定値が設定されていないものとして、処理される。
【００４２】
図１３は、実施形態に係る読み出しコマンドのコマンド処理の一例を示すフローチャートである。ＩＣカード１０１通信部２０５は、端末１（カードリーダ・ライタ１０２）からの読み出しコマンドを受信し、制御素子２０１は、読み出しコマンドのコマンド処理を開始する(ＳＴ１３０１)。
【００４３】
例えば、最初に、制御素子２０１は、パラメータチェック処理を実行する(ＳＴ１３０２)。つまり、制御素子２０１は、読み出しコマンドに含まれたP1、P2の値が正しいかどうかをチェックする(ＳＴ１３０２)。P1、P2の値が正しければ(ＳＴ１３０２、ＹＥＳ)、さらに制御素子２０１は、定義情報取得処理を実行する(ＳＴ１３０３)。
【００４４】
なお、制御素子２０１が、パラメータチェック処理、定義情報取得処理の何れかにおいて異常を検出すると(ＳＴ１３０２、ＮＯ)(ＳＴ１３０３、ＮＯ)、異常終了応答を実行する(ＳＴ１３０８)。例えば、制御素子２０１は、異常終了応答の実行に対応して、ISO/IEC 7816-4のstatus bytesでエラーを出力する。
【００４５】
異常が検出されなければ(ＳＴ１３０２、ＹＥＳ)(ＳＴ１３０３、ＹＥＳ)、制御素子２０１は、定義情報中の設定値アドレス１２０６をチェックする(ＳＴ１３０４)。設定値アドレス１２０６が、‘FFFFFFFF’を示す場合(ＳＴ１３０４、ＹＥＳ)、制御素子２０１は、ＥＦ毎に設定される設定値が存在しないと判定し、プログラムメモリ２０４内の読み出しコマンドプログラムコード（コマンド実行情報）７０３に基づくコマンド処理を実行する(ＳＴ１３０７)。
【００４６】
設定値アドレス１２０６が、‘FFFFFFFF’以外を示す場合(ＳＴ１３０４、ＮＯ)、制御素子２０１は、定義情報中の設定値サイズ１３０７をチェックする(ＳＴ１３０５)。設定値サイズ１２０７が‘0000’以外を示す場合(ＳＴ１３０５、ＮＯ)、制御素子２０１は、設定値領域１２０９に設定値が存在すると判定し、設定値領域１２０９に格納された設定値を参照してプログラムメモリ２０４内のコマンド処理を実行する(ＳＴ１３０６)。
【００４７】
制御素子２０１は、設定値領域１２０９に格納された設定値を参照したコマンド処理の実行後、プログラムメモリ２０４内のコマンド処理を実行する(ＳＴ１３０７)。そして、制御素子２０１は、正常終了応答を実行する。例えば、制御素子は、正常終了処理の実行に対応して、ISO/IEC 7816-4のstatus bytesを出力する。以上で、制御素子２０１は、読み出しコマンドのコマンド処理を終了する(ＳＴ１３１０)。
【００４８】
以下、上記説明した本実施形態についてまとめる。
【００４９】
外部からの指示を解釈し、実行し、その結果を返信するＩＣカード１０１は、ＩＣカード１０１の内部のアプリケーション毎あるいはファイル毎に、これらを操作するコマンド処理の一部を関連付けて登録し、前記コマンドの実行中に、登録されたコマンド処理の一部を呼び出して実行する。
【００５０】
さらにＩＣカード１０１は、コマンド処理の一部が未登録の場合は、既定の処理（コマンド処理）を実行する。
【００５１】
また、ＩＣカード１０１は、ＩＣカード１０１の内部のアプリケーション毎あるいはファイル毎に、これらを操作するコマンド処理の一部が、手続きではなく、参照数値で構成され、前記コマンドの実行中に上記参照数値を参照し、コマンド処理の一部を呼び出して実行する。
【００５２】
また、ＩＣカード１０１は、関連付けて登録可能なコマンド処理の一部、あるいは数値で構成される参照の対象は、専用コマンドで登録・変更・削除可能である。
【００５３】
以上により、ＩＣカード１０１は、コマンド処理において、アプリケーション毎あるいはファイル毎に、同じコマンドであっても、コマンド処理を追加、変更できる。つまり、ＥＦ単位で、コマンド処理を追加、変更することができるため、ＥＦ毎に異なるコマンド処理を容易に実装できる。その結果として、不必要な処理まで、あらかじめ作り込んでおく必要がなくなり、必要最小限のコマンド処理を実装可能とする。すべてのオプション機能を作り込む必要がなくなるので、例えば、誤った指定をした場合に、処理を中断することが可能となる。さらに、特定のアプリケーションにおいては、不必要なオプション選択のための処理が不要になるため、処理の効率化が図れる。
【００５４】
なお、上記したモジュールとは、ハードウェアで実現するものであっても良いし、ＣＰＵ等を使ってソフトウェアで実現するものであってもよい。
【００５５】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
以下、本願の出願当初の特許請求の範囲の記載を付記する。
（１）
ファイルを記憶し、前記ファイルを制御するための定義情報を記憶し、前記定義情報により指定されるプログラムを記憶し、コマンドに対応するコマンド処理を実行するためのコマンド実行情報を記憶する記憶手段と、
前記コマンドを受信する受信手段と、
前記コマンドを解釈し、前記定義情報に基づき前記プログラムを実行し、前記コマンド実行情報に基づき前記コマンド処理を実行する実行手段と、
を備えた通信媒体。
（２）
前記実行手段は、前記定義情報に基づき前記プログラムの登録を検出した場合、前記コマンドの受信に対応して、前記定義情報に基づき前記プログラムを実行し、且つ前記コマンド実行情報に基づき前記コマンド処理を実行する（１）の通信媒体。
（３）
前記実行手段は、前記定義情報に基づき前記プログラムの未登録を検出した場合、前記コマンドの受信に対応して、前記コマンド実行情報に基づき前記コマンド処理を実行する（１）又は（２）の通信媒体。
（４）
前記受信手段は、ファイル創生コマンドを受信し、
前記実行手段は、前記ファイル創生コマンドを解釈し、前記記憶手段に対して前記定義情報及び前記プログラムを書き込む（１）乃至（３）の何れか１つに記載の通信媒体。
（５）
前記受信手段は、変更コマンドを受信し、
前記実行手段は、前記変更コマンドを解釈し、前記変更コマンドに含まれた変更プログラムに基づき前記記憶手段に記憶された前記プログラムを変更する（１）乃至（４）の何れか１つに記載の通信媒体。
（６）
前記記憶手段は、書き換え可能な不揮発性のデータメモリ、及び書き換え不能なプログラムメモリを備え、
前記データメモリは、前記定義情報及び前記プログラムを記憶し、
前記プログラムメモリは、前記コマンド実行情報を記憶する（１）乃至（５）の何れか１つに記載の通信媒体。
（７）
ＩＣモジュールが埋め込まれたカード本体により構成されるＩＣカードであって、
前記ＩＣモジュールは、
ファイルを記憶し、前記ファイルを制御するための定義情報を記憶し、前記定義情報により指定されるプログラムを記憶し、コマンドに対応するコマンド処理を実行するためのコマンド実行情報を記憶する記憶手段と、
前記コマンドを受信する受信手段と、
前記コマンドを解釈し、前記定義情報に基づき前記プログラムを実行し、前記コマンド実行情報に基づき前記コマンド処理を実行する実行手段と、
を備えたＩＣカード。
（８）
ファイルを記憶し、前記ファイルを制御するための定義情報を記憶し、前記定義情報により指定されるプログラムを記憶し、コマンドに対応するコマンド処理を実行するためのコマンド実行情報を記憶する通信媒体に適用可能なコマンド実行方法であって、
コマンドを受信し、
前記コマンドを解釈し、前記定義情報に基づき前記プログラムを実行し、前記コマンド実行情報に基づき前記コマンド処理を実行するコマンド実行方法。
【符号の説明】
【００５６】
１０１…ＩＣカード（通信媒体）、１０２…カードリーダ・ライタ、１０３…端末、１０４…キーボード、１０５…ディスプレイ、１０６…プリンタ、２００…ＩＣチップ、２０１…制御素子、２０２…データメモリ（不揮発性メモリ）、２０３…ワーキングメモリ、２０４…プログラムメモリ、２０５…通信部、２０６…アドレス監視回路
【図１】
0005558394.tif 000002
【図２】
0005558394.tif 000003
【図３】
0005558394.tif 000004
【図４】
0005558394.tif 000005
【図５】
0005558394.tif 000006
【図６】
0005558394.tif 000007
【図７】
0005558394.tif 000008
【図８】
0005558394.tif 000009
【図９】
0005558394.tif 000010
【図１０】
0005558394.tif 000011
【図１１】
0005558394.tif 000012
【図１２】
0005558394.tif 000013
【図１３】
0005558394.tif 000014