2014-09-12 2 views
0

을 smartcardio이 내가 뭘하는지입니다.얻기 0x6A88 오류가 나는 자바에 대한 상호 인증을 위해 노력하고

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

은 그 때 나는 모든 것을, 키 씨, ENC, 맥을 계산하고 상호 인증 명령을 보내

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

난 항상 0x6A88을 받게을, 그리고 그것이 "참조 된 데이터 또는 기준을 의미한다 인터넷에서 발견 데이터를 찾을 수 없습니다 ".

이상한 점은 자바를 사용하여 C#을 사용하여 코드를 구현 한 것입니다. 테스트 한 결과 키와 같은 데이터를 얻었고, 보낼 때 상호 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

어떤 프로토콜에 대한 상호 인증? AID로 선택합니까? –

+0

예, 제 질문에 넣은 것을 잊어 버렸습니다. 그러나 당신은 내 문제가 될 수있는 것에 대한 단서를 주었고 애플릿을 선택했으나 상호 인증을하기 위해서는 다른 애플릿에 있어야합니다. 나는 나의 포스트를 새롭게 할 것이다. 감사합니다. @owlstead – j2gl

+0

감사합니다. 잘못된 애플릿에서 상호 인증을 시도했습니다. – j2gl

답변

0

제 문제점은 잘못된 애플릿에서 상호 인증을 시도하고 있다는 것입니다. APDU에 도전하기 전에 올바른 애플릿 ID를 선택하고 마침내 얻었습니다.