スマート カード リーダーと連携し、スマート カードから情報を読み取るアプリケーションを開発しようとしています。
開発環境と使用ハードウェアをご紹介します。
OS: Red Hat Enterprise Linux 6
IDE: Eclipse Juno CDT
言語: C/C++
ハードウェア:
スマート カード リーダー: Omnikey 5321 ( https://www.hidglobal.com/products/readers/omnikey/5321 )
ドライバーをインストールし、次のディレクトリ/ファイルを見つけることができます。
/usr/lib64/pcsc/drivers/ifd-ccid.bundle
/usr/lib64/pcsc/drivers/ifdokrfid_lnx_x64-2.10.0.1.bundle/Contents
/usr/lib64/pcsc/drivers/ifdokrfid_lnx_x64-2.10.0.1.bundle/Contents /info.plist
/usr/lib64/pcsc/drivers/ifdokrfid_lnx_x64-2.10.0.1.bundle/Contents/Linux
info.plist の内容は、「ifdFriendlyName」キーの下に「OMNIKEY CardMan 5x21」という文字列を明確に示しています。
PC/SC規格を使いたい。そのため、PCSC-lite をダウンロードしてインストールし、デーモン (pcscd) が実行中で、サービスの状態が正常であることを確認しました。
興味深い部分は次のとおりです...
私のコードでは、次の API を順番に使用しました。
SCARDCONTEXT oSCardContext;
SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, & SCardContext);
SCardEstablishContext() は SCARD_S_SUCCESS を返します。すごい!
SCARDCONTEXT oSCardContext;
DWORD dwReaders = SCARD_AUTOALLOCATE;
LPSTR mszReaders;
SCardListReaders(oSCardContext, NULL, (LPSTR) & mszReaders, & dwReaders);
SCardListReaders() は SCARD_E_NO_READERS_AVAILABLE を返します。良くない。
この時点で、リーダーが正しく接続されていることを確認します。はい、そうです。/etc/reader.conf にリーダー エントリが表示されるかどうかを確認しますが、ここにリストされているリーダーが見つかりません。次に /etc/reader.conf.d に移動しますが、ここにもファイルが見つかりません。したがって、スマート カードのコンテキストは空であると推測され、そのため、リーダーは一覧表示されません。
したがって、現在の問題は、pcsc-lite が接続されているリーダーを検出できない (?) ことと、どのドライバーがインストールされているかということです。
確認するために、udev ライブラリを使用してすべての「usb」サブシステム エントリを読み取る簡単なプログラムを作成し、接続されているカード リーダーに関する次の情報を udev から見つけることができました:
デバイス ノード パス:(null)
ベンダー ID:076b
製品 ID :5321
メーカー:OMNIKEY
製品:スマートカードリーダー USB
シリアル:(null)
したがって、デバイスが検出可能であることを確認してください。しかし、PC/SC Resource Manager がこのコンテキストを作成できないのはなぜでしょうか?
それで、どうすればこれを解決できますか?
私は Linux に不慣れで、助けを求めずにこの問題を自分で解決しようとしています。しかし、時間の制約がある場合は、専門家や、そのような問題に取り組んだ、および/または遭遇した人々に助けを求める方が賢明であることがわかりました.
グーグルで調べすぎましたが、私の問題があるものは見たことがありません。したがって、おそらく本当に基本的な何かが欠けていると思います。
何か提供する必要がある場合は、お知らせください。私はできるだけ早くそうします。
読んでいただきありがとうございます。
よろしく。
編集:
更新があります...
次のことを行いました
。 1. 新しいカード リーダー (SCM Microsystems) を入手しましたが、それでも検出されませんでした。
2. pcscd デーモンは、デフォルトでブート時に開始されました。ログイン後にサービスを停止し、コマンド「pcscd -a -f -d」を使用してフォアグラウンド モードで実行すると、SCM リーダーが正常に検出されました。
3. 上記の質問のリーダー、OMNIKIEY 5321 をプラグインしようとしましたが、検出されませんでした。
どうやら、次のような結論に達しました
。
2. OMNIKEY リーダー/ドライバーに問題があります。
よろしく。