SDK JavaScript / Node.js

Leia, verifique e escreva chips TigerTag em JavaScript.

O SDK do protocolo aberto TigerTag para filamento e resina de impressão 3D: converte os bytes de um chip em material, cor, definições de impressão e quantidade, verifica a assinatura ECDSA-P256 sem ligação e constrói novas etiquetas byte a byte.

npm ↗GitHub ↗

$ npm install tigertag

const { TigerTag } = require('tigertag');

const tag = TigerTag.fromPages(uid, payload);  // from your NFC SDK
console.log(tag.pretty());  // human-readable summary
console.log(String(tag.verify()));  // VALID / NOT SIGNED / INVALID
console.log(tag.toDict());  // JSON-ready object
Versão atual no npm
1.2.1Versão atual no npm
Utiliza o crypto e o fetch incorporados
Node.js 18+Utiliza o crypto e o fetch incorporados
Dependências de execução para ler e verificar
0Dependências de execução para ler e verificar
Licença de código aberto, com concessão de patentes
Apache-2.0Licença de código aberto, com concessão de patentes

O que o SDK faz

Um único pacote para tudo o que diz respeito a um chip TigerTag: ler, verificar, escrever e manter os dados atualizados.

Ler qualquer dump

fromPages(), fromDump() e fromFile() aceitam um UID com 80 ou 144 bytes, ou um dump de 180 bytes. pretty(), describe() e toDict() devolvem texto, um resumo legível ou objetos JSON.

Verificar a autenticidade sem ligação

verify() verifica a assinatura ECDSA-P256 que associa o UID do chip aos dados do produto, com a chave pública incluída no pacote. Resultado: valid, invalid, unsigned, no_key ou no_uid.

Criar e alterar etiquetas

create(), asInit(), patch() e erase() constroem os bytes do chip. Um TigerTag é imutável: patch() devolve um novo e recusa alterar idTigertag, idProduct, uid ou a assinatura.

Construir a partir do catálogo

TigerTag.fromCatalog(productId) constrói um TigerTag+ completo a partir do catálogo oficial de produtos, transferido na primeira utilização e guardado em cache numa pasta por utilizador.

Sincronizar com o fabricante

Para chips TigerTag+, rawApi(), diffApi() e patchFromApi() obtêm os dados atuais da marca, listam o que difere do chip e aplicam-no.

Dados de referência, primeiro sem ligação

As tabelas de material, marca, aspeto, tipo, diâmetro e unidade vêm no pacote e atualizam-se no máximo uma vez por dia; offline: true ou TIGERTAG_OFFLINE=1 desliga a rede.

Ler um chip

Passe a TigerTag.fromPages() o UID de 7 bytes e os bytes lidos pela sua biblioteca NFC. pretty(), verify() e toDict() devolvem um resumo legível, o resultado da assinatura e um objeto pronto para JSON. Funciona logo após o npm install, sem configuração.

A TigerTag chip

Alterar e escrever

Cada alteração devolve um novo TigerTag; toBytes() dá os bytes a escrever. erase() dá um chip em branco.

TigerTag

Experimente sem leitor: o playground

Uma página web local, servida pelo próprio SDK, que constrói e descodifica chips TigerTag e mostra cada byte. Não é preciso hardware NFC. O playground nunca escreve uma assinatura: só um fabricante certificado a pode emitir.

Perguntas

Como se instala o SDK JavaScript da TigerTag?

Execute npm install tigertag, ou pnpm add tigertag, yarn add tigertag ou bun add tigertag. Requer Node.js 18 ou mais recente e nenhum outro pacote para ler e verificar.

É preciso ligação à internet?

Não. As tabelas de referência e a chave pública de assinatura vêm no pacote, pelo que a leitura e a verificação funcionam sem ligação. A rede só é usada para a verificação diária das tabelas, o catálogo de produtos e os métodos na nuvem do TigerTag+; offline: true ou TIGERTAG_OFFLINE=1 desliga-a.

Com que chips e leitores NFC funciona?

A TigerTag usa chips NTAG213, NTAG215 e NTAG216 (ISO 14443-3). O SDK recebe o UID e os bytes lidos pela sua biblioteca NFC, pelo que não depende de um leitor; o README mostra nfc-pcsc com um ACR122U.

Como verifica que um chip é autêntico?

verify() verifica a assinatura ECDSA-P256 do chip sobre o UID e os identificadores do produto, com a chave pública incluída no pacote. Devolve valid, invalid, unsigned, no_key ou no_uid, sem contactar nenhum servidor.

Consegue escrever chips?

Constrói os bytes: create(), patch(), asInit(), erase() e fromCatalog() dão um TigerTag cujo toBytes() é o conteúdo que a sua biblioteca NFC escreve. O botão Burn do playground escreve-o nos chips dos leitores ligados.

Um comando para começar

npm install tigertag e, a seguir, TigerTag.fromPages(uid, payload).

Ver no npm