6F

File Control Information (FCI) Template

File Control Information Template é o envoltório mais externo que um cartão devolve em resposta ao SELECT - o primeiro template construído que um terminal precisa interpretar numa transação, chegando antes mesmo de existirem as tags de aquisição, gestão de risco ou criptograma. Relacionado ao DF Name (84) que carrega no nível superior e ao FCI Proprietary Template (A5) aninhado dentro dele, o trabalho inteiro da tag 6F é estrutural: ela diz 'aqui está a FCI da aplicação que você acabou de selecionar', com o 84 confirmando qual aplicação é essa e o A5 guardando tudo o que é específico do emissor ou da bandeira sobre ela. Por ser a primeiríssima coisa interpretada, um bug aqui tem um raio de impacto desproporcional comparado a um bug em quase qualquer outro template: um terminal que interpreta mal o próprio tamanho ou fronteira do 6F não perde só um campo, potencialmente interpreta mal tudo aninhado dentro dele, e é por isso que o parsing da resposta do SELECT costuma ser um dos caminhos de código mais testados num kernel de terminal. Ver EMV Contactless Book C-8.

Decodificador interativo

Cole um valor hexadecimal desta tag para decodificar no seu navegador. Nada é enviado para lugar nenhum.

Objetos TLV aninhados

  • 84primitive · 7 bytes

    F0000000010001

Esta tag não é um bitmap; o decodificador mostra uma interpretação baseada no formato.

Exemplo decodificado

Valor de exemplo: 8407F0000000010001

Objetos TLV aninhados

  • 84primitive · 7 bytes

    F0000000010001

Tags relacionadas

A tag 6F é o wrapper mais externo que o cartão devolve em resposta ao SELECT — o primeiro template construído que um terminal parseia numa transação. Dentro dela vive o File Control Information: os identificadores de aplicação, rótulos e dados discricionários que permitem ao terminal saber qual aplicação alcançou e como falar com ela. Acertar este parse e o resto da transação tem fundação; errar e nada do que vem depois pode ser confiável.

Lê-la é exatamente o que o decoder desta página faz: abrir o valor como BER-TLV aninhado e listar os objetos construídos e primitivos dentro. Um FCI típico carrega o Dedicated File Name (84), o Application Label (50), o Application Priority Indicator (87) quando múltiplas aplicações coexistem, o FCI Issuer Discretionary Data (BF0C) para qualquer coisa que o emissor queira adicionar, e o FCI Proprietary Template (A5) que ele mesmo contém objetos específicos da aplicação como o Processing Options Data Object List (PDOL, 9F38).

Por que isso importa é que o 6F é o ponto de entrada da seleção de aplicação, e a seleção de aplicação é o ponto de entrada de todo o resto. O SELECT do PPSE (Proximity Payment System Environment) devolve uma lista de templates 6F, uma por aplicação candidata; o terminal escolhe com base em prioridade e capacidade, e então emite um SELECT final cuja resposta 6F lhe dá o PDOL que deve satisfazer no GET PROCESSING OPTIONS. Um bug de parser dentro do 6F — ler errado um template aninhado, descartar o BF0C — corrompe a própria seleção, e o sintoma costuma ser um terminal que não consegue achar uma aplicação num cartão que tem várias.

A armadilha de integração é tratar o 6F como uma lista plana de tags. Ele é construído e aninha: A5 (FCI Proprietary Template) é ele mesmo construído e carrega seus próprios filhos; BF0C é construído e carrega dados discricionários do emissor que podem eles mesmos ser aninhados. Um parser que lê só os filhos de topo do 6F e não recurse em A5 vai perder o PDOL inteiro — e sem o PDOL, o terminal não tem como saber o que enviar no GET PROCESSING OPTIONS, e a transação trava no passo seguinte.

Para decodificar, trate o 6F como a raiz de uma árvore e recurse. Todo filho construído (A5, BF0C) deve ele mesmo ser aberto; todo filho primitivo (84, 50, 9F38) é uma folha com um valor. Um parser BER-TLV que trate tags multi-byte, comprimentos em forma longa e profundidade de aninhamento arbitrária não é opcional aqui — o FCI é o primeiro lugar onde um parser ingênuo que presume tags de byte único e estrutura plana vai falhar, e a falha é silenciosa (dados faltando) em vez de ruidosa (erro de parse).

Propriedades

Tag6F
NomeFile Control Information (FCI) Template
FormatoBinário
Tamanhovariável
OrigemCartão (ICC)
Templates
LivrosEMV Contactless Book C-8

Perguntas frequentes

O que é a tag EMV 6F?
A tag 6F é o File Control Information (FCI) Template: o wrapper construído mais externo que o cartão devolve em resposta ao SELECT. Carrega os identificadores de aplicação, rótulos, prioridade e dados discricionários de que o terminal precisa para identificar a aplicação e prosseguir ao GET PROCESSING OPTIONS. É o primeiro template construído que um terminal parseia numa transação.
O que tem dentro da tag 6F?
Um FCI típico contém o Dedicated File Name (84), o Application Label (50), o Application Priority Indicator (87), o FCI Issuer Discretionary Data (BF0C) e o FCI Proprietary Template (A5) — que ele mesmo aninha objetos específicos da aplicação como o PDOL (9F38). O 6F é construído, então seus filhos são objetos TLV etiquetados, alguns dos quais construídos eles mesmos.
Por que preciso recurse dentro do A5 dentro do 6F?
Porque o A5 (FCI Proprietary Template) é construído e carrega seus próprios filhos, incluindo o PDOL (9F38) que diz ao terminal o que enviar no GET PROCESSING OPTIONS. Um parser que lê só os filhos de topo do 6F e não recurse em A5 vai perder o PDOL inteiro, e a transação vai travar no passo seguinte sem como montar o comando GPO.
Por que meu terminal não acha aplicação num cartão multiaplicação?
Frequentemente um bug de parse do 6F. O SELECT do PPSE devolve uma lista de templates 6F, um por aplicação candidata; tratar errado a estrutura aninhada (descartar BF0C, ler errado A5) corrompe a própria seleção. O cartão tem várias aplicações; o parser do terminal está embaralhando o FCI e reportando nenhuma. Teste o parser contra um hex dump de FCI conhecido como bom.

Fontes

  • C-8_Kernel_8_v1.1, p. 258

Receba as novidades do site

Cadastre-se para receber novidades do site direto no seu email

Não enviaremos spam. Você pode cancelar a inscrição a qualquer momento.