問題タブ [opensc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - スマートカードを取り外して再度挿入した場合の OpenSC での Java pkcs11 スロット検出の問題
分析に役立つ可能性のある背景情報:
Web アプリケーションからスマート カードに接続し、クライアント マシンで実行されている Java プログラムから証明書を読み取って署名操作を実行しようとしています。Opensc-PKCS11.dll を java sunpkcs11 プロバイダー クラスと共に使用して、スマート カード (FIPS PIV 準拠のスマート カード) の証明書にアクセスしています。
私の問題は、スマート カードが接続されている限り、スマート カードのキーストアにアクセスして暗号化操作を実行できることですが、スマート カードを取り外して再度挿入すると、プロバイダのロードが失敗するために、プログラムがスロット ID を取得できません。
スロット ID をハードコーディングできないため、0/-1 のままにしておきます
この質問は関連していますが、十分な情報を提供します。 Java - スマートカードのホットプラグを検出する方法
更新: 問題を修正できました。最終ブロックでは、プロバイダーでのジョブが終了した後、プロバイダーから C_Finalize を呼び出しました。同じJavaインスタンスでの次の実行のために、PKCS11マップをクリアしてプロバイダーを再度初期化する以下のようなことを行いました