which mobile phone SIMs actually support javacard today? - java

i wonder on which smartcards i can actually run javacard? afaik it requires the "open platform" OS, but: which USIM-cards for mobile phones today (especially in germany) do actually support this?

Updated with TheGoodUser correction
I afraid issued cards will be useless for you.
Almost (if not all of them) will be in lifecycle state CARD_SECURED which doesn't allow you to load an applet using GlobalPlatform/OpenPlatform.
In case of SIM cards for the network operator there is a way to load an applet on the Java card - OTA. If Remote Applet Manager applet (part of OTA) is installed and configured applet could be loaded and installed to the SIM using ENVELOPE command (special formated SMS comes to the phone and phone passes them in ENVELOPE command to the card). Unfortunately for you to do that you still need to know keys - card will expect signed or/and encrypted ENVELOPEs. So you'll need keys to do that.
If your interest is just academic - you can always buy java card with some SDK/Tools from some small card manufactures and play with java card. If you want to install something on existing card I'd say it is impossible.

As far as I know all SIM card produced during last ~10 years are able to run java. The problem is that you need code can be obtained from the card owner, i.e. the carrier. But carrier will not give you this code unless you are the carrier's partner...
Probably the following links can help you.
http://forums.techarena.in/software-development/1353925.htm
How to programmatically load a Java card applet ( a .cap file ) using Visual C++/PCSC

some operator provide USIM to customer by javacard.you can download applets into java card.

Related

Deploy javacard applet on a Jcard

I have been working on a java card project for the last couple of days, and today I was given a card reader and a couple of cards, and was asked to deploy the applet on them and test them, I've basically no idea about how to deploy the app on the card, so far I've been workign with the CREF emulator, and all have been working great, now I'd like some guidance or advice from people who have already worked with this technology before, I've an Omnikey 3821 Reader, the cards I've are white and blank, I've no more information about them, I tried testing them with apps like:
JSmartCard Explorer
JSmex
APDUScanner
they are detected, in JSmex it's detected as an unkown card (not as a java card), can anyone show me any other way to interact with the cards? Get more information about them? Or how to deploy the .cap file on them and get the other apps to interact with them?
Thank you
PS : i'm workign with eclipse and javacard 2.2.2
EDIT :
I think i found a promising lead, the global plateform solution, but now i'm getting an error when trying to install the .cap file on the card, and according to the ATR i got from the card this is my Card Model
EDIT (1) :
I'm Using GPShell now, and i installed a sample hello world cap file successfuly, but when i try to install a simple counter applet which i already tried on CREF the same way i installed the hello word applet i get the following error : ( 6985 : Command not allowed - Conditions of use not satisfied )
I read the it might be version related, I usef an eclipse cap navigator plugin, and i got the following results : Major version = 2 , Minor version = 1, does that mean that the version is 2.0 - 2.1 ?
but when i tried running the same navigator on the counter cap file i generated, I got the same results even though i'm using JCDK 2.2.2
btw, when i try to download the hello world source and compile it into a .cap and install it i get the same error, is it my environmenent then ?
Try to get more info about your card using the "NFC Taginfo" Android app by NXP. It's been quite helpful for me when developing for Javacard. It will show a lot of information about your smartcard. If you can, please show here the data you get from this app when scanning your card.
Assuming it is a JCOP Javacard, you can always use JCOP Tools to load the .cap file. It's a pretty straightforward process. You must first have a NXP Docstore account and then send an email to tools.jcop#nxp.com asking for the JCOP Tool. Once you install the JCOP tools you can use the plugin for Eclipse to load and install the applet into the javacard.
About INITIALIZE UPDATE/EXTERNAL AUTHENTICATE
If your Javacard is GlobalPlatform compliant (you will know it using NFC Taginfo), it means that you will have to use GlobalPlatform commands to load and install the applet. One of the first steps is to create a secure channel between the off-card application (your omnikey reader) and the card. This is made through the INITIALIZE UPDATE and EXTERNAL AUTHENTICATE.

Android app for GPS project

I decided to do a GPS car tracker for my college project and I need a bit of guidance on the actual framework for it.
My main plan is to use either an arduino (or raspberry pi) with a GPS and 3G module attached which would would alert the accompanying android app if the module was moved out of a certain location(if car is taken without permission etc).The app could also be used to request the location at will from the module.
My question is
Is this possible for me to achieve and would I be better using an arduino or raspberry pi,would I have more freedom with the pi as maybe I could run a service on it??
It would be great to get some opinions from anyone
Thanks
Yes, it is very possible and has already been done. It is also possible to use the two together to achieve this, but if you had to choose one, I would choose the RPi. This is because it can do more of what your are attempting straight out of the box with its full linux capabilities (wireless, etc). This can come ready to go if you get a preloaded SD card. Search for a NOOBS SD card on amazon.

