(57)【要約】【課題】  ＩＣカードが連鎖送受信する時の通信プロトコルの効率を改善する方法を提供する。【解決手段】  ＩＣカードからの送信時に、アプリケーション３０から接続装置に送信するデータの情報長が接続装置の最大情報フィールド長（ＩＦＳＤ）より長い場合、ＩＣカードの制御を行うシステムプログラム２０の通信ライブラリ２１がデータをＩＦＳＤ以下のデータ長に分割し、接続装置に連鎖送信を行う。また、ＩＣカードの受信時に、ＩＣカードの最大情報フィールド長（ＩＦＳＣ）より短い情報長のデータを受信した場合、通信ライブラリ２１によりデータを一時的にバッファに格納し、データを通信ライブラリ２０で結合してからアプリケーション３０に渡すことでアプリケーション３０の連鎖送受信に係る負担を軽減する。【選択図】  図１
2005141677.tif 000002
【特許請求の範囲】
【請求項１】
ＩＣカードのシステムプログラム上で動作するアプリケーションと、前記ＩＣカードと接続する接続装置との間のデータ通信を行うための前記システムプログラムに含まれる通信プログラムの集合体としての通信ライブラリであって、
前記アプリケーションから前記接続装置へ送信するデータの情報長が前記接続装置の最大情報フィールド長より長い場合、送信する前記データを前記アプリケーションから受け取り、前記最大情報フィールド長以下のデータ長に分割し、前記接続装置にブロック連鎖送信を行う一連の処理を実行するプログラムを含むことを特徴とするＩＣカード用通信ライブラリ。
【請求項２】
前記接続装置から送信された最大情報フィールド長変更要求を受信すると、前記最大情報フィールド長情報を変更して保持する処理と、
前記アプリケーションから前記接続装置へ送信するデータの情報長が前記変更後の最大情報フィールド長より長い場合、送信する前記データを前記アプリケーションから受け取り、前記変更後の最大情報フィールド長以下のデータ長に分割し、前記接続装置にブロック連鎖送信を行う一連の処理を実行するプログラムを含むことを特徴とする請求項１に記載のＩＣカード用通信ライブラリ。
【請求項３】
前記接続装置から連鎖送信された各データを、一時的にバッファに格納し、連鎖送信された前記各データを結合してから前記アプリケーションに渡す一連の処理を実行するプログラムを含むことを特徴とする請求項１または２に記載のＩＣカード用通信ライブラリ。
【請求項４】
請求項１〜３の何れか１項に記載のＩＣカード用通信ライブラリをシステムプログラムに含むことを特徴とするＩＣカード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリやＣＰＵを搭載したＩＣカードに搭載するシステムプログラムに関し、より詳細には、当該システムプログラム上で動作するＩＣカードに搭載されたアプリケーションと、ＩＣカードと接続する接続装置との間のデータ通信を行うための通信ライブラリに関する。
【背景技術】
【０００２】
不揮発性メモリ、ＣＰＵ等を搭載したＩＣカードは、磁気カードに比べ大量のデータを扱うことができ、セキュリティに優れていることから今後普及していくことが考えられる。
【０００３】
ＩＣカードと接続しデータの送受信を行う装置（以下、接続装置）との通信にはＩＳＯ／ＩＥＣ７８１６‐３で規格化されているＴ＝１プロトコル（以下、「Ｔ＝１プロトコル」と称す。）が広く用いられている。
【０００４】
Ｔ＝１プロトコルでは、接続装置とＩＣカードの間を非同期半二重のブロック伝送で通信を行う。ブロックは先頭フィールド、情報フィールド、最終フィールドで構成されており、情報フィールドにＩＣカード、接続装置から伝送するデータを含めるよう構成されている。ＩＣカード、接続装置が送信する通信ブロックには接続装置それぞれに応じた情報フィールドの最大長の制限があり、受け取ることのできるブロックの最大の情報フィールド長を表している。このため、受信側の最大情報フィールド長よりも長いデータを送信する場合は、同規格に規定されている連鎖機能といわれる通信機能によってデータを伝送する必要がある。つまり、連鎖送信では、送信するデータを、受信側である接続装置の最大情報フィールド長以下の情報長に分割して、分割した情報をそれぞれ異なるブロックの情報フィールドに格納して送信を行うことが規定されている。その際、情報フィールドは最大情報フィールド長以下ならどのような値でも伝送できる。
【０００５】
ＩＣカードからＩＦＳＤ（maximum information field size for the interface device、接続装置の最大情報フィールド長）を超える情報長のデータを送信する場合、データの情報長をＩＦＳＤ以下に分割し、ブロック連鎖機能を使用して接続装置にデータを送信する。従来技術において、この送信データの分割処理は、システムプログラム上のアプリケーションプログラムによって行われ、分割されたデータをシステムプログラムの通信ライブラリに渡していた。
【０００６】
図８に、従来技術において、データ「ＡＢＣＤＥＦＧＨＩ」をＩＦＳＤ以下の「ＡＢＣ」、「ＤＥＦ」、「ＧＨＩ」に分割してＩＣカードから接続装置に送信する場合の通信処理のフローを示す。以下の処理（１）〜（４）は、図８中の（１）〜（４）に夫々対応する。
【０００７】
（１）  ＩＣカードは接続装置からコマンドを受信する。
（２）  アプリケーションは「ＡＢＣ」のデータを通信ライブラリに渡し、通信ライブラリから連鎖送信で送信先である接続装置に「ＡＢＣ」を送信する。
（３）  アプリケーションは「ＤＥＦ」のデータを通信ライブラリに渡し、通信ライブラリから連鎖送信で接続装置に「ＤＥＦ」を送信する。
（４）  アプリケーションは「ＧＨＩ」のデータを通信ライブラリに渡し、通信ライブラリから接続装置に「ＧＨＩ」を送信する。
【０００８】
尚、図８において、アプリケーションの情報伝達に使用される情報ブロック（Ｉブロック）は、Ｉ（Ｎ（Ｓ），Ｍ）の書式で表されており、Ｎ（Ｓ）はブロックの送信シーケンス番号、Ｍはブロック連鎖ビットを表す。また、接続装置からの肯定または否定応答の伝達に使用される受信準備完了ブロック（Ｒブロック）は、Ｒ（Ｎ（Ｒ））の書式で表されており、Ｎ（Ｒ）は次に期待するＩブロックの送信シーケンス番号を表す。
【０００９】
従来技術において、接続装置から連鎖送信されるブロックのデータはシステムプログラムによってバッファリングされることなく、受信する度にシステムプログラム上のアプリケーションに渡していた。ＩＳＯ／ＩＥＣ７８１６‐４において、接続装置とＩＣカードで送受信するアプリケーションデータの構造が規定されており、接続装置からＩＣカードに送信するコマンドは、４バイトのコマンドヘッダと可変長のデータ部で構成されると規定されている。ＩＣカード上のアプリケーションは、接続装置から送信されるコマンドヘッダを判定して処理を行う。接続装置から連鎖送信されたデータの情報長がコマンドの判定に必要なコマンドヘッダのサイズ４バイトより短い場合、アプリケーション側でコマンドの判別に必要なコマンドヘッダを受信するまで受信データをＲＡＭ上にバッファリングする必要がある。
【００１０】
尚、ＩＣカードが受信し得る電文の最大長（ＩＦＳＣ値）に変更が生じた場合でも、それに伴う面倒な処理を不要として係員にかかる負担を軽減し得るＩＣカード処理装置（接続装置）を提供する技術として、下記の特許文献１に開示されているＩＣカード処理装置がある。
【特許文献１】特開２０００‐１１３１１８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、従来の技術では以下の問題点を含んでいる。つまり、ＩＦＳＤの値は接続装置によって異なり、ＩＣカード上のアプリケーションがＩＦＳＤ以下にデータを分割し、接続装置に送信する処理をＩＣカード上に搭載するアプリケーションそれぞれに組み込む必要があり、アプリケーション作成者にとって面倒であった。
【００１２】
また、受信時のバッファ処理はアプリケーション毎にバッファメモリを必要とし、ＲＡＭの記憶容量の小さいＩＣカード上のアプリケーションにとってバッファメモリを確保するのは負担である。また、バッファ処理をアプリケーション毎に組み込むのは面倒であった。
【００１３】
本発明は、上記問題点に鑑みてなされたもので、アプリケーション毎に作成していたブロック連鎖送受信処理をシステムプログラム上で実行可能とし、アプリケーション作成者の負担を軽減し、それぞれのアプリケーション毎に組み込まれていたブロック連鎖送受信処理を不要とすることでＩＣカードに搭載するアプリケーションのプログラムサイズの削減を可能とすることを目的とする。
【課題を解決するための手段】
【００１４】
上記目的を達成するための本発明に係るＩＣカード用通信ライブラリは、ＩＣカードのシステムプログラム上で動作するアプリケーションと、前記ＩＣカードと接続する接続装置との間のデータ通信を行うための前記システムプログラムに含まれる通信プログラムの集合体としての通信ライブラリであって、前記アプリケーションから前記接続装置へ送信するデータの情報長が前記接続装置の最大情報フィールド長より長い場合、送信する前記データを前記アプリケーションから受け取り、前記最大情報フィールド長以下のデータ長に分割し、前記接続装置にブロック連鎖送信を行う一連の処理を実行するプログラムを含むことを第１の特徴とする。
【００１５】
上記第１の特徴の本発明に係るＩＣカード用通信ライブラリによれば、アプリケーションから渡されるデータの情報長を接続装置のＩＦＳＤ（最大情報フィールド長）と比較し、ＩＦＳＤより長い情報長のデータをＩＦＳＤ以下のデータに分割し接続装置へ連鎖送信することができる。この結果、アプリケーション側でデータ分割や連鎖送信の処理を行わずともよく、当該処理をアプリケーション作成時に組み込む必要がなく、アプリケーション作成者の負担を軽減できるとともに、アプリケーションのプログラムサイズの削減も可能となる。
【００１６】
また、好ましくは、上記第１の特徴の本発明に係るＩＣカード用通信ライブラリにおいて、前記接続装置から送信された最大情報フィールド長変更要求を受信すると、前記最大情報フィールド長情報を変更して保持する処理と、前記アプリケーションから前記接続装置へ送信するデータの情報長が前記変更後の最大情報フィールド長より長い場合、送信する前記データを前記アプリケーションから受け取り、前記変更後の最大情報フィールド長以下のデータ長に分割し、前記接続装置にブロック連鎖送信を行う一連の処理を実行するプログラムを含むことを第２の特徴とする。
【００１７】
この第２の特徴によれば、接続装置のＩＦＳＤを保持し、接続装置からの最大情報フィールド長変更要求を処理することができるので、ＩＣカードに接続する接続装置のＩＦＳＤが異なっても、対応可能となり、ＩＦＳＤの異なる種々の接続装置に対して上記第１の特徴の作用効果を奏することができる。
【００１８】
更に好ましくは、上記何れかの特徴の本発明に係るＩＣカード用通信ライブラリにおいて、前記接続装置から連鎖送信された各データを、一時的にバッファに格納し、連鎖送信された前記各データを結合してから前記アプリケーションに渡す一連の処理を実行するプログラムを含むことを第３の特徴とする。
【００１９】
この第３の特徴によれば、接続装置から送信されるＩＦＳＣ（maximum information field size for the card、ＩＣカードの最大情報フィールド長）より短いデータを通信ライブラリでバッファし、連鎖ブロックのデータを結合してからアプリケーションに渡す通信ライブラリを提供できる。このようなバッファ処理をシステムプログラムで処理すれば、受信時のアプリケーションの負担を軽減できる。システムプログラムでバッファできるデータサイズが大容量であればプロトコル処理の効率は上がるが、ＩＣカードのコストの面から大容量のＲＡＭをＩＣカードに搭載することは困難である。接続装置からの受信データを、ＩＦＳＣを超える値までバッファするにはＩＦＳＣのサイズ分のデータを格納するＲＡＭが、受信ＲＡＭとは別に必要になる。アプリケーションがコマンド判別に必要なバイト数バッファできれば、アプリケーションのコマンド判別処理の負担は軽減されるため、ＩＦＳＣに満たないデータ長でも、ある程度の情報長のデータがバッファされた段階で、アプリケーションにバッファしたデータを渡すことは通信の効率改善に効果がある。
【００２０】
本発明に係るＩＣカードは、上記第１〜第３の何れかの特徴のＩＣカード用通信ライブラリをシステムプログラムに含むことを特徴とする。これにより、上記第１〜第３の何れかの特徴のＩＣカード用通信ライブラリによる作用効果を奏することができるＩＣカードを提供できる。
【発明を実施するための最良の形態】
【００２１】
本発明に係るＩＣカード用通信ライブラリ（以下、単に「通信ライブラリ」という。）、及び、その通信ライブラリをシステムプログラムに含む本発明に係るＩＣカードの一実施の形態につき、図面に基づいて説明する。
【００２２】
本実施形態に係るＩＣカードシステムは、図１に示すように、ＣＰＵ１１、ＲＡＭ（ランダムアクセスメモリ）１２、通信回路１３、不揮発性メモリ１４等のＩＣカードハードウェア１０と、その上で動作するシステムプログラム２０、システムプログラム２０に含まれる通信プログラムの集合である通信ライブラリ２１、システムプログラム２０上で動作するアプリケーションプログラム３０で構成される。通信ライブラリ２０で、ＩＣカード活性化後に接続装置から送信される最大情報フィールド長変更要求を処理し、ブロック分割処理、連鎖送信処理、受信データバッファ処理を行う。
【００２３】
図２に、Ｔ＝１プロトコルのブロックの構成を示す。ブロックは先頭フィールド、情報フィールドＩＮＦ（information field）、最終フィールドＥＤＣ（error detection code）から構成されている。尚、先頭フィールドはＮＡＤ（node address byte）、ＰＣＢ（protocol control byte）、ＬＥＮ（length byte）で構成されている。ＮＡＤはブロックの送信元及び宛先を識別し、ＰＣＢは送受信の制御に必要な情報を送るために使用し、ＬＥＮはブロックの情報フィールドのバイト数を示す。ブロックは用途によりＩブロック、Ｒブロック、Ｓブロックの３種類があり、ＩブロックはＩＣカードと接続装置との間でアプリケーションデータの送受信を行うのに使用され、Ｒブロックは肯定または否定応答を行うのに使用され、Ｓブロックは接続装置とＩＣカード間で制御情報を交換するのに使用される。
【００２４】
図３に、連鎖送信の手順を示す。連鎖送信はＩブロックで行われる。ＩブロックのＰＣＢバイトは図４のように構成されている。ＰＣＢバイトのｂ６（ブロック連鎖ビット）によって連鎖送信が制御される。ＰＣＢバイトのｂ６が「１」の時には、ブロックは連鎖送信中であり、更にブロックが続くことを示している。また、ＰＣＢバイトのｂ７は送信シーケンス番号を表す。
【００２５】
図３は、より具体的には、ＩＣカードから「ＡＢＣＤＥＦＧＨＩ」のデータを「ＡＢＣ」、「ＤＥＦ」、「ＧＨＩ」に分割して接続装置に連鎖送信する手順を示すものである。ＰＣＢのブロック連鎖ビットを「１」にして「ＡＢＣ」を情報フィールドとして送信する。次に「ＤＥＦ」を前記と同様にブロック連鎖ビットを「１」にして送信する。最後に「ＧＨＩ」をＰＣＢのブロック連鎖ビットを「０」にして送信する。尚、図３中、Ｉ（Ｎ（Ｓ），Ｍ）の書式で表されているＩブロックのＮ（Ｓ）がブロックの送信シーケンス番号、Ｍがブロック連鎖ビットを表す。また、Ｒ（Ｎ（Ｒ））の書式で表されているＲブロックのＮ（Ｒ）は次に期待するＩブロックの送信シーケンス番号を表す。また、後述する図６中の記載において同じである。
【００２６】
ＩＣカードでは、接続装置のＩＦＳＤの初期値はＩＳＯ／ＩＥＣ７８１６‐３で「３２」に設定するよう規定されているので、接続装置はＩＦＳＤを変更するためＩＦＳ変更要求をＩＣカードに送信して、これを受けたＩＣカード側ではＩＦＳＤの変更を行う。
【００２７】
図５に、ＩＣカードのシステムプログラムがＩＣカードに搭載されているアプリケーションプログラムから送信データを受け取り、前記システムプログラムの一部である通信ライブラリから接続装置にデータを送信する手順を示す。通信ライブラリはアプリケーションからデータを受け取り(Ｓ１１)、受け取ったデータの情報長がＩＦＳＤ以下かどうか判定を行い(Ｓ１２)、送信データ長がＩＦＳＤ以下の場合、通信ライブラリはデータをそのまま送信データの情報フィールドデータとして接続装置に送信し(Ｓ１３)、通信処理を終了する。
【００２８】
一方、Ｓ１２の判定において送信情報長がＩＦＳＤより長い場合、ＩＦＳＤ以下のデータと残りのデータに分割し(Ｓ１４)、分割したデータを送信データとして、Ｓ１４と同様の手順で送信する(Ｓ１５)。残りのデータについて前記と同様に情報長をＩＦＳＤと比較し(Ｓ１６)、ＩＦＳＤより長い場合は分割送信を繰り返す。残りデータの情報長がＩＦＳＤ以下になったら、残りデータを送信データとして接続装置に送信し(Ｓ１７)、通信処理を終了する。
【００２９】
図６に、アプリケーションから「ＡＢＣＤＥＦＧＨＩ」のデータを通信ライブラリに渡し、通信ライブラリから接続装置に連鎖送信を行う処理フローを示す。以下の処理（１）〜（３）は、図６中の（１）〜（３）に夫々対応する。
【００３０】
（１）  ＩＣカードは接続装置からコマンドI(０,０)を受信する。
（２）  アプリケーションは「ＡＢＣＤＥＦＧＨＩ」の送信データを通信ライブラリに渡す。
（３）  通信ライブラリが「ＡＢＣＤＥＦＧＨＩ」の送信データを「ＡＢＣ」、「ＤＥＦ」、「ＧＨＩ」に分割して、連鎖送信で接続装置に送信する。
【００３１】
図７に、通信ライブラリで接続装置からの送信データを受信する受信手順を示す。本実施形態において、連鎖受信処理のためのバッファのサイズは１６バイトとしている。接続装置から送信された通信ブロックを受け取る(Ｓ２１)。受信したブロックが連鎖ブロックかどうかを情報フィールドのブロック連鎖ビットにて判定を行い(Ｓ２２)、連鎖ブロックでない場合は、受信データとバッファのデータをアプリケーションに渡して(Ｓ２５)終了する。
【００３２】
一方、Ｓ２２の判定において連鎖ブロックである場合は、受信データとバッファにあるデータの合計サイズが１６バイト以上か判定を行い(Ｓ２３)、合計サイズが１６バイト以上の場合は、アプリケーションに受信データとバッファデータを渡して(Ｓ２５)受信を終了する。Ｓ２３の判定において１６バイト未満の場合は、受信データをバッファに追加して(Ｓ２４)、更に、連鎖ブロックのデータを受信するため、アプリケーションにデータを渡さずにデータ受信処理を続ける。
【００３３】
以上説明したように、この発明に係る通信ライブラリを用いれば、アプリケーションからＩＦＳＤより長いデータを送信する場合にブロック分割、連鎖送信の処理をアプリケーションが行う必要が無くなり、アプリケーション作成における負担を軽減できる。
【００３４】
更に、受信バッファ処理によりアプリケーションにおける連鎖受信処理の作成に係る負担を軽減し、バッファリングに必要なＲＡＭをアプリケーションが確保する必要がなくなり、ＩＣカード上のＲＡＭを有効に利用することができる。また、アプリケーションでコマンド判定に必要な情報長以下のデータに対する処理に係る負担を軽減することができるという効果を奏する。
【図面の簡単な説明】
【００３５】
【図１】本発明に係るＩＣカードの一実施形態におけるハードウェア及びソフトウェアの構成例を示すブロック図
【図２】ＩＣカードシステムのＩＳＯ／ＩＥＣ７８１６‐３で規格化されているＴ＝１プロトコルのブロックデータ転送フォーマットを示す説明図
【図３】本発明に係るＩＣカード用通信ライブラリによるブロック連鎖送信を示す説明図
【図４】図２に示すブロックデータ転送フォーマットにおけるＩブロックのＰＣＢバイトの構成を示す説明図
【図５】本発明に係るＩＣカード用通信ライブラリによる分割送信処理の一例を示すフローチャート
【図６】本発明に係るＩＣカードから接続装置へのブロック連鎖送信の一例を模式的に説明する図
【図７】本発明に係るＩＣカード用通信ライブラリによるデータバッファ処理の一例を示すフローチャート
【図８】従来のＩＣカードにおけるブロック連鎖送信の一例を模式的に説明する図
【符号の説明】
【００３６】
１０．  ＩＣカードハードウェア
１１．  ＣＰＵ
１２．  ＲＡＭ
１３．  通信回路
１４．  不揮発性メモリ
２０．  システムプログラム
２１．  通信ライブラリ
３０．  アプリケーションプログラム
【図１】
2005141677.tif 000003
【図２】
2005141677.tif 000004
【図３】
2005141677.tif 000005
【図４】
2005141677.tif 000006
【図５】
2005141677.tif 000007
【図６】
2005141677.tif 000008
【図７】
2005141677.tif 000009
【図８】
2005141677.tif 000010