TigerTag SDK JS

SDK JavaScript / Node.jsTigerTag SDK

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.

npm install tigertag
quick-start.js
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. 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. 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.

    // Node.js — nfc-pcsc (ACR122U / PN532)
    reader.on('card', async (card) => {
      const uid = Buffer.from(card.uid, 'hex');        // 7 bytes
      const payload = await reader.read(4, 144, 4);    // pages 4–39, 144 bytes
      const tag = TigerTag.fromPages(uid, payload);
      console.log(tag.pretty());
      console.log(String(tag.verify()));               // VALID / NOT SIGNED
    });
  3. 3

    Modifier et écrire

    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();

Toute l'API dans le README

Ce que fait le SDK

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.

Dépôt: TigerTag-RFID-Guide

SDK TigerTag pour Python

Le portage Python : lire, vérifier, écrire et comparer. La page du playground est le même fichier dans les deux SDK.

Dépôt: TigerTag-SDK-Python

TigerTag Studio Manager

Gestionnaire d'inventaire de bureau open source pour Windows, macOS et Linux, compatible avec le TigerTag Pod et les lecteurs ACR122U.

Dépôt: TigerTag-Studio-Manager

TigerTag RFID Connect

L'application mobile officielle : lire et écrire les puces avec le NFC intégré du téléphone.

Questions

Comment installer le SDK JavaScript TigerTag ?

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).

Voir sur npm