2010-09-23 14 views
4

Actuellement, je suis sur un projet qui me demande de charger un fichier applet (.cap) d'application JavaCard sur une JavaCard. Notre framework est basé sur Visual C++ et PCSC, nous devons donc charger le même applet sur une série de JavaCards. Est-ce que quelqu'un sait comment cela peut être traité? Je veux dire, où devrais-je commencer. Merci!Comment charger par programme une applet de carte Java (un fichier .cap) en utilisant Visual C++/PCSC

+0

W Il semble que ce soit tuff, je ne veux pas répondre à ma propre question, mais jusqu'à présent, j'ai découvert GpShell: http://sourceforge.net/projects/globalplatform/files/ et son API, mais l'API est assez complexe Pour une prise en main rapide, j'ai donc l'intention d'utiliser GPShell pour le lancer à partir de Visual C en utilisant ShellExecuteEx en lui passant une structure SHELLEXECUTEINFO. J'apprends à écrire des scripts et j'ai déjà un framework pour les lecteurs de PCSC, mais il semble que GPShell puisse s'y connecter sans mon API. Plus d'info serait très appréciée. – zlogdan

Répondre

3

Vous avez raison de dire que ce n'est pas une mince affaire.

Il existe des différences entre les différentes javacards, mais en général vous devez faire 4 choses:

  • initialize des communications sécurisées avec la carte (parce que beaucoup de javacards sont des cartes « de la plate-forme globale » dont ils ont besoin d'un canal sécurisé)
  • envoyer une commande en disant « je veux installer une applet »
  • envoyer les données binaires pour l'applet à installer
  • envoyer une commande à « instancier » l'applet après que les données binaires sont envoyées

Je vous recommande d'utiliser le plugin eclipse pour installer l'applet initialement, car vous pouvez voir les APDU générées par le plugin pour faire les étapes ci-dessus. Une fois que vous connaissez les commandes APDU que vous devez envoyer pour installer votre applet, vous pouvez directement envoyer ces commandes en utilisant l'interface PCSC à partir de votre code C++ pour automatiser l'installation sur un grand nombre de cartes. Mon entreprise fait un plugin de navigateur web appelé Card Boss pour faire ce genre de chose (communications par carte via pcsc) à partir d'un navigateur - il y a une page web que vous pouvez utiliser où vous pouvez taper vos propres APDU et les envoyer à la carte à l'URL follwing:

https://cardboss.cometway.com/content.agent?page_name=Card+Boss+Lab

Si vous utilisez notre outil, votre script d'installation de l'applet devrait ressembler à ceci (notez que ceci est un script pour une carte JCOP à l'aide des touches de JCOP par défaut)

MESSAGE BOX Installing applets... 

    INIT CHANNEL 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f, 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 

    // INSTALL CAP: 
    SEND 80 E6 02 00 1D 10 A0 00 00 00 09 00 03 FF FF FF FF 89 10 71 00 01 08 A0 00 00 00 03 00 00 00 00 00 00 

    // LOADING CAP: 
    SEND 80 E8 00 00 FA C4 82 01 03 01 00 25 DE CA FF (snip, I removed a bunch 
of binary data representing the cap file to shorten this post, and you might 
need multiple SEND commands because of limits on the size of APDUS) 

    // INSTANTIATING Applet 
    SEND 80 E6 0C 00 1E 05 63 6F 6D 65 74 07 63 6F 6D 65 74 00 01 05 00 00 00 00 00 01 00 06 C9 04 68 2C 00 03 00 00 
+0

J'ai utilisé le paquet Sun javacard et l'un de ses scripts pour générer ces APDUS, mais je me suis arrêté là parce que je n'étais pas sûr que ces commandes soient bien, maintenant je sais qu'ils sont merci :-) Je suis en train de mettre à jour ce code Sinon, il a quitté la société et il semble qu'il ait tout fait, même le canal sécurisé, mais il s'appuie sur son propre fichier script qui est plutôt différent. Je pense que je vais devoir le comprendre. Aussi, comme la clé pour cela. Mais mec, tu m'as juste fait sauter beaucoup plus loin! – zlogdan