私は以下を使用しています:
- Windows764ビット
- JDK764ビット
- JRE764ビット
新しい面白いJRE764ビットは、Sun PKCS11(パッケージ'sun.security.pkcs11'内にあります)をサポートしなくなりました。そして、大きな問題は、当社の製品のエンドユーザーがJREのバージョンをインストールしている可能性があることです。
したがって、既存のコードを「SunPKCS11」のコードから「IAIKPKCS11ラッパー」に交換する必要があります。IAIKによるラッパーは、次のように簡単に機能します。
(iaik-wrapper.jar)->(iaik-pkcs11-jni.dll)->(pki-token-driver.dll)
PKIトークンドライバのダイナミックリンクライブラリは、PKI USBトークンの製造元から提供されており、実際の名前は「ca2-v34.dll」です。このネイティブドライバをロードする方法は、プログラマーのマニュアルで次のように説明されています。
import iaik.pkcs.pkcs11.*;
...
Module pkcs11Driver;
try {
pkcs11Driver = Module.getInstance("ca2-v34.dll"); //<--exception!
pkcs11Driver.initialize(null);
//test
System.out.println(pkcs11Driver.getInfo());
}
catch (Exception ex) {
System.out.println(ex);
}
例外は、上記のコードでマークされた行で発生します。詳細は次のとおりです。java.io.IOException:%1は有効なWin32アプリケーションではありません。ca2-v34.dll
この例外は、IAIKライブラリが.dllファイルを検出したことを意味しますが、どういうわけか互換性がありません。私はこのボトルネックで立ち往生しています。