복잡한 Javacard 애플릿이 있으며 일반 스마트 카드 (예 : NXP J3E145, T = 1) 용으로 개발되고 테스트되었습니다. 이제는 UICC에서 휴대 전화로 사용하고 Android 앱에서 액세스해야합니다. UICC는 T = 0 프로토콜을 사용합니다.Javacard 애플릿 RPDU에는 seek-for-android에서 액세스 할 때 아무런 데이터도 포함되어 있지 않습니다.
일반 카드 판독기 (Omnikey 5321)에서 SIM 카드와 통신 할 때 애플릿이 정상적으로 작동합니다.
그러나 모바일 폰 (Sony Xperia S)으로 이동하고 seek-for-android API를 통해 APDU를 보내면 일부 RPDU에는 데이터 부분이 포함되지 않으며 상태 단어 0x9000과 데이터 부분 만 있습니다. 누락!
80 05 00 00 00 --> 00 90 00 (one byte as I expected)
80 06 00 00 00 --> <... data of length 20 ...> 90 00 (as I expected)
그것 (처리 시간은 항상 < 1 초입니다) 시간 제한 문제가 될 수 :
이 APDU의 실패 :
80 04 00 00 00 --> 90 00 (although there should be some data, 200 bytes approx.)
80 01 00 00 00 --> 90 00 (although I expect 18 bytes)
이 APDU를 확인입니까? 아니면 T = 0 이상한가?
내 안드로이드 응용 프로그램 코드는 정말 간단하다 :
Channel channel = session.openLogicalChannel(aid);
byte[] resp = channel.transmit(new byte[] {(byte) 0x80, 0x04, 0x00, 0x00, 0x00});
오픈 모바일 API, 4.4.2 (19).
도움이 될 것입니다.이 문제를 해결하는 데 2 일을 보냈습니다. 제발, 나를 구 해주십시오.
보이 타
편집 내 액세스 규칙 : 목록에서
AID: A000000018308005006563686F00 ___ AllApps:Never
AID: A0000000183080055A6563686F5A ___ Hash:ABFF7159B0530044CD71C6561B0F9D55CBAE8984:Always
AID: A000000018308005596563686F59 ___ Hash: ABFF7159B0530044CD71C6561B0F9D55CBAE8984:Always
AID: A000000018308005586563686F58 ___ AllApps:Always
AID: NO_AID ___ AllApps:Always
AID: A000000018308005006563686F00 ___ AllApps:Never
AID: A0000000183080055A6563686F5A ___ Hash: ABFF7159B0530044CD71C6561B0F9D55CBAE8984:Always
AID: A000000018308005596563686F59 ___ Hash: ABFF7159B0530044CD71C6561B0F9D55CBAE8984:Always
AID: A000000018308005586563686F58 ___ AllApps:Always
AID: NO_AID ___ AllApps:Always
내가 APDU는 규칙 필터링 (및 NFC 규칙이 모두 아래로 작성하지 않은) 이상.
내 애플릿에는 AID F06D617073616D2E617070 My Issuer 보안 도메인은 A0000000871002FF33FFFF8901010100입니다.
나는
Le 바이트를 0에서 0xFF로 변경하면 0x6881. 이것은 정말로 혼란 스럽습니다 - 나는 SEEK가 모든 논리적 채널을 관리한다고 생각했습니다. 어떻게 Le 바이트가 0x9000에서 0x6881로 상태 워드를 바꿀 수 있습니까? 어떤 단서가 있습니까? 제발, 도와주세요 ... – vojta
나는 그것이 시크 - 61XX 또는 6CXX 응답을 처리하는 동안 안드로이드 오류가 발생했습니다. 실제로 UICC로 보낸 APDUs (TPDUs) 추적 할 수있는 방법이 있습니까? – vojta
Le, Lc 등 모든 가능한 옵션을 시도한 결과 항상 동일합니다 :-(: 1. 'LC = 1 데이터 = {0x00} Le = null -> 90 00' . 5, 'LC = 데이터 1 = {0 × 00} 르 = 0 -> 90 00' 3. 'LC = 데이터 1 = {0 × 00} 르 = 255 -> 90 00' 4. LC = null 데이터 = null Le = null -> 90 00' 5. 'LC = null 데이터 = null Le = 0 -> 90 00' 6. 'LC = null 데이터 = null Le = 255 -> 68 81' – vojta