TigerTag SDK JS

JavaScript- / Node.js-SDKTigerTag SDK

TigerTag-NFC-Chips mit JavaScript lesen, prüfen und schreiben.

Das SDK des offenen TigerTag-Protokolls für Filament und Harz im 3D-Druck: Es macht aus den Bytes eines Chips Material, Farbe, Druckeinstellungen und Menge, prüft seine ECDSA-P256-Signatur offline und baut neue Tags Byte für Byte.

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
Der Schnellstart aus dem README: Er läuft direkt nach npm install, ohne Einrichtung.
1.2.1Aktuelle Version, veröffentlicht am 2026-11-06
Node.js 18+Nutzt das eingebaute crypto und fetch
0Laufzeitabhängigkeiten zum Lesen und Prüfen
Apache-2.0Open-Source-Lizenz mit Patentgewährung

In drei Schritten loslegen

Paket installieren, einen Chip mit Ihrer NFC-Bibliothek lesen, einen neuen schreiben. Dank der mitgelieferten Referenztabellen läuft der erste Start ohne Netz.

  1. 1

    Paket installieren

    Aus der npm-Registry. pnpm, yarn und bun installieren dasselbe Paket.

    npm install tigertag
    pnpm add tigertag
    yarn add tigertag
    bun add tigertag
  2. 2

    Einen Chip lesen

    Übergeben Sie die 7-Byte-UID und die 144 Bytes, die Ihre NFC-Bibliothek liest. Hier mit nfc-pcsc und einem 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

    Ändern und schreiben

    Jede Änderung liefert einen neuen TigerTag; toBytes() gibt die zu schreibenden Bytes. erase() liefert einen leeren Chip.

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

Die vollständige API im README

Was das SDK kann

Ein Paket für alles rund um einen TigerTag-Chip: lesen, prüfen, schreiben und seine Daten aktuell halten.

Jeden Dump lesen

fromPages(), fromDump() und fromFile() nehmen eine UID mit 80 oder 144 Bytes oder einen vollständigen 180-Byte-Dump. pretty(), describe(), toDict() und toRawDict() liefern Text, einen Absatz in Klartext oder JSON-fertige Objekte.

Echtheit offline prüfen

verify() prüft die ECDSA-P256-Signatur, die die UID des Chips an seine Produktdaten bindet, mit dem im Paket enthaltenen öffentlichen Schlüssel. Ergebnis: valid, invalid, unsigned, no_key oder no_uid.

Tags erstellen und ändern

create(), asInit(), patch() und erase() erzeugen Chip-Bytes. Ein TigerTag ist unveränderlich: patch() liefert einen neuen und verweigert Änderungen an idTigertag, idProduct, uid oder der Signatur.

Aus dem Katalog bauen

TigerTag.fromCatalog(productId) baut einen vollständigen TigerTag+ aus dem offiziellen Produktkatalog, der beim ersten Gebrauch geladen und in einem Ordner pro Benutzer zwischengespeichert wird.

Mit dem Hersteller abgleichen

Für TigerTag+-Chips holen rawApi(), diffApi() und patchFromApi() die aktuellen Produktdaten der Marke, zeigen die Unterschiede zum Chip und übernehmen sie.

Referenzdaten, zuerst offline

Die Tabellen für Material, Marke, Optik, Typ, Durchmesser und Einheit sind im Paket enthalten. Eine Hintergrundprüfung aktualisiert sie höchstens einmal am Tag; offline: true oder TIGERTAG_OFFLINE=1 bedeutet null Netzaufrufe.

Drei Arten von Tags

Das SDK liest und schreibt die drei Tag-Typen des TigerTag-Protokolls v2.2 auf NTAG213-, NTAG215- und NTAG216-Chips.

idProduct 0xFFFFFFFF

TigerTag (Maker)

Alle Felder auf dem Chip, vollständig offline lesbar.

idProduct 0x00000000

TigerTag Init

Eine leere Vorlage, bereit zum Programmieren. TigerTag.asInit() erstellt eine.

ECDSA-P256

TigerTag+

Alle Felder auf dem Chip, dazu eine Produkt-ID, die mit der Cloud-API für Updates des Herstellers verknüpft ist. Ein signierter Chip lässt sich mit verify() prüfen.

Auf der Kommandozeile und in Electron

Das Paket installiert den Befehl tigertag und läuft im Hauptprozess einer Electron-App.

