lulufei / seek-for-android

Automatically exported from code.google.com/p/seek-for-android

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

openBasicChannel doesn't work with default-selected cardlet on card

GoogleCodeExporter opened this issue · comments

What's the problem?

The openBasicChannel command doesn't work with cards that have a default 
selected cardlet on it.

What steps will reproduce the problem?

1. download the open mobile api sample from the seek-for-android website.
2. run the sample with a card that has a default selected cardlet on it.

What is the expected output? What do you see instead?

The sample code fails and displays a nullpointer error.
In the log-output you find a more detailed error report:
>>>
01-01 05:32:34.925: V/SmartcardService(6303): OpenBasicChannel Exception: 
Access Rule Enforcer: access denied:  ARA-M couldn't be selected: 
com.mobilesecuritycard.openmobileapi.service.CardException: MANAGE CHANNEL 
response too small
<<<

What version of the product are you using? On what operating system?
- MSC Smartcard Service 3.0 corresponds to Smartcard API version 2.4.0.
Android 2.3.3

Please provide any additional information below.

By stepping through the code it appears to me that the 
manageChannelCommand(0x00, 0x70, 0x00, 0x00, 0x01) is received by the 
cardlet(default selected) rather than the cardManager.

Original issue reported on code.google.com by pics.a...@gmail.com on 11 Mar 2013 at 2:43

Commands like MANAGE CHANNEL or SELECT by name should be processed by the card 
registry, not the default selected applet (see GlobalPlatform SELECT command) 
as otherwise no other applet could get selected when a default one is in place.

card issue?

Original comment by Daniel.A...@gi-de.com on 15 Apr 2013 at 3:47

  • Changed state: Invalid
Daniel, 
we use Sm@rtCafe Expert 5.0-cards. The SELECT command is always received by the 
card manager, so you can select any applet you want. The problem seems to 
appear only for the MANAGE CHANNEL command. What cards do you use? Can you run 
a test using default applets(install -priv 4 in gpshell) on your cards?

Thanks!

Original comment by pics.a...@gmail.com on 16 Apr 2013 at 11:33

I've seen an issue here when I use the ApduTester.cap test applet.
It's an issue in the Applet code: when you send a SELECT command to the card 
with an invalid/not existing AID, the default selected applet receives this 
SELECT APDU. When the applet (like ApduTester.cap) does not throw an exception 
the invalid SELECT is returned with 9000.
-> reproducible with ApduTester.cap default selected but not with e.g. 
HelloSmartcard.cap 

Original comment by Daniel.A...@gi-de.com on 17 Apr 2013 at 8:44

I think we found the reason for this complications.
We found out that cardlets that don't implement the "MultiSelectable" interface 
and are default selected do not accept the manage channel command (0070000001).
With "MultiSelectable"-applets this problem does not occur.
Is there a way to make MSC work with cardlets that are not multiselectable and 
default selected? 
We only need a basic channel, logical channels are not necessary.

Thanks
Andreas

Original comment by pics.a...@gmail.com on 18 Jun 2013 at 1:40