Application protocol data unit

No contexto de cartões inteligentes, uma application protocol data unit (APDU), em português unidade de dados de protocolo de aplicativo, é a unidade de comunicação entre um leitor de cartão inteligente e um cartão inteligente. A estrutura da APDU é definida pela ISO/IEC 7816-4 Organization, security and commands for interchange (Organização, segurança e comandos para intercâmbio).[1]

Par comando-resposta de mensagem APDU

editar

Existem duas categorias de APDUs: comando APDUs e resposta APDUs. Um comando APDU é enviado pelo leitor para o cartão - ele contém um cabeçalho obrigatório de 4 bytes (CLA, INS, P1, P2) e de 0 a 65 535 bytes de dados. Uma resposta APDU é enviada pelo cartão para o leitor - contém de 0 a 65 536 bytes de dados e 2 bytes de status obrigatórios (SW1, SW2).

Comando APDU
Nome do campo Tamanho (bytes) Descrição
CLA 1 Classe de instrução - indica o tipo de comando, por exemplo interindústrial ou proprietário
INS 1 Código de instrução - indica o comando específico, por exemplo "gravar dados"
P1-P2 2 Parâmetros de instrução para o comando, por exemplo offset (deslocado) para o arquivo no qual os dados serão gravados
Lc 0, 1 ou 3 Codifica o número (Nc) de bytes de dados de comando para o seguinte

0 bytes denota Nc=0
1 byte com um valor de 1 a 255 indica Nc com o mesmo valor
3 bytes, o primeiro dos quais deve ser 0, denota Nc no intervalo de 1 a 65 535 (todos os três bytes podem não ser zero)

Dados de comando Nc Nc bytes de dados
Le 0, 1, 2 or 3 Codifica o número máximo (Ne) de bytes de resposta esperados

0 bytes denota Ne=0
1 byte no intervalo de 1 a 255 indica que o valor de Ne ou 0 indica Ne= 256
2 bytes (se Lc estendido estava presente no comando) no intervalo de 1 a 65 535 denota Ne desse valor ou dois bytes zero indicam 65 536
3 bytes (se Lc não estava presente no comando), o primeiro dos quais deve ser 0, denota Ne da mesma maneira que Le de dois bytes

Resposta APDU
Dados de resposta Nr (no máximo Ne) Dados de resposta
SW1-SW2
(Trailer de resposta)
2 Estado de processamento do comando, por exemplo 90 00 (hexadecimal) indica sucesso

Referências

Ligações externas

editar