Я использую следующее:
- Windows 7 64-битная
- JDK 7, 64-разрядная версия
- JRE 7 64-битная
Новая забавная 64-битная JRE 7 больше не поддерживает Sun PKCS11 (который находится внутри пакета sun.security.pkcs11). И большая проблема в том, что конечные пользователи продукта нашей компании могли установить любую версию JRE.
Поэтому мне нужно заменить существующий код в Sun PKCS11 на Оболочка IAIK PKCS11 '. Обертка от IAIK работает просто так:
(iaik-wrapper.jar)->(iaik-pkcs11-jni.dll)->(pki-token-driver.dll)
Библиотека динамической компоновки драйвера токена PKI предоставляется производителем USB-токена PKI и имеет фактическое имя 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, но он почему-то несовместим. Я застрял в этом узком месте.
ca2-v34.dll
- это 32-битная DLL. - person user207421   schedule 08.01.2013