Lisez, vérifiez et écrivez les puces NFC TigerTag en JavaScript.
Le SDK du protocole ouvert TigerTag pour le filament et la résine d'impression 3D : il transforme les octets d'une puce en matière, couleur, réglages d'impression et quantité, vérifie sa signature ECDSA-P256 hors ligne et construit de nouveaux tags octet par octet.
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
Le démarrage rapide du README : il fonctionne dès npm install, sans configuration.
1.2.1Version actuelle, publiée le 2026-11-06
Node.js 18+Utilise crypto et fetch intégrés
0Dépendance d'exécution pour lire et vérifier
Apache-2.0Licence open source, avec octroi de brevets
Démarrer en trois étapes
Installez le paquet, lisez une puce avec votre bibliothèque NFC, écrivez-en une nouvelle. Les tables de référence incluses font fonctionner le premier lancement sans réseau.
1
Installer le paquet
Depuis le registre npm. pnpm, yarn et bun installent le même paquet.
npm install tigertag
pnpm add tigertag
yarn add tigertag
bun add tigertag
2
Lire une puce
Passez l'UID de 7 octets et les 144 octets lus par votre bibliothèque NFC. Ici avec nfc-pcsc et un ACR122U.
Chaque modification renvoie un nouveau TigerTag ; toBytes() donne les octets à réécrire. erase() donne une puce vierge.
// Immutable surgical update — returns a new TigerTag, original unchanged
const patched = tag.patch({ nozzleTempMin: 200, dryTemp: 55 });
// Erase a chip — write the returned 80 bytes to the NFC chip
const blankBytes = TigerTag.erase();
Un seul paquet pour tous les usages d'une puce TigerTag : lire, vérifier, écrire et garder ses données à jour.
Lire tout dump
fromPages(), fromDump() et fromFile() acceptent un UID avec 80 ou 144 octets, ou un dump complet de 180 octets. pretty(), describe(), toDict() et toRawDict() renvoient du texte, un paragraphe en langage courant ou des objets prêts pour JSON.
Vérifier l'authenticité hors ligne
verify() contrôle la signature ECDSA-P256 qui lie l'UID de la puce à ses données produit, avec la clé publique incluse dans le paquet. Le résultat est valid, invalid, unsigned, no_key ou no_uid.
Créer et modifier des tags
create(), asInit(), patch() et erase() construisent les octets de la puce. Un TigerTag est immuable : patch() en renvoie un nouveau et refuse de changer idTigertag, idProduct, uid ou la signature.
Partir du catalogue
TigerTag.fromCatalog(productId) construit un TigerTag+ complet depuis le catalogue officiel des produits, téléchargé à la première utilisation et mis en cache dans un dossier propre à l'utilisateur.
Synchroniser avec le fabricant
Pour les puces TigerTag+, rawApi(), diffApi() et patchFromApi() récupèrent les données actuelles de la marque, listent ce qui diffère de la puce et l'appliquent.
Données de référence, hors ligne d'abord
Les tables matières, marques, aspects, types, diamètres et unités sont incluses dans le paquet. Une vérification en arrière-plan les met à jour au plus une fois par jour ; offline: true ou TIGERTAG_OFFLINE=1 coupe tout appel réseau.
Trois types de tag
Le SDK lit et écrit les trois types de tag du protocole TigerTag v2.2, sur puces NTAG213, NTAG215 et NTAG216.
idProduct 0xFFFFFFFF
TigerTag (Maker)
Tous les champs sur la puce, lisibles entièrement hors ligne.
idProduct 0x00000000
TigerTag Init
Un modèle vierge, prêt à être programmé. TigerTag.asInit() en crée un.
ECDSA-P256
TigerTag+
Tous les champs sur la puce, plus un identifiant produit relié à l'API cloud pour les mises à jour du fabricant. Une puce signée se vérifie avec verify().
En ligne de commande et dans Electron
Le paquet installe une commande tigertag et fonctionne dans le processus principal d'une application Electron.
La commande tigertag
Décode un dump en texte, en JSON ou en champs bruts, et met à jour les tables de référence à la demande.
# Parse a dump file
tigertag dump.bin
# JSON output
tigertag dump.bin --json
# Update the reference tables now (into the data dir)
tigertag update
Dans une application Electron
Décodez les puces dans le processus principal, sans sous-processus à embarquer.
// main.js — replace parseTigerTag() subprocess dependency
const { TigerTag, TigerTagDB } = require('tigertag');
function parseTigerTag(payload, uid) {
const tag = TigerTag.fromPages(Buffer.from(uid), Buffer.from(payload));
const db = new TigerTagDB();
return {
dict: tag.toDict(db),
raw: tag.toRawDict(),
sig: tag.verify(db).toDict(),
};
}
Essayer sans lecteur : le playground
Une page web locale, servie par le SDK lui-même, qui construit et décode les puces TigerTag et montre chaque octet. Aucun matériel NFC n'est nécessaire.
Entrée et sortie du SDK côte à côte : l'appel create(), puis pretty(), describe(), verify() et toDict().
Avec un ou plusieurs lecteurs PC/SC comme l'ACR122U, les puces sont lues dès qu'elles sont posées, et Burn écrit le contenu courant.
Le playground n'écrit jamais de signature : seul un fabricant certifié peut en émettre une.
npm run playground
# then open http://localhost:7432/tools/playground.html# Enable live reader support (one-time install)
npm install ws nfc-pcsc
Une partie de l'écosystème TigerTag
Le SDK implémente la spécification ouverte TigerTag, aux côtés des autres outils officiels.
Spécification du protocole TigerTag
La spécification ouverte que le SDK implémente : organisation de la mémoire, types de tag, schéma de signature et base de référence.
Lancez npm install tigertag, ou pnpm add tigertag, yarn add tigertag ou bun add tigertag. Il faut Node.js 18 ou plus récent, et aucun autre paquet pour lire et vérifier.
Faut-il une connexion internet ?
Non. Les tables de référence et la clé publique de signature sont incluses dans le paquet : lecture et vérification fonctionnent hors ligne. Le réseau ne sert qu'à la vérification quotidienne des tables, au catalogue de produits et aux méthodes cloud TigerTag+ ; offline: true ou TIGERTAG_OFFLINE=1 le désactive.
Avec quelles puces et quels lecteurs NFC fonctionne-t-il ?
TigerTag utilise des puces NTAG213, NTAG215 et NTAG216 (ISO 14443-3). Le SDK prend l'UID et les octets lus par votre bibliothèque NFC : il n'est lié à aucun lecteur ; le README montre nfc-pcsc avec un ACR122U.
Comment vérifie-t-il qu'une puce est authentique ?
verify() contrôle la signature ECDSA-P256 de la puce sur son UID et ses identifiants produit, avec la clé publique incluse dans le paquet. Il renvoie valid, invalid, unsigned (un tag Maker), no_key ou no_uid, sans appel serveur.
Peut-il écrire des puces ?
Il construit les octets : create(), patch(), asInit(), erase() et fromCatalog() donnent un TigerTag dont toBytes() est le contenu que votre bibliothèque NFC écrit. Le bouton Burn du playground l'écrit sur les puces des lecteurs connectés.
Existe-t-il une version Python ?
Oui : TigerTag-SDK-Python est le portage Python de la même API, et les deux SDK servent la même page de playground.
Sous quelle licence est le SDK ?
Apache-2.0, qui comporte un octroi explicite de brevets. Implémenter le protocole TigerTag lui-même ne demande aucune licence.
Une commande pour commencer
npm install tigertag, puis TigerTag.fromPages(uid, payload).