@teko13/certiscan
v1.0.11
Published
JavaScript library for decoding and verifying French 2D-Doc QR codes (ANTS specification)
Downloads
577
Maintainers
Readme
CertiScan - Décodage de QR codes 2D-Doc
Bibliothèque JavaScript pour le décodage et la vérification de QR codes 2D-Doc conformes aux spécifications ANTS françaises.
Installation
Via npm (recommandé)
npm install @teko13/certiscanInstallation locale (développement)
git clone https://github.com/teko13/certiscan.git
cd certiscan
npm installUtilisation
CertiScan peut être utilisé de plusieurs façons :
1. Utilisation en ligne de commande
Avec npx (recommandé)
npx @teko13/certiscan "VOTRE_CHAINE_2D_DOC_ICI"Installation globale
npm install -g @teko13/certiscan
certiscan "VOTRE_CHAINE_2D_DOC_ICI"Installation locale
node src/scan.js "VOTRE_CHAINE_2D_DOC_ICI"Cette commande affichera un JSON structuré contenant :
success: booléen indiquant si le décodage a réussierror: message d'erreur si le décodage a échouéheader: objet avec les informations d'en-tête (version, ca_id, cert_id, etc.)message: objet avec les données extraites (dataset)signature: objet avec les informations de validation de la signature
2. Utilisation comme dépendance dans un projet
Import ES6
import { decoderQrCode } from "@teko13/certiscan";
// Décoder un QR code 2D-Doc
const result = decoderQrCode("VOTRE_CHAINE_2D_DOC_ICI");
if (result.success) {
console.log("Décodage réussi !");
console.log("En-tête :", result.header);
console.log("Données :", result.message);
console.log("Signature valide :", result.signature.valid);
} else {
console.error("Erreur de décodage :", result.error);
}Import CommonJS
const { decoderQrCode } = require("@teko13/certiscan");
const result = decoderQrCode("VOTRE_CHAINE_2D_DOC_ICI");
console.log(result);3. API avancée
Pour un contrôle plus fin, vous pouvez utiliser directement les classes internes :
import { TwoDDoc, internal } from "@teko13/certiscan";
const doc = TwoDDoc.fromCode("VOTRE_CHAINE_2D_DOC_ICI");
console.log(doc.header.docType().userType);
console.log(doc.header.docType().emitterType);
console.log(doc.message.dataset);
console.log(doc.message.dataset[0].definition.name);
console.log(doc.message.dataset[0].value);
const chain = internal();
console.log(doc.header.caId);
console.log(doc.header.certId);
console.log(doc.signatureIsValid(chain));Exemples d'utilisation
Exemple complet avec gestion d'erreurs
import { decoderQrCode } from "@teko13/certiscan";
async function processQRCode(qrCodeString) {
try {
const result = decoderQrCode(qrCodeString);
if (result.success) {
console.log("✅ Décodage réussi");
console.log("📄 Type de document:", result.header.doc_type_id);
console.log("📅 Date d'émission:", result.header.emit_date);
console.log("🔐 Signature valide:", result.signature.valid);
console.log("📊 Données:", result.message.dataset);
return result;
} else {
console.error("❌ Erreur de décodage:", result.error);
return null;
}
} catch (error) {
console.error("💥 Erreur inattendue:", error);
return null;
}
}
// Utilisation
const qrCode = "VOTRE_CHAINE_2D_DOC_ICI";
processQRCode(qrCode);Outils de développement
Outil de dump
Pour analyser les fichiers de test :
node src/dump.js src/samples/spec/3.1.3/15.2.2/17.txtTests
npm testLiens utiles
- Package npm : https://www.npmjs.com/package/@teko13/certiscan
- Repository GitHub : https://github.com/teko13/certiscan
- Documentation ANTS : https://ants.gouv.fr/
Limitations
Cette bibliothèque est une traduction fidèle de la bibliothèque Python originale. Certaines fonctionnalités peuvent être simplifiées ou pas entièrement implémentées dans la version JavaScript :
- Le parsing des certificats est simplifié (nécessiterait un parsing ASN.1 approprié pour un usage en production)
- La vérification de signature est une implémentation de base
- Le support de certains formats binaires peut être limité
Licence
MIT
