APDU を送信する PIN を確認したいのですね。ドキュメント IDPrime .NET スマート カード - 統合ガイド (APDU エンコーディングと Hivecodes) の参照。このドキュメントによると、verifyPIN メソッドの APDU (表 16 - V5 の Hivecodes を参照) は次のようになります (ロール USER = 0x01 および PIN=1234 の例)。
80C200001BD800056F00C04B4E7FBD506B00044D53434D010000000431323334
説明:
APDU = APDU ヘッダー + APDU ペイロード
APDU ヘッダーは80C20000 1Bに等しく、ここで:
- 80C20000 - いつも同じ
- 1B (16 進数) - 27 (10 進数) は 1 バイトのペイロード長です。
APDU ペイロードは、D8 0005 6F 00C04B4E 7FBD 506B 0004 4D53434D 01 00000004 31323334と等しくなります。
- D8 - 何も変更しない
- 0005 - サービス ポート番号 (2 バイト)
- 6F - 変更なし
- 00C04B4E - サービス名前空間のハイブコード (4 バイト)
- 7FBD - サービスタイプのハイブコード (2 バイト)
- 506B - VeryfiyPin メソッドの 506B である Method Hivecode (ドキュメントを参照)
- 0004 - サービス名の長さ (0004)
- 4D53434D - UTF8 でエンコードされたサービス名 (サービス名 - MSCM (4D53434D))
- 01 - ユーザーの役割 (ユーザー = 0x01、管理者 = 0x02、全員 = 0x03)
- 00000004 - データサイズ (この場合の PIN の長さは 4 に等しい)
- 31323334 - PIN の 16 進値 = 1234
PIN が正しい場合は、応答で 9000 を取得する必要があります。
PIN = 12345 の別の例:
80C200001CD800056F00C04B4E7FBD506B00044D53434D01000000053132333435