Ошибка чтения объектов из смарт-карты Gemalto с помощью IAIK pkcs11wrapper

Я пытаюсь прочитать публичные имена сертификатов со смарт-карты для отображения пользователю, прежде чем они подпишут файл с помощью смарт-карты gemalto. Я следовал примеру getInfo из демонстраций iaikPkcs11Wrapper, как показано ниже:

        Module pkcs11Module = Module.getInstance(settings.getCryptoDll());
        Slot[] slotList;
        try{
            slotList = pkcs11Module.getSlotList(true);
        }catch(TokenException tex){//module is not initialised
            tex.printStackTrace();
            pkcs11Module.initialize(new DefaultInitializeArgs());
            slotList = pkcs11Module.getSlotList(true);
        }
        for (Slot slot : slotList) {
            Token token = slot.getToken();
            iaik.pkcs.pkcs11.Session session = token.openSession(true, SessionReadWriteBehavior.RO_SESSION, null, null);
            session.findObjectsInit(null);
            Object[] objects = new Object[0];
            try {
                objects = session.findObjects(1);

Это не всегда на линии objects = findObjects(1); с исключением CKR_TEMPLATE_INCONSISTENT.

Как я понял из документации session.findObjectsInit(null) следует просто вернуть все доступные объекты на карту и затем сравнить их по типу.

У меня есть разные смарт-карты, и все они терпят неудачу, как это, я также пытался позвонить session.findObjectsInit(tempObj) с объектом GenericTemplate и X509PublicKeyCertificate, которые оба возвращают одно и то же исключение, и с X509AttributeCertificate, который не возвращает объектов, но не выдает исключение.

Буду признателен за любые советы, которые может дать каждый. Или мне нужно создать соответствующий объект шаблона с помощью GenericTemplate? Я не уверен, почему получаю исключение, так как думал, что передаю объект в метод getObjectInit, отфильтрованный для объекта thet, поэтому все возвращаемое значение должно совпадать.

РЕДАКТИРОВАТЬ Я впоследствии пытался с другими шаблонами и шаблонами для объектов, не находящихся на карте, просто вернуть пустой массив - не исключение, а те, которые, я думаю, есть на картах, просто выдают исключение ckr_template_inconsistent, любая помощь будет с благодарностью получена.

РЕДАКТИРОВАТЬ2 Я сейчас попробовал с некоторыми новыми картами 'V3', которые действительно работают, все мои тестовые карты работают с использованием другой техники (в настоящее время мы используем capicom через com4J для подписи), поэтому, возможно, есть проблема с оберткой iaik, или gclib.dll (или я).

0 ответов

Другие вопросы по тегам