2014-09-12 5 views
0

Я пытался сделать взаимную аутентификацию на Java, это то, что я делаю:Получения ошибки 0x6A88 после попытки взаимной аутентификации с Явой smartcardio

Сначала я прошу вызов и получил случайное число.

TRX --> 0084000008 
REC <-- 4E621D238C8B185F 9000 

Тогда я вычислить все, Key семя, прил, макинтош и послать команду взаимной авторизации:

TRX --> 0082000028[seed enc mac ... bytes transformed]00 
REC <-- 6A88 

Я всегда беру 0x6A88, и я нашел в Интернете, что это означает «ссылочные данные или ссылки данные не найдены ".

Но странно, что мой prois для реализации кода, уже работающего на C#, на Java, мы тестируем его вместе, мы получаем те же данные с ключами и т. Д., И я обнаружил, что когда я собираюсь отправить команда auth (0x82) получила ошибку 0x6A88.

Вот несколько исходных кодов, я хотел показать, что я пытался с и без beginExclusive() и endExclusive(), но не работал.

public CardTerminal getCardTerminal() throws Exception { 
    CardTerminal ct = null; 
    TerminalFactory terminalFactory = TerminalFactory.getDefault();   
    CardTerminals cardTerminals = terminalFactory.terminals(); 
    // Searches for first card terminal available on the PC 
    if (cardTerminals.list().isEmpty() == false) { 
     ct = cardTerminals.list().get(0); 
    } 
    return ct; 
} 

public void test() throws Exception { 
    CardTerminal cardTerminal; 
    Card card; 
    MyManager instance; 

    cardTerminal = getCardTerminal(); 
    instance = new DpiV2Manager(); 

    card = cardTerminal.connect("T=1"); 
    card = connect(cardTerminal); 
    card.beginExclusive(); 
    CardChannel cardChannel = card.getBasicChannel(); 

    // Inside this method I do the get challange, mutual auth, etc 
    instance.readGeneralData(cardChannel); 

    card.endExclusive(); 
    card.disconnect(true); 
} 

У кого-то была такая же проблема с Java, выполняющей взаимную аутентификацию?

Кто-нибудь нашел решение?

+1

ВЗАИМНАЯ АУТЕНТИФИКАЦИЯ для какого протокола? Вы делаете SELECT с помощью AID? –

+0

Да, я забыл поставить вопрос в свой вопрос. Но вы даете мне ключ к тому, что может быть моей проблемой, я выбираю апплет, но я должен быть в другом апплете, чтобы сделать взаимную аутентификацию. Я обновлю свой пост. Спасибо @owlstead – j2gl

+0

Спасибо @owlstead! Я пытался выполнить взаимную аутентификацию на неправильном апплете. – j2gl

ответ

0

Моя проблема заключалась в том, что я пытался сделать взаимную аутентификацию на неправильном апплете. Я только что выбрал правильный идентификатор апплета до получения APDU вызова и, наконец, получил его.