IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

smart card en c#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 102
    Par défaut smart card en c#
    bonjour ,
    j'aimerai programmer les cartes à puce sous c# mais j un problème de documentation je sais pas comment manipuler les APDU des cartes a puce svp quelqu'un connais des bonne DOCs pour comprendre le fonctionnement des APDU des cartes à puce merci

  2. #2
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Salut



    J'y connais rien en APDU mais une bete recherche Google montre que ce n'est pas tres difficile a trouver

    http://en.wikipedia.org/wiki/APDU
    http://www.codeproject.com/KB/smart/SmartcardFmwk.aspx

  3. #3
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 143
    Par défaut
    Salut.

    Alors dans le cas ou tu serais toujours à la recherche d'infos...

    Premièrement tout dépend du protocole que tu va utiliser (ou plutot que ta carte supporte...).

    Tu as deux protocoles différents (NON propriétaire) :

    T=0 et T=1.

    T=0, est un protocole d'échange par gestion d'octet.
    T=1, est un protocole, plus évolué, d'échange par gestion de blocs.


    Pennons le début.
    Le plus simple c'est de faire le test sur une carte bancaire. Elle suivent le standard EMV qui dicte des loi sur le contenu de ce qu'on appel l'ATR (Answer To Reset, autrement dit -c'est pas réellement ca en fait mais presque - réponse à la mise sous tension).

    EMV décrit la conformité de l'ATR pour les deux protocole (Go site EMVco et prend le Book 1 - Icc to Terminal).


    Une fois que tu sais en quel protocole la carte dialogue tu peux te lancer dans la gestion des dites APDUs.


    En T=0 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CLA | INS | P1 | P2 | P3 ou LC | [UD-c] [Le]
     
    CLA : Classe de la commande, annonce la couleur si c'est une commande conforme ISO7816 ou EMV ou propriétaire.
     
    INS : Code de l'instruction, A voir dans ISO7816-4 ou EMV Book 1/3
     
    P1/P2 : Paramettres concernant l'instruction a laquel tu fait appel.
     
    P3/Lc : Longueur des DONNéES à transmettres.
     
    UD-c : Facultatif (sauf si Lc diff de 0), sont les données que tu va envoyées à la carte.
     
    Le : Longueur des données que tu attend en reponse à ta commande.
    En T=1 :

    Tu auras le même format qu'au dessus mais auquel tu ajoute un HEADER et un FOOTER si je puis me permettre.

    Ca ressemblera a :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    NAD | PCB | LEN | TRAME DU DESSUS | TCK
     
    NAD : Node ADress, probablement toujours 00, sauf si tu doit gérer le secure messaging etc...
     
    PCB : Prend différentes valeur suivant si ta commande est chainée, suivant le nombre de commande envoyées etc... (voir iso 7816 / emv book 1).
     
    LEN : Longueur de TRAME DU DESSUS.
     
    TCK : Ou exclusif entre tout les octet de la trame.
    Ensuite tu auras l'échange a proprement dit. Ici encore, suivant le protocole se sera sensiblement différent. En effet le T=0 utilise ce qu'on appel des octets de procédure, qui permettent en autre de faire un acquitement.


    En T=1 tu auras :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CARTE -------- TERMINAL
    <--------------Commande
    Reponse------->

    En T=0, suivant le cas (voir iso 7816), ici on va prendre un des plus compliqué :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CARTE -------- TERMINAL
    <--------------debut de commande
    ACK----------->
    <--------------DONNEES
    STATUS WORD->

    A la fin d'une commande, qu'elle se soit bien passée ou non, la carte retournera un "STATUS WORD". Il a une signification.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    90 00 veux dire que tout c'est bien passé.
    67 00 : mauvaise longueur..
    69 85 : Tu n'as pas les droit nécéssaires pour faire ça...
    etc...

    Si tu as besoin de plus de précisions ou autre demande

    Je répondrais avec joie !

    Bonne chance

  4. #4
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    630
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 630
    Par défaut doc sur secure messaging
    Bonjour,
    j'ai un projet sur les cartes à puces, je cherche des docs sur secure messaging pour les cartes à puces mais en vain.
    Tout ce que je sais , c'est qu'on peut fair l'analogie avec la couche TLS qui protège les data IP.
    Pourriez vous me donner plus de détails sur secure messaging svp ( comment est faite la couche secure messaging, les entités impliqués : carte, lecteur, pcsclite ..)
    merci d'avance pour votre aide

  5. #5
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    630
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 630
    Par défaut
    NAD | PCB | LEN | TRAME DU DESSUS | TCK
    - Est ce que tu peux donner un exemple plus simple sur PCB ?
    - pour TCK, c'est quoi l'interêt de faire un Xor de tous les octets de la trame ?
    - t'a dit que T0 fait un ACK, ca sert à quoi en fait ?
    Merci d'avance,

  6. #6
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 143
    Par défaut
    Salut, et désolé d'avoir mis un moment a te répondre :s

    J'ai pas checker cette partie du forum depuis un moment :p

    NAD | PCB | LEN | TRAME DU DESSUS | TCK
    - Est ce que tu peux donner un exemple plus simple sur PCB ?
    - pour TCK, c'est quoi l'interêt de faire un Xor de tous les octets de la trame ?
    - t'a dit que T0 fait un ACK, ca sert à quoi en fait ?
    - Pour le PCB : En gros, si le buffer de transfert de donnée coté carte (mais ça marche aussi pour le coté terminal) est trop petit pour contenir toute ta trame, celle ci sera découpé en 2 ou plus de partie (ce qu'on appel le chainage). Ce sera indiqué par l'octet PCB. (mais le PCB a d'autre utilisation : voir iso7816 et emv book1)

    -TCK n'est présent quand dans certaine condition (mais il est généralement la...) et en fait ça sert a détecter les erreurs de transmission. Un peu comme le bit de parité sur la RS232 mais la ça prend pas seulement 1 octet mais toute la trame. Ca permet de detecter bcp plus d'erreur.


    - En t=0 l'ACK sert en tant qu'octet de procédure. Ca va nous dire plein d'information sur ce que la carte est prette a recevoir. En regle generale ACK = INS de la commande envoyé par le terminal.

Discussions similaires

  1. Communication Smart Card
    Par Invité dans le forum Autres systèmes
    Réponses: 6
    Dernier message: 29/10/2015, 13h22
  2. Lecture Smart Card client / serveur
    Par abdelmoughit007 dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 19/12/2012, 00h55
  3. Application Smart Device
    Par moufles03 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 04/02/2007, 21h58
  4. [J2ME]Application pour SIM Card V1
    Par WOLO Laurent dans le forum Java ME
    Réponses: 3
    Dernier message: 09/11/2004, 15h26
  5. templates et smart pointers
    Par delire8 dans le forum C++
    Réponses: 9
    Dernier message: 10/07/2003, 16h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo