abc SAM ライブラリマニュアル このマニュアルは、SAM ライブラリの 仕様について記載します。 Ver. 1.
ご注意 ● このソフトウェアおよびマニュアルの、一部または全部を無断で使用、複製することはできません。 ● このソフトウェアおよびマニュアルは、本製品の使用許諾契約書のもとでのみ使用することができます。 ● このソフトウェアおよびマニュアルを運用した結果の影響については、一切の責任を負いかねますのでご了 承ください。 ● このソフトウェアの仕様、およびマニュアルに記載されている事柄は、将来予告なしに変更することがありま す。 ● このマニュアルの著作権はカシオ計算機株式会社に帰属します。 ● 本書中に含まれている画面表示は、実際の画面とは若干異なる場合があります。予めご了承ください。 © 2012 カシオ計算機株式会社 Microsoft, MS, ActiveSync, Active Desktop, Outlook, Windows, Windows NT, および Windows ロゴは、米国 Microsoft Corporation の米国およびその他の国における登録商標または商標です。Microsoft 社の製品は、OEM 各社に、Microsoft Corporation の 100%出資子会
変更履歴 バージョン 0.90 0.91 0.92 1.00 変更日付 2011.11 2011.12 2012.01 2012.
目次 1. 概要···················································································································································································1 2. 動作環境 ·········································································································································································2 3.
1. 概要 SAM(Secure Application Module)ライブラリは、SAM スロットに挿入した SAM カードとの通信を行う関数 を提供します。 SAM カード SAM カードは、非接触 IC カード内のセキュリティが保護された領域(セキュリティ領域)のデータの読み書 きを行なう際に使用します。非接触 IC カードのセキュリティ領域へのアクセス手順の概要は以下のとおり です。 1. SAM カードにコマンドを送信し、暗号化コマンドを生成します。 2. 非接触 IC カードに 1.で生成した暗号化コマンドを送信し、暗号化コマンドの応答情報を受信します。 3. SAM カードに 2.
2. 動作環境 SAM ライブラリの動作環境を以下に示します。 対象機種 • IT-9000 対象 OS • Microsoft WindowsCE 6.0 • Microsoft WindowsMobile 6.5 開発環境とプログラミング言語 Visual C++ 開発環境 Microsoft Visual Studio 2005 + SP1 Microsoft Visual Studio 2008 + SP1 ○ ○ Visual Basic, Visual C# ○ ○ 提供ファイル ファイル SAMLib.h SAMLib.lib SAMLib.dll SAMLibNet.dll (クラスライブラリ) Visual C++ ○ ○ ○ - Visual Basic, Visual C# ○ ○ (○:必要、-:不要) 使用方法 Visual C++の場合 • プログラムソース内に SAMLib.h をインクルードし、リンカの依存ファイルとして SAMLib.lib を指定してく ださい。 • SAMLib.
名前空間とクラス クラスライブラリ SAMLibNet.dll では、関数および定数の参照用として、下記のクラスが用意されています。 名前空間 CaLib クラス名 SAMLibNet.Api SAMLibNet.Def 内容 関数参照用クラス 定数参照用クラス クラス定義の詳細については、Microsoft Visual Studio で SAMLibNet.
3. 機能一覧 3.1 関数一覧 SAM ライブラリの提供する関数は、以下のとおりです。 機能 IT-9000 関数名 SAMOpen カードコントローラを電源 ON ○ SAMClose カードコントローラを電源 OFF ○ SAMPowerUpCard 指定したカードスロットの SAM カードを電源 ON ○ SAMPowerDownCard 指定したカードスロットの SAM カードを電源 OFF ○ SAMExchangeData 起動した SAM カードとの通信 ○ SAMGetNumberOfSlot SAM カードのスロット数を取得 ○ SAMGetCardResponse 起動した SAM カードの ATR 情報を取得 ○ SAMNegotiate 起動した SAM カードとの PPS ○ ○ 関数サポート − 関数未サポート ※ 複数のカードスロットを搭載するモデルの場合、スロットの番号は左端から順にスロット 1、スロット 2、ス ロット 3 となります。 関数呼び出し手順 アプリケーション起動時 1.
3.1.
3.1.
3.1.
SAM_ERROR_NOCARD SAM_ERROR_MODULE SAM_ERROR_RESPONSE FUNCTION_UNSUPPORT : SAM カード未挿入エラー DeviceEmulator では発生しません : モジュール未応答エラー DeviceEmulator では発生しません : SAM カード異常応答発生エラー DeviceEmulator では発生しません : 関数未サポート 8
3.1.
3.1.
dwSendSize pbySendData に指定するバイナリデータのサイズを指定します。 pbyReceiveData SAM カードからの応答情報(バイナリデータ)を取得します。 バッファサイズは 506 バイト以上確保してください。 pdwActualSize pbyReceiveData が取得したバイナリデータのサイズを取得します。 dwReserved 現在のバージョンではこの引数を使用しません。0 を指定してください。 戻り値 以下の値を返します。 SAM_OK SAM_NOT_DEVICE SAM_POF SAM_PRM SAM_ERROR_NOCARD SAM_ERROR_TIMEOUT SAM_ERROR_SUSPEND SAM_NOT_ACTIVATION SAM_ERROR_RESPONSE FUNCTION_UNSUPPORT : 正常終了 : SAM ドライバエラー DeviceEmulator では発生しません : 未オープンエラー : パラメータエラー : SAM カード未挿入エラー DeviceEmulator では発生しません : タイムアウトエラー Device
3.1.
3.1.
[TS] 開始キャラクタ(必須) [T0] 構成表示キャラクタ(必須) 上位 4bit :TD(1)∼TA(1)の有無を符号化 下位 4bit :管理情報バイトの個数(0∼15) 接続情報キャラクタ(任意) 共通、Fi / Di を符号化 ああ [TA(1)] ああ [TB(1)] ああ [TC(1)] ああ [TD(1)] ああ [TA(2)] ああ [TB(2)] ああ [TC(2)] ああ [TD(2)] ああ [TA(3)] (省略) [T1] (省略) [TK] 共通、Ii / Pi を符号化 共通、N を符号化 TD(2)∼TA(2)の有無と T を符号化 共通、Fi / Di を符号化 共通、Pi2 を符号化 固有 TD(2)∼TA(2)の有無と T を符号化 T≠15 のとき伝送プロトコルパラメータ、T=15 のとき IC パラメータ 管理情報キャラクタ(任意) (最大 15 キャラクタ) [TCK] 検査キャラクタ TD(1)が存在しないとき TCK は存在してはならない ※ ATR 応答情報の詳細については ISO7816 の規格書を参照してください pdwActualS
3.1.
dwReserved 現在のバージョンではこの引数を使用しません。0 を指定してください。 戻り値 以下の値を返します。 SAM_OK SAM_NOT_DEVICE SAM_POF SAM_PRM SAM_ERROR_NOCARD SAM_NOT_ACTIVATION SAM_ERROR_TIMEOUT SAM_ERROR_SUSPEND SAM_ERROR_RESPONSE FUNCTION_UNSUPPORT : 正常終了 : SAM ドライバエラー DeviceEmulator では発生しません : 未オープンエラー : パラメータエラー : SAM カード未挿入 DeviceEmulator では発生しません : カード未起動エラー : タイムアウトエラー DeviceEmulator では発生しません : 本体 OFF 発生エラー DeviceEmulator では発生しません : SAM カード異常応答発生エラー DeviceEmulator では発生しません : 関数未サポート 16
4. プログラミング上の注意点 4.1 FeliCa セキュリティ領域との通信について FeliCa セキュリティ領域と通信する場合(全体) 1. 2. 3. 4. 5. 6. 7. 8.
FeliCa セキュリティ領域と通信する場合(詳細) 1. SAMPowerUpCard関数により SAM カードの電源を ON にし、通信可能状態にします。 2. SAMExchangeData関数により FeliCa SAM カードに対 して通信を行い、アプリケーションと FeliCa SAM カード の相互認証を行います。 3. SAMExchangeData関数により FeliCa SAM カードに対 して通信を行い、また、NFCExchangeData 関数により FeliCa カードと通信を行うことで、FeliCa SAM カードと FeliCa カードの相互認証を行います。 4. SAMExchangeData関数により、FeliCa SAM カードに 対して、FeliCa Read Block コマンドを送信し、暗号化 された Read コマンドを応答情報として取得します。 5. NFCExchangeCard 関数により、FeliCa SAM カードに 対して、手順 4.で取得した暗号化された Read コマンド を送信すると、暗号化された応答情報を取得します。 6.
4.2 SAM スロットを切り替えながらの通信について 複数の SAM を切り替えながら通信を行う場合 1. SAMOpen関数によりカードコントローラの電源を ON にします。 2. SAMPowerUpCard関数により、カードスロット 1 の SAM カードの電源を ON にし、通信可能状態にします。 3. SAMPowerUpCard関数により、カードスロット 2 の SAM カードの電源を ON にし、通信可能状態にします。 4. SAMExchangeData関数によりカードスロット 1 の SAM カードとの通信を行 います。このとき、カードスロット 1 の SAM カードは手順 2.により通信可能 状態になっているため、カードスロットを素早く切り替えてアクセスすること ができます。 5. SAMExchangeData関数によりカードスロット 2 の SAM カードとの通信を行 います。このとき、カードスロット 2 の SAM カードは手順 3.により通信可能 状態になっているため、カードスロットを素早く切り替えてアクセスすること ができます。 6.
カシオ計算機お問い合わせ窓口 製品に関する最新情報 ●製品サポートサイト(カシオペア・ハンディターミナル) http://casio.