I am new at SIM cards...
I developed a JavaCard applet and I try to run it on UICC. My applet does some non-trivial computation like for example the elliptic curve cryptography, CMAC ... That is why its performance is a crucial issue.
I experimented a little and I found out that my applet runs much faster in an ordinary smartcard reader after USIM selection and sending terminal profile (all bytes 0xFF). I admit I actually do not know why this happens...
Then I tried to run my applet inside a smart phone. I access my applet through seek-for-android API. I thought that USIM selection and sending terminal profile is done automatically by OS (Android) after inserting SIM card. However the performance is quite poor, it seems that the "magic procedure" of selecting USIM and sending terminal profile was not performed... So I tried sending my own terminal profile as on smartcard reader through seek-for-android API. USIM selection responded with 0x9000. Then I get 0x6E00 response to SEND TERMINAL PROFILE command, although this APDU works correctly in an ordinary smartcard reader.
Could you please explain me, what is going on? Where should I look for information?
Why does this procedure (USIM and terminal profile) improve performance?
Is this done automatically by OS in my smartphone?
If not, can I do it somehow programatically to improve performance of my applet?
Why do I get 6E00 response to SEND TERMINAL PROFILE command via seek-for-android?
Thanks a lot!