(57)【要約】【課題】電子情報記憶媒体の発行前に受信する発行前コマンドと発行後に受信する発行後コマンドについて、コマンド受信時に実行されるプログラムを統合して共用化することにより、当該プログラムを記憶する記憶領域を節約することができる電子情報記憶媒体等を提供する。【解決手段】記憶部が、発行前コマンド及び発行後コマンドの双方に対応する所定のプログラムであって、発行前コマンドを受信した場合と発行後コマンドを受信した場合の双方で、共通に実行される処理を含む所定のプログラムを記憶し、実行部が、発行前コマンド及び発行後コマンドを受信した場合に所定のプログラムを実行する。【選択図】図５
2019159799.tif 000002
【特許請求の範囲】
【請求項１】
コマンドに対応するプログラムを記憶する記憶部と、外部から受信した前記コマンドに対応する前記プログラムを実行する実行部と、を備える電子情報記憶媒体であって、
前記記憶部は、前記電子情報記憶媒体の発行の前に受信する前記コマンドである発行前コマンド、及び、前記発行の後に受信するコマンドである発行後コマンドの双方に対応する所定の前記プログラムを記憶し、
前記所定のプログラムは、前記発行前コマンドを受信した場合と前記発行後コマンドを受信した場合の双方で、共通に実行される処理を含むことを特徴とする電子情報記憶媒体。
【請求項２】
請求項１に記載の電子情報記憶媒体であって、
前記発行前コマンドのＣＬＡ部と前記発行後コマンドのＣＬＡ部、及び、前記発行前コマンドのＩＮＳ部と前記発行後コマンドのＩＮＳ部にはそれぞれ共通の値が設定され、
前記所定のプログラムは、前記発行前コマンドのＣＬＡ部と前記発行後コマンドのＣＬＡ部に設定された値について共通に実行される処理、及び、前記発行前コマンドのＩＮＳ部と前記発行後コマンドのＩＮＳ部に設定された値について共通に実行される処理と、を含むことを特徴とする電子情報記憶媒体。
【請求項３】
請求項１に記載の電子情報記憶媒体であって、
前記発行前コマンドのＣＬＡ部と前記発行後コマンドのＣＬＡ部、又は、前記発行前コマンドのＩＮＳ部と前記発行後コマンドのＩＮＳ部の少なくとも何れか一方は異なる値が設定され、
前記所定のプログラムは、前記発行前コマンドを受信した場合と前記発行後コマンドを受信した場合の双方で、前記記憶部に対して共通に実行される処理を含むことを特徴とする電子情報記憶媒体。
【請求項４】
請求項３に記載の電子情報記憶媒体であって、
前記記憶部に対して共通に実行される処理は、前記記憶部にデータを書き込む処理、又は、前記記憶部のデータを読み出す処理であることを特徴とする電子情報記憶媒体。
【請求項５】
請求項４に記載の電子情報記憶媒体であって、
前記記憶部に対して共通に実行される処理は、前記発行前コマンド及び前記発行後コマンドにおけるＤａｔａ部に設定されているデータを前記記憶部に書き込む処理であることを特徴とする電子情報記憶媒体。
【請求項６】
請求項１乃至５の何れか一項に記載の電子情報記憶媒体を備えるＩＣカード。
【発明の詳細な説明】
【技術分野】
【０００１】
ＩＣ（Integrated Circuit）チップ等の電子情報記憶媒体の技術分野に関する。
【背景技術】
【０００２】
ＩＣカード等に搭載されるＩＣチップといった電子情報記憶媒体は、ＣＰＵ、ＲＡＭ、不揮発性メモリ等を備えている。電子情報記憶媒体のＣＰＵは、カード発行機やリーダ・ライタなど、外部からコマンドを受信すると、当該コマンドに応じた処理を実行し、実行結果に関するＳＷ（Ｓｔａｔｕｓ  Ｗｏｒｄ）をレスポンスとして送信する。そのため、電子情報記憶媒体の不揮発性メモリは、コマンドに応じた一連の処理をＣＰＵが実行するための処理が記述されたプログラム（以下、「コマンド実行用プログラム」という場合がある）を記憶している。
【０００３】
電子情報記憶媒体に対して送信されるコマンドには複数の種類があり、例えば、特許文献１に記載されているように、検査コマンドや発行コマンドといった、電子情報記憶媒体の検査時や、電子情報記憶媒体の発行前にのみ使用されるコマンド（以下、「発行前コマンド」という場合がある）が含まれている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−２４３１３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、発行前コマンドについては、発行後（すなわち、製品出荷後の運用中）に使用されることがないため、発行前コマンドに対応するプログラムは、不揮発性メモリから削除されることなく、不揮発性メモリの記憶領域を無駄に使用したままとなる。
【０００６】
一方で、発行前コマンドと、電子情報記憶媒体の発行後（電子情報記憶媒体の運用中）にのみ使用されるコマンド（以下、「発行後コマンド」という場合がある）とには、コマンド受信時に実行されるプログラムに含まれる一部の処理が共通するコマンドがある。
【０００７】
そこで、本発明は、発行前コマンドと発行後コマンドについて、コマンド受信時に実行されるプログラムを統合して共用化することにより、当該プログラムを記憶する記憶領域を節約することができる電子情報記憶媒体等を提供することを課題とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、請求項１に記載の発明は、コマンドに対応するプログラムを記憶する記憶部と、外部から受信した前記コマンドに対応する前記プログラムを実行する実行部と、を備える電子情報記憶媒体であって、前記記憶部は、前記電子情報記憶媒体の発行の前に受信する前記コマンドである発行前コマンド、及び、前記発行の後に受信するコマンドである発行後コマンドの双方に対応する所定の前記プログラムを記憶し、前記所定のプログラムは、前記発行前コマンドを受信した場合と前記発行後コマンドを受信した場合の双方で、共通に実行される処理を含むことを特徴とする。
【０００９】
請求項２に記載の発明は、請求項１に記載の電子情報記憶媒体であって、前記発行前コマンドのＣＬＡ部と前記発行後コマンドのＣＬＡ部、及び、前記発行前コマンドのＩＮＳ部と前記発行後コマンドのＩＮＳ部にはそれぞれ共通の値が設定され、前記所定のプログラムは、前記発行前コマンドのＣＬＡ部と前記発行後コマンドのＣＬＡ部に設定された値について共通に実行される処理、及び、前記発行前コマンドのＩＮＳ部と前記発行後コマンドのＩＮＳ部に設定された値について共通に実行される処理と、を含むことを特徴とする。
【００１０】
請求項３に記載の発明は、請求項１に記載の電子情報記憶媒体であって、前記発行前コマンドのＣＬＡ部と前記発行後コマンドのＣＬＡ部、又は、前記発行前コマンドのＩＮＳ部と前記発行後コマンドのＩＮＳ部の少なくとも何れか一方は異なる値が設定され、前記所定のプログラムは、前記発行前コマンドを受信した場合と前記発行後コマンドを受信した場合の双方で、前記記憶部に対して共通に実行される処理を含むことを特徴とする。
【００１１】
請求項４に記載の発明は、請求項３に記載の電子情報記憶媒体であって、前記記憶部に対して共通に実行される処理は、前記記憶部にデータを書き込む処理、又は、前記記憶部のデータを読み出す処理であることを特徴とする。
【００１２】
請求項５に記載の発明は、請求項４に記載の電子情報記憶媒体であって、前記記憶部に対して共通に実行される処理は、前記発行前コマンド及び前記発行後コマンドにおけるＤａｔａ部に設定されているデータを前記記憶部に書き込む処理であることを特徴とする。
【００１３】
請求項６に記載の発明は、請求項１乃至５の何れか一項に記載の電子情報記憶媒体を備えるＩＣカードである。
【発明の効果】
【００１４】
本発明によれば、記憶部が、発行前コマンド及び発行後コマンドの双方に対応する所定のプログラムであって、発行前コマンドを受信した場合と発行後コマンドを受信した場合の双方で、共通に実行される処理を含む所定のプログラムを記憶し、実行部が、発行前コマンド及び発行後コマンドを受信した場合に所定のプログラムを実行する。すなわち、発行前コマンドと発行後コマンドについて、コマンド受信時に実行されるプログラムを統合して共用化することにより、当該プログラムを記憶する記憶領域を節約することができる。
【図面の簡単な説明】
【００１５】
【図１】本実施形態に係るＩＣカード１に搭載されるＩＣチップ１ａのハードウェア構成例を示す図である。
【図２】発行前コマンド及び発行後コマンドの一例を含むコマンド一覧である。
【図３】ＶＥＲＩＦＹ（ＩＳ）コマンドと、ＶＥＲＩＦＹ（ＵＳＲ）コマンドのコマンドフォーマットの一例を示す図である。
【図４】（Ａ）は、ＶＥＲＩＦＹ（ＩＳ）コマンドに対応するコマンド実行用プログラムの従来処理例を示すフローチャートであり、（Ｂ）は、ＶＥＲＩＦＹ（ＵＳＲ）コマンドに対応するコマンド実行用プログラムの従来処理例を示すフローチャートである。
【図５】本実施形態に係るＶＥＲＩＦＹ（ＩＳ）コマンド及びＶＥＲＩＦＹ（ＵＳＲ）コマンドに対応するコマンド実行用プログラムの処理例を示すフローチャートである。
【図６】（Ａ）はＳＴＯＲＥ  ＤＡＴＡコマンドのコマンドフォーマットの一例を示す図であり、（Ｂ）はＷＲＩＴＥ  ＢＩＮＡＲＹコマンドのコマンドフォーマットの一例を示す図である。
【図７】（Ａ）は、ＳＴＯＲＥ  ＤＡＴＡコマンドに対応するコマンド実行用プログラムの従来処理例を示すフローチャートであり、（Ｂ）は、ＷＲＩＴＥ  ＢＩＮＡＲＹに対応するコマンド実行用プログラムの従来処理例を示すフローチャートである。
【図８】本実施形態に係るＳＴＯＲＥ  ＤＡＴＡコマンド及びＷＲＩＴＥ  ＢＩＮＡＲＹコマンドに対応するコマンド実行用プログラムの処理例を示すフローチャートである。
【図９】（Ａ）はＲＥＡＤ  ＤＡＴＡコマンドのコマンドフォーマットの一例を示す図であり、（Ｂ）はＲＥＡＤ  ＢＩＮＡＲＹコマンドのコマンドフォーマットの一例を示す図である。
【図１０】（Ａ）は、ＲＥＡＤ  ＤＡＴＡコマンドに対応するコマンド実行用プログラムの従来処理例を示すフローチャートであり、（Ｂ）は、ＲＥＡＤ  ＢＩＮＡＲＹに対応するコマンド実行用プログラムの従来処理例を示すフローチャートである。
【図１１】本実施形態に係るＲＥＡＤ  ＤＡＴＡコマンド及びＲＥＡＤ  ＢＩＮＡＲＹコマンドに対応するコマンド実行用プログラムの処理例を示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下、図面を参照して本発明の実施形態について詳細に説明する。以下に説明する実施形態は、ＩＣチップ並びにＩＣチップを搭載するＩＣカードに対して本発明を適用した場合の実施の形態である。
【００１７】
［１．ＩＣチップ１ａの構成］
まず、図１を参照して、ＩＣカード１に搭載されるＩＣチップ１ａの構成について説明する。図１は、ＩＣカード１に搭載されるＩＣチップ１ａのハードウェア構成例を示す図である。本実施形態のＩＣカード１は、接触によるデータ通信と非接触によるデータ通信の２つの通信機能を兼ね備えたデュアルインターフェース型ＩＣカードである。但し、ＩＣカード１の種類はデュアルインターフェース型ＩＣカードに限定されず、キャッシュカードやクレジットカードと同じ大きさのプラスチック製カードにＩＣチップ１ａがエンベットされた接触型ＩＣカードであってもよいし、また、アンテナコイルを内蔵し無線でリーダ・ライタとデータ通信する非接触型ＩＣカードであってもよい。
【００１８】
図１に示すように、ＩＣチップ１ａは、ＣＰＵ（Central Processing Unit）１０、ＲＡＭ（Random Access Memory）１１、ＲＯＭ（Read Only Memory）１２、不揮発性メモリ１３、及びＩ／Ｏ回路１４を備えて構成される。ＣＰＵ１０は、ＲＯＭ１２又は不揮発性メモリ１３に記憶された各種プログラムを実行するプロセッサ（コンピュータ）である。なお、Ｉ／Ｏ回路１４は、外部機器２とのインターフェイスを担う。これにより、ＩＣチップ１ａは、リーダ・ライタを備える外部機器２との間で接触又は非接触で通信を行うことができる。接触式のＩＣチップ１ａの場合、Ｉ／Ｏ回路１４には、例えば、Ｃ１〜Ｃ８の８個の端子が備えられている。例えば、Ｃ１端子は電源端子（ＩＣチップ１ａへ電源供給する端子）、Ｃ２端子はリセット端子、Ｃ３端子はクロック端子、Ｃ５端子はグランド端子、Ｃ７端子は外部機器２との間で通信を行うための端子である。一方、非接触式のＩＣチップ１ａの場合、Ｉ／Ｏ回路１４には、例えば、アンテナ、及び変復調回路が備えられている。なお、外部機器２の例としては、ＩＣカード発行機やサーバ装置が挙げられる。
【００１９】
不揮発性メモリ１３には、例えばフラッシュメモリ又は「Electrically Erasable Programmable Read-Only Memory」などで構成され、ＯＳ及び各種アプリケーションや、これらが使用するデータを記憶する。なお、ＯＳについては、その一部を不揮発性メモリ１３が記憶し、その他の部分をＲＯＭ１２が記憶することとしてもよい。また、不揮発性メモリ１３には、外部機器２からコマンドを受信した場合に、ＯＳが当該コマンドに応じた処理を実行し、実行結果に関するＳＷをレスポンスとして送信するための処理を含むコマンド実行用プログラムが記憶されている。
【００２０】
［２．コマンドの種類］
ＣＰＵ１０は、外部機器２からコマンドを受信すると当該コマンドに応じたコマンド実行用プログラムを実行し、ＳＷを応答として外部機器２に送信する。従来、コマンドには発行前コマンドと発行後コマンドがあり、発行前コマンドと発行後コマンドとで類似するコマンドがある。それらはそれぞれに対応するコマンド実行用プログラムに含まれる処理の一部が共通する。ここで、図２を用いて、それらの一例について説明する。
【００２１】
図２に示すように、発行者を認証するための発行前コマンドであるＶＥＲＩＦＹ（ＩＳ）コマンドと、ユーザを認証するための発行後コマンドであるＶＥＲＩＦＹ（ＵＳＲ）コマンドは、それぞれ対応するコマンド実行用プログラムに含まれる一部の処理が共通する。また、不揮発性メモリ１３へデータを書き込むための発行前コマンドであるＳＴＯＲＥ  ＤＡＴＡコマンドと、ファイルへデータを書き込むための発行後コマンドであるＷＲＩＴＥ  ＢＩＮＡＲＹコマンドは、それぞれ対応するコマンド実行用プログラムに含まれる一部の処理が共通する。更に、正しくデータが書き込まれていることを確認することを目的としてデータを読み出すための発行前コマンドであるＲＥＡＤ  ＤＡＴＡコマンドと、ファイルのデータを読み出すための発行後コマンドであるＲＥＡＤ  ＢＩＮＡＲＹコマンドは、それぞれ対応するコマンド実行用プログラムに含まれる一部の処理が共通する。
【００２２】
［２．１．ＶＥＲＩＦＹ（ＩＳ）コマンドとＶＥＲＩＦＹ（ＵＳＲ）コマンド］
［２．１．１．コマンドフォーマット］
次に、図３を用いて、ＶＥＲＩＦＹ（ＩＳ）コマンドと、ＶＥＲＩＦＹ（ＵＳＲ）コマンドのコマンドフォーマットについて説明する。なお、図３はＶＥＲＩＦＹ（ＩＳ）コマンドと、ＶＥＲＩＦＹ（ＵＳＲ）コマンドのコマンドフォーマットの一例を示す図である。図３に示すように、ＶＥＲＩＦＹ（ＩＳ）コマンドと、ＶＥＲＩＦＹ（ＵＳＲ）コマンドのコマンドフォーマットは共通である。すなわち、何れのコマンドも、ＣＬＡ部には「００ｈ（固定）」、ＩＮＳ部には「１０ｈ（固定）」、Ｐ１部には「００ｈ（固定）」、Ｐ２部には「００ｈ（固定）」、Ｌｃ部には「０１ｈ」〜「１０ｈ」が設定され、Ｄａｔａ部には認証に用いるＰＩＮ（ＶＥＲＩＦＹ（ＩＳ）コマンドであれば発行者ＰＩＮ（Personal Identification Number）、ＶＥＲＩＦＹ（ＵＳＲ）コマンドであればユーザＰＩＮ）がそれぞれ設定される。
【００２３】
［２．１．２．従来の処理フロー］
［２．１．２．１．ＶＥＲＩＦＹ（ＩＳ）コマンド受信時］
次に、図４を用いて、ＶＥＲＩＦＹ（ＩＳ）コマンドと、ＶＥＲＩＦＹ（ＵＳＲ）コマンドを受信した場合に実行される従来のコマンド実行用プログラムの処理例について説明する。なお、図４（Ａ）は、ＶＥＲＩＦＹ（ＩＳ）コマンドに対応するコマンド実行用プログラムの従来処理例を示すフローチャートであり、図４（Ｂ）は、ＶＥＲＩＦＹ（ＵＳＲ）コマンドに対応するコマンド実行用プログラムの従来処理例を示すフローチャートである。
【００２４】
図４（Ａ）に示すように、ＶＥＲＩＦＹ（ＩＳ）コマンドを受信したＩＣチップ１ａのＣＰＵ１０は、まず、ＣＬＡ部にセットされている値をチェックする（ステップＳ１０１）。例えば、図３に示すコマンドフォーマットであれば「００ｈ」がセットされているかをチェックする。
【００２５】
次いで、ＣＰＵ１０は、ＩＮＳ部にセットされている値をチェックする（ステップＳ１０２）。例えば、図３に示すコマンドフォーマットであれば「１０ｈ」がセットされているかをチェックする。
【００２６】
次いで、Ｌｃ部にセットされている値とＤａｔａ部の長さとで整合性がとれているかチェックする（ステップＳ１０３）。
【００２７】
なお、図示しないが、ＣＰＵ１０は、ステップＳ１０１〜ステップＳ１０３の処理におけるチェックの結果、正常でないと判定した場合には、コマンドの送信元に異常を示すＳＷ（「異常ＳＷ」）による応答をし（ステップＳ１０８）、当該フローチャートに示す処理を終了する。
【００２８】
次に、ＣＰＵ１０は、Ｄａｔａ部に設定されている発行者のＰＩＮに基づく認証を行う（ステップＳ１０４）。次いで、ＣＰＵ１０は、認証結果が一致か否かを判定する（ステップＳ１０５）。
【００２９】
ＣＰＵ１０は、認証結果が一致であると判定した場合には（ステップＳ１０５：ＹＥＳ）、認証結果として発行者認証済みを設定し（ステップＳ１０６）、コマンドの送信元に正常を示すＳＷ（「正常ＳＷ」）による応答をし（ステップＳ１０７）、当該フローチャートに示す処理を終了する。一方、ＣＰＵ１０は、認証結果が一致でないと判定した場合には（ステップＳ１０５：ＮＯ）、コマンドの送信元に異常ＳＷによる応答をし（ステップＳ１０８）、当該フローチャートに示す処理を終了する。
【００３０】
［２．１．２．２．ＶＥＲＩＦＹ（ＵＳＲ）コマンド受信時］
一方、図４（Ｂ）に示すように、ＶＥＲＩＦＹ（ＵＳＲ）コマンドを受信したＩＣチップ１ａのＣＰＵ１０は、まず、ＣＬＡ部にセットされている値をチェックする（ステップＳ１１１）。例えば、図３に示すコマンドフォーマットであれば「００ｈ」がセットされているかをチェックする。
【００３１】
次いで、ＣＰＵ１０は、ＩＮＳ部にセットされている値をチェックする（ステップＳ１１２）。例えば、図３に示すコマンドフォーマットであれば「１０ｈ」がセットされているかをチェックする。
【００３２】
次いで、Ｌｃ部にセットされている値とＤａｔａ部の長さとで整合性がとれているかチェックする（ステップＳ１１３）。
【００３３】
このように、ステップＳ１１１〜ステップＳ１１３の処理は、図４（Ａ）のステップＳ１０１〜ステップＳ１０３の処理と同一の処理である。
【００３４】
次に、ＣＰＵ１０は、Ｄａｔａ部に設定されているユーザのＰＩＮに基づく認証を行う（ステップＳ１１４）。次いで、ＣＰＵ１０は、認証結果が一致か否かを判定する（ステップＳ１１５）。
【００３５】
ＣＰＵ１０は、認証結果が一致であると判定した場合には（ステップＳ１１５：ＹＥＳ）、認証結果としてユーザ認証済みを設定し（ステップＳ１１６）、コマンドの送信元に正常ＳＷによる応答をし（ステップＳ１１７）、当該フローチャートに示す処理を終了する。一方、ＣＰＵ１０は、認証結果が一致でないと判定した場合には（ステップＳ１１５：ＮＯ）、コマンドの送信元に異常ＳＷによる応答をし（ステップＳ１１８）、当該フローチャートに示す処理を終了する。
【００３６】
このように、ＶＥＲＩＦＹ（ＩＳ）コマンドと、ＶＥＲＩＦＹ（ＵＳＲ）コマンドを受信した場合の従来の処理例を比較すると、ステップＳ１０１〜ステップＳ１０３（ステップＳ１１１〜ステップＳ１１３）の処理が共通する。これは、ＶＥＲＩＦＹ（ＩＳ）コマンドと、ＶＥＲＩＦＹ（ＵＳＲ）コマンドのコマンドフォーマットが共通することに基づく。そこで、本実施形態では、ＶＥＲＩＦＹ（ＩＳ）コマンドに対応するコマンド実行用プログラムと、ＶＥＲＩＦＹ（ＵＳＲ）コマンドに対応するコマンド実行用プログラムを共通化したコマンド実行用プログラムを作成して記憶させ、従来のＶＥＲＩＦＹ（ＩＳ）コマンドに対応するコマンド実行用プログラムと、ＶＥＲＩＦＹ（ＵＳＲ）コマンドに対応するコマンド実行用プログラムを記憶させないことにより不揮発性メモリ１３の記憶領域を節約する。
【００３７】
［２．１．３．本実施形態の処理フロー］
以下、図５を用いて、共通化したコマンド実行用プログラムによる処理例について説明する。なお、図５は、ＶＥＲＩＦＹ（ＩＳ）コマンド及びＶＥＲＩＦＹ（ＵＳＲ）コマンドに対応するコマンド実行用プログラムの処理例を示すフローチャートである。
【００３８】
図５に示すように、ＩＣチップ１ａのＣＰＵ１０は、まず、ＣＬＡ部にセットされている値をチェックする（ステップＳ１２１）。例えば、図３に示すコマンドフォーマットであれば「００ｈ」がセットされているかをチェックする。
【００３９】
次いで、ＣＰＵ１０は、ＩＮＳ部にセットされている値をチェックする（ステップＳ１２２）。例えば、図３に示すコマンドフォーマットであれば「１０ｈ」がセットされているかをチェックする。
【００４０】
次いで、Ｌｃ部にセットされている値とＤａｔａの長さとで整合性がとれているかチェックする（ステップＳ１２３）。なお、図示しないが、ＣＰＵ１０は、ステップＳ１２１〜ステップＳ１２３の処理におけるチェックの結果、正常でないと判定した場合には、コマンドの送信元に異常ＳＷによる応答をし（ステップＳ１２９）、当該フローチャートに示す処理を終了する。
【００４１】
このように、ステップＳ１２１〜ステップＳ１２３の処理は、図４（Ａ）のステップＳ１０１〜ステップＳ１０３（図４（Ｂ）のステップＳ１１１〜ステップＳ１１３）の処理と同一の処理である。
【００４２】
次に、ＣＰＵ１０は、発行フラグがオンであるか否かを判定する（ステップＳ１２４）。発行フラグは、ＩＣカード１の発行前の状態であれば「オン」が設定され、ＩＣカード１の発行後の状態であれば「オフ」が設定される。ＣＰＵ１０は、発行フラグがオンである（発行前である）と判定した場合には（ステップＳ１２４：ＹＥＳ）、Ｄａｔａ部に設定されている発行者のＰＩＮに基づく認証を行う（ステップＳ１２５）。次いで、ＣＰＵ１０は、認証結果が一致か否かを判定する（ステップＳ１２６）。
【００４３】
ＣＰＵ１０は、認証結果が一致であると判定した場合には（ステップＳ１２６：ＹＥＳ）、認証結果として発行者認証済みを設定し（ステップＳ１２７）、コマンドの送信元に正常ＳＷによる応答をし（ステップＳ１２８）、当該フローチャートに示す処理を終了する。一方、ＣＰＵ１０は、認証結果が一致でないと判定した場合には（ステップＳ１２６：ＮＯ）、コマンドの送信元に異常ＳＷによる応答をし（ステップＳ１２９）、当該フローチャートに示す処理を終了する。
【００４４】
一方、ＣＰＵ１０は、発行フラグがオンでない（発行後である）と判定した場合には（ステップＳ１２４：ＮＯ）、Ｄａｔａ部に設定されているユーザのＰＩＮに基づく認証を行う（ステップＳ１３０）。次いで、ＣＰＵ１０は、認証結果が一致か否かを判定する（ステップＳ１３１）。
【００４５】
ＣＰＵ１０は、認証結果が一致であると判定した場合には（ステップＳ１３１：ＹＥＳ）、認証結果としてユーザ認証済みを設定し（ステップＳ１３２）、コマンドの送信元に正常ＳＷによる応答をし（ステップＳ１３３）、当該フローチャートに示す処理を終了する。一方、ＣＰＵ１０は、認証結果が一致でないと判定した場合には（ステップＳ１３１：ＮＯ）、コマンドの送信元に異常ＳＷによる応答をし（ステップＳ１２９）、当該フローチャートに示す処理を終了する。
【００４６】
［２．２．ＳＴＯＲＥ  ＤＡＴＡコマンドとＷＲＩＴＥ  ＢＩＮＡＲＹコマンド］
［２．２．１．コマンドフォーマット］
次に、図６を用いて、ＳＴＯＲＥ  ＤＡＴＡコマンドと、ＷＲＩＴＥ  ＢＩＮＡＲＹコマンドのコマンドフォーマットについて説明する。なお、図６（Ａ）はＳＴＯＲＥ  ＤＡＴＡコマンドのコマンドフォーマットの一例を示す図であり、図６（Ｂ）はＷＲＩＴＥ  ＢＩＮＡＲＹコマンドのコマンドフォーマットの一例を示す図である。図６（Ａ）に示すように、ＳＴＯＲＥ  ＤＡＴＡコマンドのコマンドフォーマットは、ＣＬＡ部には「００ｈ（固定）」、ＩＮＳ部には「２０ｈ（固定）」、Ｐ１部には「００ｈ（固定）」、Ｐ２部には「００ｈ（固定）」、Ｌｃ部にはＤａｔａ部の長さが設定され、Ｄａｔａ部にはデータの書き込み先である不揮発性メモリ１３上のアドレス（４バイト）と、書き込むデータ（任意のデータ長）が設定される。
【００４７】
一方、図６（Ｂ）に示すように、ＷＲＩＴＥ  ＢＩＮＡＲＹコマンドのコマンドフォーマットは、ＣＬＡ部には「００ｈ（固定）」、ＩＮＳ部には「３０ｈ（固定）」、Ｐ１部には「ＦＩＤ（File identifier）」、Ｐ２部には「ＦＩＤ」、Ｌｃ部にはＤａｔａ部の長さが設定され、Ｄａｔａ部には書き込むデータ（任意のデータ長）が設定される。なお、Ｐ１部とＰ２部に設定されるＦＩＤは、データの書き込み先である不揮発性メモリ１３上のファイルを示す。
【００４８】
すなわち、ＳＴＯＲＥ  ＤＡＴＡコマンドには、データの書き込み先であるアドレスが設定されているため、ＣＰＵ１０は、当該アドレスの示す記憶領域にデータを直接書き込むことができる。一方、ＷＲＩＴＥ  ＢＩＮＡＲＹコマンドには、データの書き込み先であるファイルが設定されているため、ＣＰＵ１０は、当該ファイルに基づいてデータの書き込み先であるアドレスを特定してから、当該特定したアドレスの示す記憶領域にデータを書き込む必要がある。その一方で、ＳＴＯＲＥ  ＤＡＴＡコマンドもＷＲＩＴＥ  ＢＩＮＡＲＹコマンドも、データの書き込み先が確定すると、その後はデータを書き込む点で共通する。
【００４９】
なお、図６の例では、ＳＴＯＲＥ  ＤＡＴＡコマンドとＷＲＩＴＥ  ＢＩＮＡＲＹコマンドにおけるＣＬＡ部に共通して「００ｈ」が設定されるが、異なる値が設定されることとしてもよい。この場合、ＳＴＯＲＥ  ＤＡＴＡコマンドとＷＲＩＴＥ  ＢＩＮＡＲＹコマンドのＩＮＳ部に共通の値が設定されることとしてもよい。
【００５０】
［２．２．２．従来の処理フロー］
［２．２．２．１．ＳＴＯＲＥ  ＤＡＴＡコマンド受信時］
次に、図７を用いて、ＳＴＯＲＥ  ＤＡＴＡコマンドと、ＷＲＩＴＥ  ＢＩＮＡＲＹコマンドを受信した場合に実行される従来のコマンド実行用プログラムの処理例について説明する。なお、図７（Ａ）は、ＳＴＯＲＥ  ＤＡＴＡコマンドに対応するコマンド実行用プログラムの従来処理例を示すフローチャートであり、図７（Ｂ）は、ＷＲＩＴＥ  ＢＩＮＡＲＹに対応するコマンド実行用プログラムの従来処理例を示すフローチャートである。
【００５１】
図７（Ａ）に示すように、ＳＴＯＲＥ  ＤＡＴＡコマンドを受信したＩＣチップ１ａのＣＰＵ１０は、まず、ＣＬＡ部にセットされている値をチェックする（ステップＳ２０１）。例えば、図６（Ａ）に示すコマンドフォーマットであれば「００ｈ」がセットされているかをチェックする。
【００５２】
次いで、ＣＰＵ１０は、ＩＮＳ部にセットされている値をチェックする（ステップＳ２０２）。例えば、図６（Ａ）に示すコマンドフォーマットであれば「２０ｈ」がセットされているかをチェックする。
【００５３】
次いで、ＣＰＵ１０は、Ｌｃ部にセットされている値とＤａｔａ部の長さとで整合性がとれているかチェックする（ステップＳ２０３）。なお、図示しないが、ＣＰＵ１０は、ステップＳ２０１〜ステップＳ２０３の処理におけるチェックの結果、正常でないと判定した場合には、コマンドの送信元に異常ＳＷによる応答をし（ステップＳ２０８）、当該フローチャートに示す処理を終了する。
【００５４】
次に、ＣＰＵ１０は、Ｄａｔａ部に設定されているアドレスを取得する（ステップＳ２０４）。
【００５５】
次に、ＣＰＵ１０は、ステップＳ２０４の処理で取得したアドレスに、Ｄａｔａ部に設定されているデータを書き込む（ステップＳ２０５）。次いで、ＣＰＵ１０は、書き込みは成功か否かを判定する（ステップＳ２０６）。
【００５６】
ＣＰＵ１０は、書き込みが成功であると判定した場合には（ステップＳ２０６：ＹＥＳ）、コマンドの送信元に正常ＳＷによる応答をし（ステップＳ２０７）、当該フローチャートに示す処理を終了する。一方、ＣＰＵ１０は、書き込みが成功でないと判定した場合には（ステップＳ２０６：ＮＯ）、コマンドの送信元に異常ＳＷによる応答をし（ステップＳ２０８）、当該フローチャートに示す処理を終了する。
【００５７】
［２．２．２．２．ＷＲＩＴＥ  ＢＩＮＡＲＹコマンド受信時］
一方、図７（Ｂ）に示すように、ＷＲＩＴＥ  ＢＩＮＡＲＹコマンドを受信したＩＣチップ１ａのＣＰＵ１０は、まず、ＣＬＡ部にセットされている値をチェックする（ステップＳ２１１）。例えば、図６（Ｂ）に示すコマンドフォーマットであれば「００ｈ」がセットされているかをチェックする。
【００５８】
次いで、ＣＰＵ１０は、ＩＮＳ部にセットされている値をチェックする（ステップＳ２１２）。例えば、図６（Ｂ）に示すコマンドフォーマットであれば「３０ｈ」がセットされているかをチェックする。
【００５９】
次いで、ＣＰＵ１０は、Ｌｃ部にセットされている値とＤａｔａ部の長さとで整合性がとれているかチェックする（ステップＳ２１３）。なお、図示しないが、ＣＰＵ１０は、ステップＳ２１１〜ステップＳ２１３の処理におけるチェックの結果、正常でないと判定した場合には、コマンドの送信元に異常ＳＷによる応答をし（ステップＳ２１８）、当該フローチャートに示す処理を終了する。
【００６０】
次に、ＣＰＵ１０は、Ｐ１部、Ｐ２部に設定されているＦＩＤに基づいてデータの書き込み先のアドレスを取得する（ステップＳ２１４）。
【００６１】
次に、ＣＰＵ１０は、ステップＳ２１４の処理で取得したアドレスに、Ｄａｔａ部に設定されているデータを書き込む（ステップＳ２１５）。次いで、ＣＰＵ１０は、書き込みは成功か否かを判定する（ステップＳ２１６）。
【００６２】
ＣＰＵ１０は、書き込みが成功であると判定した場合には（ステップＳ２１６：ＹＥＳ）、コマンドの送信元に正常ＳＷによる応答をし（ステップＳ２１７）、当該フローチャートに示す処理を終了する。一方、ＣＰＵ１０は、書き込みが成功でないと判定した場合には（ステップＳ２１６：ＮＯ）、コマンドの送信元に異常ＳＷによる応答をし（ステップＳ２１８）、当該フローチャートに示す処理を終了する。
【００６３】
このように、ＳＴＯＲＥ  ＤＡＴＡコマンドと、ＷＲＩＴＥ  ＢＩＮＡＲＹコマンドを受信した場合の従来の処理例を比較すると、ステップＳ２０５〜ステップＳ２０８（ステップＳ２１５〜ステップＳ２１８）の処理が共通する。これは、ＳＴＯＲＥ  ＤＡＴＡコマンドと、ＷＲＩＴＥ  ＢＩＮＡＲＹコマンドの機能（不揮発性メモリ１３にデータを書き込む機能）が共通することによる。そこで、本実施形態では、ＳＴＯＲＥ  ＤＡＴＡコマンドに対応するコマンド実行用プログラムと、ＷＲＩＴＥ  ＢＩＮＡＲＹコマンドに対応するコマンド実行用プログラムを共通化したコマンド実行用プログラムを作成して記憶させ、従来のＳＴＯＲＥ  ＤＡＴＡコマンドに対応するコマンド実行用プログラムと、ＷＲＩＴＥ  ＢＩＮＡＲＹコマンドに対応するコマンド実行用プログラムを記憶させないことにより不揮発性メモリ１３の記憶領域を節約する。
【００６４】
［２．２．３．本実施形態の処理フロー］
以下、図８を用いて、共通化したコマンド実行用プログラムによる処理例について説明する。なお、図８は、ＳＴＯＲＥ  ＤＡＴＡコマンド及びＷＲＩＴＥ  ＢＩＮＡＲＹコマンドに対応するコマンド実行用プログラムの処理例を示すフローチャートである。
【００６５】
図８に示すように、ＩＣチップ１ａのＣＰＵ１０は、まず、受信したコマンドがＳＴＯＲＥ  ＤＡＴＡコマンドであるか否かを判定する（ステップＳ２２１）。ＣＰＵ１０は、受信したコマンドがＳＴＯＲＥ  ＤＡＴＡコマンドであると判定した場合には（ステップＳ２２１：ＹＥＳ）、次いで、ＣＬＡ部にセットされている値をチェックする（ステップＳ２２２）。例えば、図６（Ａ）に示すコマンドフォーマットであれば「００ｈ」がセットされているかをチェックする。
【００６６】
次いで、ＣＰＵ１０は、ＩＮＳ部にセットされている値をチェックする（ステップＳ２２３）。例えば、図６（Ａ）に示すコマンドフォーマットであれば「２０ｈ」がセットされているかをチェックする。
【００６７】
次いで、ＣＰＵ１０は、Ｌｃ部にセットされている値とＤａｔａ部の長さとで整合性がとれているかチェックする（ステップＳ２２４）。なお、図示しないが、ＣＰＵ１０は、ステップＳ２２２〜ステップＳ２２４の処理におけるチェックの結果、正常でないと判定した場合には、コマンドの送信元に異常ＳＷによる応答をし（ステップＳ２３３）、当該フローチャートに示す処理を終了する。
【００６８】
次に、ＣＰＵ１０は、Ｄａｔａ部に設定されているアドレスを取得し（ステップＳ２２５）、ステップＳ２３０の処理に移行する。
【００６９】
一方、ＣＰＵ１０は、受信したコマンドがＳＴＯＲＥ  ＤＡＴＡコマンドではないと判定した場合には（ステップＳ２２１：ＮＯ）、次いで、ＣＬＡ部にセットされている値をチェックする（ステップＳ２２６）。例えば、図６（Ｂ）に示すコマンドフォーマットであれば「００ｈ」がセットされているかをチェックする。
【００７０】
次いで、ＣＰＵ１０は、ＩＮＳ部にセットされている値をチェックする（ステップＳ２２７）。例えば、図６（Ｂ）に示すコマンドフォーマットであれば「３０ｈ」がセットされているかをチェックする。
【００７１】
次いで、ＣＰＵ１０は、Ｌｃ部にセットされている値とＤａｔａ部の長さとで整合性がとれているかチェックする（ステップＳ２２８）。なお、図示しないが、ＣＰＵ１０は、ステップＳ２２６〜ステップＳ２２７の処理におけるチェックの結果、正常でないと判定した場合には、コマンドの送信元に異常ＳＷによる応答をし（ステップＳ２３３）、当該フローチャートに示す処理を終了する。
【００７２】
次に、ＣＰＵ１０は、Ｐ１部、Ｐ２部に設定されているＦＩＤに基づいてデータの書き込み先のアドレスを取得し（ステップＳ２２９）、ステップＳ２３０の処理に移行する。
【００７３】
次に、ＣＰＵ１０は、ステップＳ２２５又はステップＳ２２９の処理で取得したアドレスに、Ｄａｔａ部に設定されているデータを書き込む（ステップＳ２３０）。次いで、ＣＰＵ１０は、書き込みは成功か否かを判定する（ステップＳ２３１）。
【００７４】
ＣＰＵ１０は、書き込みが成功であると判定した場合には（ステップＳ２３１：ＹＥＳ）、コマンドの送信元に正常ＳＷによる応答をし（ステップＳ２３２）、当該フローチャートに示す処理を終了する。一方、ＣＰＵ１０は、書き込みが成功でないと判定した場合には（ステップＳ２３１：ＮＯ）、コマンドの送信元に異常ＳＷによる応答をし（ステップＳ２３３）、当該フローチャートに示す処理を終了する。
【００７５】
［２．３．ＲＥＡＤ  ＤＡＴＡコマンドとＲＥＡＤ  ＢＩＮＡＲＹコマンド］
［２．３．１．コマンドフォーマット］
次に、図９を用いて、ＲＥＡＤ  ＤＡＴＡコマンドと、ＲＥＡＤ  ＢＩＮＡＲＹコマンドのコマンドフォーマットについて説明する。なお、図９（Ａ）はＲＥＡＤ  ＤＡＴＡコマンドのコマンドフォーマットの一例を示す図であり、図９（Ｂ）はＲＥＡＤ  ＢＩＮＡＲＹコマンドのコマンドフォーマットの一例を示す図である。図９（Ａ）に示すように、ＲＥＡＤ  ＤＡＴＡコマンドのコマンドフォーマットは、ＣＬＡ部には「００ｈ（固定）」、ＩＮＳ部には「４０ｈ（固定）」、Ｐ１部には「００ｈ（固定）」、Ｐ２部には「００ｈ（固定）」、Ｌｃ部には「０８ｈ（固定）」、Ｄａｔａ部には読み出すデータの不揮発性メモリ１３上の開始アドレス（４バイト）と終了アドレス（４バイト）が設定される。
【００７６】
一方、図９（Ｂ）に示すように、ＲＥＡＤ  ＢＩＮＡＲＹコマンドのコマンドフォーマットは、ＣＬＡ部には「００ｈ（固定）」、ＩＮＳ部には「５０ｈ（固定）」、Ｐ１部には「ＦＩＤ（File identifier）」、Ｐ２部には「ＦＩＤ」が設定される。なお、Ｐ１部とＰ２部に設定されるＦＩＤは、読み出すデータを含む、不揮発性メモリ１３上のファイルを示す。
【００７７】
すなわち、ＲＥＡＤ  ＤＡＴＡコマンドには、読み出すデータが記憶された領域を示すアドレスが設定されているため、ＣＰＵ１０は、当該アドレスの示す記憶領域からデータを読み出すことができる。一方、ＲＥＡＤ  ＢＩＮＡＲＹコマンドには、読み出すデータを含むファイルが設定されているため、ＣＰＵ１０は、当該ファイルに基づいて当該ファイルに含まれるデータの記憶領域を示すアドレスを特定してから、当該特定したアドレスの示す記憶領域に記憶されているデータを読み出す必要がある。その一方で、ＲＥＡＤ  ＤＡＴＡコマンドもＲＥＡＤ  ＢＩＮＡＲＹコマンドも、読み出すデータが記憶されている記憶領域が特定されると、その後はデータを読み出す点で共通する。
【００７８】
なお、図９の例では、ＲＥＡＤ  ＤＡＴＡコマンドとＲＥＡＤ  ＢＩＮＡＲＹコマンドにおけるＣＬＡ部に共通して「００ｈ」が設定されるが、異なる値が設定されることとしてもよい。この場合、ＲＥＡＤ  ＤＡＴＡコマンドとＲＥＡＤ  ＢＩＮＡＲＹコマンドのＩＮＳ部に共通の値が設定されることとしてもよい。
【００７９】
［２．３．２．従来の処理フロー］
［２．３．２．１．ＲＥＡＤ  ＤＡＴＡコマンド受信時］
次に、図１０を用いて、ＲＥＡＤ  ＤＡＴＡコマンドと、ＲＥＡＤ  ＢＩＮＡＲＹコマンドを受信した場合に実行される従来のコマンド実行用プログラムの処理例について説明する。なお、図１０（Ａ）は、ＲＥＡＤ  ＤＡＴＡコマンドに対応するコマンド実行用プログラムの従来処理例を示すフローチャートであり、図１０（Ｂ）は、ＲＥＡＤ  ＢＩＮＡＲＹに対応するコマンド実行用プログラムの従来処理例を示すフローチャートである。
【００８０】
図１０（Ａ）に示すように、ＲＥＡＤ  ＤＡＴＡコマンドを受信したＩＣチップ１ａのＣＰＵ１０は、まず、ＣＬＡ部にセットされている値をチェックする（ステップＳ３０１）。例えば、図９（Ａ）に示すコマンドフォーマットであれば「００ｈ」がセットされているかをチェックする。
【００８１】
次いで、ＣＰＵ１０は、ＩＮＳ部にセットされている値をチェックする（ステップＳ３０２）。例えば、図９（Ａ）に示すコマンドフォーマットであれば「４０ｈ」がセットされているかをチェックする。
【００８２】
次いで、ＣＰＵ１０は、Ｌｃ部にセットされている値をチェックする（ステップＳ３０３）。例えば、図９（Ａ）に示すコマンドフォーマットであれば「０８ｈ」がセットされているかをチェックする。なお、図示しないが、ＣＰＵ１０は、ステップＳ３０１〜ステップＳ３０３の処理におけるチェックの結果、正常でないと判定した場合には、コマンドの送信元に異常ＳＷによる応答をし（ステップＳ３０８）、当該フローチャートに示す処理を終了する。
【００８３】
次に、ＣＰＵ１０は、Ｄａｔａ部に設定されている開始アドレスと終了アドレスを取得する（ステップＳ３０４）。
【００８４】
次に、ＣＰＵ１０は、ステップＳ３０４の処理で取得した開始アドレスと終了アドレスで特定される記憶領域に記憶されているデータを取得する（ステップＳ３０５）。次いで、ＣＰＵ１０は、取得成功か否かを判定する（ステップＳ３０６）。
【００８５】
ＣＰＵ１０は、取得成功であると判定した場合には（ステップＳ３０６：ＹＥＳ）、コマンドの送信元に、ステップＳ３０５の処理で取得したデータ及び正常ＳＷによる応答をし（ステップＳ３０７）、当該フローチャートに示す処理を終了する。一方、ＣＰＵ１０は、取得成功でないと判定した場合には（ステップＳ３０６：ＮＯ）、コマンドの送信元に異常ＳＷによる応答をし（ステップＳ３０８）、当該フローチャートに示す処理を終了する。
【００８６】
［２．３．２．２．ＲＥＡＤ  ＢＩＮＡＲＹコマンド受信時］
一方、図１０（Ｂ）に示すように、ＲＥＡＤ  ＢＩＮＡＲＹコマンドを受信したＩＣチップ１ａのＣＰＵ１０は、まず、ＣＬＡ部にセットされている値をチェックする（ステップＳ３１１）。例えば、図９（Ｂ）に示すコマンドフォーマットであれば「００ｈ」がセットされているかをチェックする。
【００８７】
次いで、ＣＰＵ１０は、ＩＮＳ部にセットされている値をチェックする（ステップＳ３１２）。例えば、図９（Ｂ）に示すコマンドフォーマットであれば「５０ｈ」がセットされているかをチェックする。なお、図示しないが、ＣＰＵ１０は、ステップＳ３１１〜ステップＳ３１２の処理におけるチェックの結果、正常でないと判定した場合には、コマンドの送信元に異常ＳＷによる応答をし（ステップＳ３１７）、当該フローチャートに示す処理を終了する。
【００８８】
次に、ＣＰＵ１０は、Ｐ１部、Ｐ２部に設定されているＦＩＤに基づいて読み出すデータが記憶されている記憶領域を示す開始アドレス及び終了アドレスを取得する（ステップＳ３１３）。
【００８９】
次に、ＣＰＵ１０は、ステップＳ３１３の処理で取得した開始アドレスと終了アドレスで特定される記憶領域に記憶されているデータを取得する（ステップＳ３１４）。次いで、ＣＰＵ１０は、取得成功か否かを判定する（ステップＳ３１５）。
【００９０】
ＣＰＵ１０は、取得成功であると判定した場合には（ステップＳ３１５：ＹＥＳ）、コマンドの送信元に、ステップＳ３１４の処理で取得したデータ及び正常ＳＷによる応答をし（ステップＳ３１６）、当該フローチャートに示す処理を終了する。一方、ＣＰＵ１０は、取得成功でないと判定した場合には（ステップＳ３１５：ＮＯ）、コマンドの送信元に異常ＳＷによる応答をし（ステップＳ３１７）、当該フローチャートに示す処理を終了する。
【００９１】
このように、ＲＥＡＤ  ＤＡＴＡコマンドと、ＲＥＡＤ  ＢＩＮＡＲＹコマンドを受信した場合の従来の処理例を比較すると、ステップＳ３０５〜ステップＳ３０８（ステップＳ３１４〜ステップＳ３１７）の処理が共通する。これは、ＲＥＡＤ  ＤＡＴＡコマンドと、ＲＥＡＤ  ＢＩＮＡＲＹコマンドの機能（不揮発性メモリ１３にデータを読み出す機能）が共通することによる。そこで、本実施形態では、ＲＥＡＤ  ＤＡＴＡコマンドに対応するコマンド実行用プログラムと、ＲＥＡＤ  ＢＩＮＡＲＹコマンドに対応するコマンド実行用プログラムを共通化したコマンド実行用プログラムを作成して記憶させ、従来のＲＥＡＤ  ＤＡＴＡコマンドに対応するコマンド実行用プログラムと、ＲＥＡＤ  ＢＩＮＡＲＹコマンドに対応するコマンド実行用プログラムを記憶させないことにより不揮発性メモリ１３の記憶領域を節約する。
【００９２】
［２．３．３．本実施形態の処理フロー］
以下、図１１を用いて、共通化したコマンド実行用プログラムによる処理例について説明する。なお、図１１は、ＲＥＡＤ  ＤＡＴＡコマンド及びＲＥＡＤ  ＢＩＮＡＲＹコマンドに対応するコマンド実行用プログラムの処理例を示すフローチャートである。
【００９３】
図１１に示すように、ＩＣチップ１ａのＣＰＵ１０は、まず、受信したコマンドがＲＥＡＤ  ＤＡＴＡコマンドであるか否かを判定する（ステップＳ３２１）。ＣＰＵ１０は、受信したコマンドがＲＥＡＤ  ＤＡＴＡコマンドであると判定した場合には（ステップＳ３２１：ＹＥＳ）、次いで、ＣＬＡ部にセットされている値をチェックする（ステップＳ３２２）。例えば、図９（Ａ）に示すコマンドフォーマットであれば「００ｈ」がセットされているかをチェックする。
【００９４】
次いで、ＣＰＵ１０は、ＩＮＳ部にセットされている値をチェックする（ステップＳ３２３）。例えば、図９（Ａ）に示すコマンドフォーマットであれば「４０ｈ」がセットされているかをチェックする。
【００９５】
次いで、ＣＰＵ１０は、Ｌｃ部にセットされている値をチェックする（ステップＳ３２４）。例えば、図９（Ａ）に示すコマンドフォーマットであれば「０８ｈ」がセットされているかをチェックする。なお、図示しないが、ＣＰＵ１０は、ステップＳ３２２〜ステップＳ３２４の処理におけるチェックの結果、正常でないと判定した場合には、コマンドの送信元に異常ＳＷによる応答をし（ステップＳ３３２）、当該フローチャートに示す処理を終了する。
【００９６】
次に、ＣＰＵ１０は、Ｄａｔａ部に設定されている開始アドレスと終了アドレスを取得し（ステップＳ３２５）、ステップＳ３２９の処理に移行する。
【００９７】
一方、ＣＰＵ１０は、受信したコマンドがＲＥＡＤ  ＤＡＴＡコマンドではないと判定した場合には（ステップＳ３２１：ＮＯ）、次いで、ＣＬＡ部にセットされている値をチェックする（ステップＳ３２６）。例えば、図９（Ｂ）に示すコマンドフォーマットであれば「００ｈ」がセットされているかをチェックする。
【００９８】
次いで、ＣＰＵ１０は、ＩＮＳ部にセットされている値をチェックする（ステップＳ３２７）。例えば、図９（Ｂ）に示すコマンドフォーマットであれば「５０ｈ」がセットされているかをチェックする。なお、図示しないが、ＣＰＵ１０は、ステップＳ３２６〜ステップＳ３２７の処理におけるチェックの結果、正常でないと判定した場合には、コマンドの送信元に異常ＳＷによる応答をし（ステップＳ３３２）、当該フローチャートに示す処理を終了する。
【００９９】
次に、ＣＰＵ１０は、Ｐ１部、Ｐ２部に設定されているＦＩＤに基づいて読み出すデータが記憶されている記憶領域を示す開始アドレス及び終了アドレスを取得し（ステップＳ３２８）、ステップＳ３２９の処理に移行する。
【０１００】
次に、ＣＰＵ１０は、ステップＳ３２５又はステップＳ３２８の処理で取得した開始アドレスと終了アドレスで特定される記憶領域に記憶されているデータを取得する（ステップＳ３２９）。次いで、ＣＰＵ１０は、取得成功か否かを判定する（ステップＳ３３０）。
【０１０１】
ＣＰＵ１０は、取得成功であると判定した場合には（ステップＳ３３０：ＹＥＳ）、コマンドの送信元に、ステップＳ３２５又はステップＳ３２８の処理で取得したデータ及び正常ＳＷによる応答をし（ステップＳ３３１）、当該フローチャートに示す処理を終了する。一方、ＣＰＵ１０は、取得成功でないと判定した場合には（ステップＳ３３０：ＮＯ）、コマンドの送信元に異常ＳＷによる応答をし（ステップＳ３３２）、当該フローチャートに示す処理を終了する。
【０１０２】
以上のように、本実施形態のＩＣチップ１ａ（「電子情報記憶媒体」の一例）は、コマンドに対応するプログラムを記憶する不揮発性メモリ１３（「記憶部」の一例）と、外部機器２から受信したコマンドに対応するコマンド実行用プログラム（「プログラム」の一例）を実行するＣＰＵ１０（「実行部」の一例）と、を備え、不揮発性メモリ１３は、発行前コマンド、及び、発行後コマンドの双方に対応する共通化したコマンド実行用プログラム（「所定のコマンド実行用プログラム」の一例）を記憶し、共通化したコマンド実行用プログラムは、発行前コマンドを受信した場合と発行後コマンドを受信した場合の双方で、共通に実行される処理（例えば、図５のステップＳ１２１〜ステップＳ１２３の処理、図８のステップＳ２３０〜ステップＳ２３３の処理、図１１のステップＳ３２９〜ステップＳ３３２の処理）を含む。
【０１０３】
したがって、本実施形態のＩＣチップ１ａによれば、不揮発性メモリ１３が、発行前コマンド及び発行後コマンドの双方に対応する共通化したコマンド実行用プログラムであって、発行前コマンドを受信した場合と発行後コマンドを受信した場合の双方で、共通に実行される処理を含む共通化したコマンド実行用プログラムを記憶し、ＣＰＵ１０が、発行前コマンド及び発行後コマンドを受信した場合にコマンド実行用プログラムを実行する。すなわち、発行前コマンドと発行後コマンドについて、コマンド受信時に実行されるコマンド実行用プログラムを統合して共用化することにより、当該コマンド実行用プログラムを記憶する記憶領域を節約することができる。
【０１０４】
なお、図５を用いて説明した、共通化したコマンド実行用プログラムでは発行フラグ及び発行フラグを用いた判定（ステップＳ１２４）が追加される分だけソースコードのデータ量が増え、不揮発性メモリ１３が記憶するデータ量は増えるが、コマンド実行用プログラムにおける処理（ステップＳ１２１〜ステップＳ１２３の処理）を統一することによるデータ削減量の方が大きい。特に、ステップＳ１２１〜ステップＳ１２３のチェック処理に係るソースコードのデータ量は多いため、当該チェック処理を共通化することによるデータ削減量の方が大きい。
【０１０５】
また、本実施形態のＶＥＲＩＦＹ（ＩＳ）コマンド（「発行前コマンド」の一例）のＣＬＡ部とＶＥＲＩＦＹ（ＵＳＲ）コマンド（「発行後コマンド」の一例）のＣＬＡ部、及び、ＶＥＲＩＦＹ（ＩＳ）コマンドのＩＮＳ部とＶＥＲＩＦＹ（ＵＳＲ）コマンドのＩＮＳ部にはそれぞれ共通の値が設定され、共通化したコマンド実行用プログラムは、ＶＥＲＩＦＹ（ＩＳ）コマンドのＣＬＡ部とＶＥＲＩＦＹ（ＵＳＲ）コマンドのＣＬＡ部に設定された値について共通に実行される処理（図５のステップＳ１２１の処理）、及び、ＶＥＲＩＦＹ（ＩＳ）コマンドのＩＮＳ部とＶＥＲＩＦＹ（ＵＳＲ）コマンドのＩＮＳ部に設定された値について共通に実行される処理（図５のステップＳ１２２の処理）と、を含む。これにより、ステップＳ１２１及びステップＳ１２２で実行される処理を共用化することができ、コマンド実行用プログラムを記憶する記憶領域を節約することができる
【０１０６】
更に、本実施形態のＳＴＯＲＥ  ＤＡＴＡコマンド（「発行前コマンド」の一例）のＣＬＡ部とＷＲＩＴＥ  ＢＩＮＡＲＹコマンド（「発行後コマンド」の一例）のＣＬＡ部、又は、ＳＴＯＲＥ  ＤＡＴＡコマンドのＩＮＳ部とＷＲＩＴＥ  ＢＩＮＡＲＹコマンドのＩＮＳ部の少なくとも何れか一方は異なる値が設定され、共通化したコマンド実行用プログラムは、ＳＴＯＲＥ  ＤＡＴＡコマンドを受信した場合とＷＲＩＴＥ  ＢＩＮＡＲＹコマンドを受信した場合の双方で、不揮発性メモリ１３に対して共通に実行される処理（図８のステップＳ２３０〜ステップＳ２３３の処理）を含む。これにより、不揮発性メモリ１３に対して共通に実行される処理を共用化することができ、コマンド実行用プログラムを記憶する記憶領域を節約することができる。
【０１０７】
更にまた、ＳＴＯＲＥ  ＤＡＴＡコマンド及びＷＲＩＴＥ  ＢＩＮＡＲＹコマンドに対応する共通化したコマンド実行用プログラムにおいて不揮発性メモリ１３に対して共通に実行される処理は、不揮発性メモリ１３にデータを書き込む処理であり、より具体的には、ＳＴＯＲＥ  ＤＡＴＡコマンド及びＷＲＩＴＥ  ＢＩＮＡＲＹコマンドにおけるＤａｔａ部に設定されているデータを、不揮発性メモリ１３に書き込む処理である。これにより、不揮発性メモリ１３にデータを書き込む処理（図８のステップＳ２３０〜ステップＳ２３３の処理）を共用化することができ、コマンド実行用プログラムを記憶する記憶領域を節約することができる。
【０１０８】
更にまた、本実施形態のＲＥＡＤ  ＤＡＴＡコマンド（「発行前コマンド」の一例）のＣＬＡ部とＲＥＡＤ  ＢＩＮＡＲＹコマンド（「発行後コマンド」の一例）のＣＬＡ部、又は、ＲＥＡＤ  ＤＡＴＡコマンドのＩＮＳ部とＲＥＡＤ  ＢＩＮＡＲＹコマンドのＩＮＳ部の少なくとも何れか一方は異なる値が設定され、共通化したコマンド実行用プログラムは、ＲＥＡＤ  ＤＡＴＡコマンドを受信した場合とＲＥＡＤ  ＢＩＮＡＲＹコマンドを受信した場合の双方で、不揮発性メモリ１３に対して共通に実行される処理（図１１のステップＳ３２９〜ステップＳ３３２の処理）を含む。これにより、不揮発性メモリ１３に対して共通に実行される処理（図１１のステップＳ３２９〜ステップＳ３３２の処理）を共用化することができ、コマンド実行用プログラムを記憶する記憶領域を節約することができる。
【０１０９】
更にまた、ＲＥＡＤ  ＤＡＴＡコマンド及びＲＥＡＤ  ＢＩＮＡＲＹコマンドに対応する共通化したコマンド実行用プログラムにおいて不揮発性メモリ１３に対して共通に実行される処理は、不揮発性メモリ１３のデータを読み出す処理（図１１のステップＳ３２９〜ステップＳ３３２の処理）である。これにより、不揮発性メモリ１３のデータを読み出す処理（図１１のステップＳ３２９〜ステップＳ３３２の処理）を共用化することができ、コマンド実行用プログラムを記憶する記憶領域を節約することができる。
【符号の説明】
【０１１０】
１  ＩＣカード
１ａ  ＩＣチップ
１０  ＣＰＵ
１１  ＲＡＭ
１２  ＲＯＭ
１３  不揮発性メモリ
１４  Ｉ／Ｏ回路
２  外部機器
【図１】
2019159799.tif 000003
【図２】
2019159799.tif 000004
【図３】
2019159799.tif 000005
【図４】
2019159799.tif 000006
【図５】
2019159799.tif 000007
【図６】
2019159799.tif 000008
【図７】
2019159799.tif 000009
【図８】
2019159799.tif 000010
【図９】
2019159799.tif 000011
【図１０】
2019159799.tif 000012
【図１１】
2019159799.tif 000013