Aller au contenu

ADR 0033 – SHA-256 par @noble/hashes dans le paquet de règles

Statut : Décidée. Date : 30/09/2026. Applique la page « Paquet de règles » (§1, dépendances).

L’empreinte d’une commande (SHA-256 du JSON canonique) doit être identique sur le téléphone, dans la WebView Android et sur le serveur, et se calculer de façon synchrone dans packages/domain, qui n’a ni entrée-sortie ni accès à crypto (règle ESLint). Elle est reprise dans le QR code du document de terrain et rejouée à la synchronisation (SP-13).

@noble/hashes (licence MIT), version 2, import ciblé @noble/hashes/sha2.js : SHA-256 en JavaScript pur, sans dépendance, synchrone, auditée. Une seule fonction du paquet l’appelle (sha256Hex). Les vecteurs officiels du NIST figurent dans testdata/domain/commande/sha256Hex/.

  • WebCrypto (crypto.subtle) : asynchrone, et la règle du paquet interdit crypto. Le rendrait dépendant de l’environnement.
  • Implémentation maison : du code cryptographique à écrire et à maintenir, là où une bibliothèque relue existe. La règle d’entrée d’une dépendance (remplacer du code à maintenir) s’applique.

Une dépendance d’exécution dans packages/domain, seule du paquet. Elle est embarquée dans l’application terrain (quelques kilo-octets).

sha256Hex est la seule interface : on la réimplémente avec autre chose, et les vecteurs NIST et ceux des commandes garantissent le même résultat.