Der Befehl tigertag

Einen Dump als Text, JSON oder Rohfelder ausgeben und die Referenztabellen bei Bedarf aktualisieren.

# Parse a dump file
tigertag dump.bin

# JSON output
tigertag dump.bin --json

# Update the reference tables now (into the data dir)
tigertag update

In einer Electron-App

Chips im Hauptprozess auswerten, ohne Unterprozess mitzuliefern.

// 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(),
  };
}

Ohne Lesegerät ausprobieren: der Playground

Eine lokale Webseite, vom SDK selbst bereitgestellt, die TigerTag-Chips baut und dekodiert und jedes Byte zeigt. Keine NFC-Hardware nötig.

  • Ein- und Ausgabe des SDK nebeneinander: der Aufruf create(), dann pretty(), describe(), verify() und toDict().
  • Mit einem oder mehreren PC/SC-Lesegeräten wie dem ACR122U werden Chips beim Auflegen gelesen, und Burn schreibt den aktuellen Inhalt.
  • Der Playground schreibt nie eine Signatur: Nur ein zertifizierter Hersteller kann eine ausstellen.
npm run playground
# then open http://localhost:7432/tools/playground.html

# Enable live reader support (one-time install)
npm install ws nfc-pcsc

Teil des TigerTag-Ökosystems

Das SDK setzt die offene TigerTag-Spezifikation um, neben den anderen offiziellen Werkzeugen.

Spezifikation des TigerTag-Protokolls

Die offene Spezifikation, die das SDK umsetzt: Speicheraufbau, Tag-Typen, Signaturverfahren und Referenzdatenbank.

Repository: TigerTag-RFID-Guide

TigerTag-SDK für Python

Die Python-Portierung: lesen, prüfen, schreiben und vergleichen. Die Playground-Seite ist in beiden SDKs dieselbe Datei.

Repository: TigerTag-SDK-Python

TigerTag RFID Connect

Die offizielle Mobil-App: Chips mit dem eingebauten NFC des Telefons lesen und schreiben.

Fragen

Wie installiere ich das TigerTag JavaScript-SDK?

Mit npm install tigertag, oder pnpm add tigertag, yarn add tigertag bzw. bun add tigertag. Es braucht Node.js 18 oder neuer und kein weiteres Paket zum Lesen und Prüfen.

Braucht es eine Internetverbindung?

Nein. Die Referenztabellen und der öffentliche Signaturschlüssel sind im Paket enthalten, Lesen und Prüfen funktionieren offline. Das Netz wird nur für die tägliche Tabellenprüfung, den Produktkatalog und die TigerTag+-Cloud-Methoden genutzt; offline: true oder TIGERTAG_OFFLINE=1 schaltet es ab.

Mit welchen NFC-Chips und Lesegeräten funktioniert es?

TigerTag nutzt NTAG213-, NTAG215- und NTAG216-Chips (ISO 14443-3). Das SDK nimmt die UID und die Bytes, die Ihre NFC-Bibliothek liest, und ist daher an kein Lesegerät gebunden; das README zeigt nfc-pcsc mit einem ACR122U.

Wie prüft es, ob ein Chip echt ist?

verify() prüft die ECDSA-P256-Signatur des Chips über seine UID und Produktkennungen mit dem im Paket enthaltenen öffentlichen Schlüssel. Es liefert valid, invalid, unsigned (ein Maker-Tag), no_key oder no_uid, ohne Serveraufruf.

Kann es Chips beschreiben?

Es erzeugt die Bytes: create(), patch(), asInit(), erase() und fromCatalog() liefern einen TigerTag, dessen toBytes() der Inhalt ist, den Ihre NFC-Bibliothek schreibt. Die Burn-Schaltfläche des Playgrounds schreibt ihn auf die Chips angeschlossener Lesegeräte.

Gibt es eine Python-Version?

Ja: TigerTag-SDK-Python ist die Python-Portierung derselben API, und beide SDKs stellen dieselbe Playground-Seite bereit.

Unter welcher Lizenz steht das SDK?

Apache-2.0, mit ausdrücklicher Patentgewährung. Das TigerTag-Protokoll selbst umzusetzen erfordert keine Lizenz.

Ein Befehl zum Start

npm install tigertag, dann TigerTag.fromPages(uid, payload).

Auf npm ansehen