Java Card Reader Terminal

I am new to Java Card development but until now I am using the Java Card development kit 2.2 and doing the Samples.
I try to understand how can I actually use the java card Applets. For example I have the classic "Wallet" applet that is a wallet application managing credit and also debit operations on the Card. I use the jcwde tool to run the applets on the emulator. The APDU tool is sending apdu messages to the card and the card responds.
Now my question is on practice how can I use this card? The apdu istructions that the terminal should send are predefined according to the methods the applet implements. The device that the customer should plug the card how should interact to the card? For example we don't expect the customers to send APDU commands. Is there a device with a screen that should be programmed too?
The wallet application is similar to: working with Java Card Wallet
The person question here is using the same approach. Testing the applet using apdu messages. Is this the way we should test our cards?
Once the card application is operational, you will want to stage it in some service. Depending on the context, the client might be sending APDUs to it
from a local application (e.g. a phone app sending APDUs to the UICC)
over NFC (e.g. a merchant point of sale sending APDUs to a Visa application within a card)
over-the-air, in a secure channel (the "credit" command would typically require that the entity sending it is authenticated, otherwise anyone can top-up their wallet)
It really comes down to what you are trying to build. In most cases you will have to build some reader code, most likely using PC/SC to send APDUs. Then the beauty of Javacard is that it lets you define your business rules within the card, that is within a tightly secured environment. Just make sure you can trust your inputs.

Galaxy Tab 7 Plus. Two sdcards. How to choose?

My app is used in my job to make sales.
This app can remotely update itself (not using Google play), update its data, send information, etc...
In some point, the app reads a heavy catalog of images (several hundreds of MB). To avoid download this data, a micro SD card with all the images has been included in each device.
To read the images in the SD Card I use "Environment.getExternalStorageDirectory()". Until today everything worked ok.
However, the new devices are GalaxyTab 7 Plus, they are very cool machines, but when I use "Environment.getExternalStorageDirectory()" I got the internal SD path. The tablet recognized the External SD card (as "extSdCard") but I don't know how to access it.
I tried with the "vold.fstab" file (following the answer to this question How could i get the correct external storage on Samsung and all other devices?) but I don't trust too much... I mean... is this thing valid? I checked the vold.fstab from a GalaxyTab 10 with android 3.0 and a GalaxyTab 7 Plus with android 4.0 and they are pretty different...
So, in short:
I always want get the external SD card path and if this does not exist, then get the internal SD card path (if exists). I can't do this because java don't let me choose between then when I use "Environment.getExternalStorageDirectory()"
Thanks!
The Android SDK, at least through 4.1, does not support the notion of multiple points of external storage. Hence, there is no documented and supported means for you to get to this secondary card from a directory standpoint.
The contents of that card may be indexed by the MediaStore, through proprietary extensions added by the device manufacturer. Every device that has an external SD card that I have tried appears to do this. Hence, if there is a way you can somehow adjust your logic to not worry about where the files are, but instead to find them via MediaStore, that should work across devices.
Beyond that, you're stuck with guessing games, per some of the answers on the question that you linked to.

Accessing Windows Mobile device Storage Card from Java?

I'd like to be able to access the contents of my Storage Card which is in my Windows Mobile device. Normally, I'd just remove the card and shove it in a card reader, but its encrypted (and thus, locked to my WM device).
Is there an API or some sort of framework allowing read/write access to the Storage Card (while PDA is docked to PC)?
Reason is: I'm sick of having to create playlists for each album every time I upload to it. I'd like to automate this process.
Any pointers would be greatly appreciated.
When the PDA is connected to the PC you can use RAPI to access files, registry etc on a Windows Mobile device, but I don't know of a Java interface to it. Should be a piece of cake with JNI though... :-)
RAPI (Remote API) is used for accessing the WM device from the desktop, and can be used to access files.
See RAPI and CeCreateFile, or this tutorial on RAPI.
You can point it to files on the storage card by the "\Storage Card\" path.
But, as you notice, this is a C++ API... I'm not aware of any RAPI wrappers for Java, unfortunately.

Categories

Resources