Leitor
Também chamado de programador, uma vez que pode escrever nos cartões, terminal, aparelho de aceitação de cartão (CAD - card acceptance device) ou aparelho de interface (IFD - interface device).
Fig. 2.3.1: leitor de smart card de contato Fig. 2.3.2: leitor de smart card de contato(outro ângulo)
A primeira fase da comunicação é feita assim que o "contato" é feito ( seja ele contato real ou por meio de ondas de rádio), quando tanto o leitor quanto o cartão trocam informações de identificação. No caso de informações incongruentes, o contato é encerrado, o que aumenta a segurança (ver detalhes).
Após a verificação de compatibilidade, o leitor passa a se comunicar com o cartão, mediando a transmissão de dados do computador para o mesmo.
Infelizmente, não há um padrão para a comunicação entre o cartão e o leitor, portanto é necessário estar atento ao método da interface do leitor com o computador.
No caso dos cartões sem contato, a comunicação é feita baseada no formato APDU (Application Protocol Data Unit).
APDU
Nesse formato, os bytes são distribuidos da seguinte forma:
CLA - INS - P1 - P2 - Lc - Datafield - Le
CLA - Byte de Classe - geralmente se refere ao aplicativo em si
INS - Byte de Instrução - indica o código de instrução associado
P1, P2 - Parâmetros - se necessários, por exemplo para celulares (PIN)
Lc - define quantos bytes estão contidos no campo Datafield
Datafield - contém os dados do comando APDU
Le - define o tamanho esperado do Lc da resposta ao comando APDU