Aller au contenu principal

Cycle de vie côté client (offline)

Niveau Débutant
Temps de lecture ⏱ 10 min
mots 1122
Sujets licenseactivation

Cycle de vie côté client (activation offline, self-service)

Ce document décrit uniquement le cycle de vie côté client : installation du binaire, déclaration self-service de chaque machine, quotas, vérification runtime et bascule entre plusieurs licences.

Rappel important : le binaire SCA ne fait JAMAIS d'appel HTTP. Toute communication serveur ↔ client passe par email + actions du user sur le portail web (www.codefixture.com).

Récap chronologique (3 phases, dans l'ordre)

Schéma des 3 phases du cycle de vie client

Phase A — 1ère installation (1 fois par client)

  1. Devis puis facturation — le modèle tarifaire est communiqué sur demande (how-we-price.php), pas de self-checkout en ligne.
  2. Réception d'un email d'activation dès la création du compte client, pour définir son mot de passe portail (lien signé, valable 2 heures). Un second email « package prêt » suit dès qu'un binaire a été livré par l'opérateur.
  3. Login sur www.codefixture.com/login.php : email + mot de passe, puis code de connexion à 6 chiffres envoyé par email et saisi sur otp.php (double authentification systématique).

Phase B — Pour CHAQUE plateforme utilisée (Linux, macOS, Windows…)

  1. Sur /downloads.php, cliquer Télécharger sur la ligne de la plateforme voulue. Reçoit un fichier :
    • sca-<version>-<platform>-<id>.tar.gz (Linux)
    • sca-<version>-<platform>-<id>.dmg (macOS)
    • sca-<version>-<platform>-<id>.zip (Windows)
  2. Vérifier le SHA-256 (recommandé) :
    shasum -a 256 sca-1.0.0-linux-x86_64-acme.tar.gz   # macOS / Linux
    certutil -hashfile sca-1.0.0-win-x86_64-acme.zip SHA256   # Windows
    
    → comparer avec la valeur affichée dans /downloads.php.
  3. Extraire le package. Contenu :
    • staticcodeaudit-<platform> (le binaire exécutable)
    • README.txt (procédure d'activation offline)
    • NOTICE.txt (mentions de licence + rappel principe offline)

Page Téléchargements du portail client, listant les packages disponibles par plateforme avec taille et SHA-256

Phase C — Pour CHAQUE machine à activer (jusqu'à max_machines, self-service)

  1. Calculer l'empreinte machine (SHA-256 64 chars hex, dérivée de hostname + arch + OS + MAC, sans appel réseau) — deux façons équivalentes :
    • Sans avoir installé le binaire : sur www.codefixture.com/activate.php, un onglet Linux/macOS et un onglet Windows fournissent chacun un one-liner (Python 3 ou PowerShell) à coller dans un terminal, avec bouton copier.
    • Binaire déjà installé : ./staticcodeaudit-<platform> activate affiche la même empreinte directement dans le terminal (ou le footer SCA lors d'un scan sur une machine non encore activée).

Page Activer une licence : commande one-liner pour calculer l'empreinte machine, et fiche licence avec ses quotas

  1. Copier cette empreinte (clé USB, téléphone, copier-coller) vers un poste connecté à Internet — peut être le même poste que celui utilisé pour le calcul.
  2. Sur ce poste connecté, aller sur www.codefixture.com/activate.php (connexion requise). Toutes les licences du client sont listées automatiquement — pas de numéro de série à ressaisir. Pour la licence concernée :
    • Sélectionner la plateforme (liste déroulante)
    • Coller l'empreinte machine
    • Renseigner un libellé facultatif (ex. « MacBook bureau »)
    • Cliquer + Ajouter

Liste des machines déclarées sur une licence avec le quota restant, et formulaire d'ajout

  1. Le site met à jour license.key immédiatement côté serveur (nouvelle empreinte ajoutée à la liste signée). Télécharger ce fichier via le bouton dédié sur la fiche licence — disponible à tout moment, pas seulement juste après un ajout.
  2. Rapatrier le license.key sur la machine cible (clé USB / scp / AirDrop) et le placer dans le même dossier que le binaire.
  3. Relancer SCA :
    ./staticcodeaudit-linux-x86_64 scan ~/mon-projet
    
    → SCA :
    • lit license.key local
    • vérifie la signature HMAC HKDF (clé publique embarquée — zéro appel réseau)
    • vérifie que son empreinte locale ∈ liste signée
    • vérifie expires_at > today
    • lance le scan
    • footer en fin : Statut : OK (machine activée)

Quotas self-service (2 dimensions distinctes)

Chaque licence a deux quotas indépendants, réglables selon le palier tarifaire (tier) :

Quota Ce qu'il limite Réinitialisation
Places (max_machines) Nombre de machines simultanément déclarées sur la licence Jamais — un retrait libère immédiatement une place
Fréquence d'ajout (max_machine_changes_per_year) Nombre d'ajouts de machine sur une fenêtre glissante de 365 jours Glissant — un ajout de plus d'un an sort automatiquement du calcul

Affiché sur /activate.php, par licence : « X / Y machine(s) déclarée(s) · Z ajout(s) restant(s) sur les 12 derniers mois ».

Seuls les ajouts consomment le quota de fréquence — un retrait (bouton « ✕ Retirer ») est toujours possible, sans limite : il libère une place sans jamais ajouter de matériel supplémentaire, donc rien à limiter de ce côté. Le retrait déclenche immédiatement une re-signature de license.key (empreinte retirée de la liste) : le binaire s'arrêtera sur ce poste à sa prochaine vérification (pas de coupure instantanée, pas d'appel réseau possible pour la déclencher plus tôt).

Renommer le libellé d'une machine (notes) n'est jamais considéré comme un changement — toujours possible, même quota d'ajouts épuisé.

Messages d'erreur possibles (self-service)

Situation Message affiché
Cette empreinte est déjà déclarée sur cette licence Cette machine est déjà déclarée pour cette licence.
Quota de places (max_machines) atteint Quota de machines atteint pour cette licence.
Quota d'ajouts (fenêtre 365j) atteint Quota d'ajouts de machine atteint pour les 12 derniers mois.
Licence non active (suspendue, expirée, révoquée) Cette licence n'est pas active : déclaration de machine impossible.

1 Vérification runtime (sans Internet)

À chaque exécution sur une machine déjà activée, SCA : - Lit license.key depuis le filesystem local - Vérifie la signature HMAC HKDF (intégrité + non-falsification — clé publique embarquée dans le binaire) - Vérifie l'empreinte locale ∈ fingerprints du payload - Vérifie expires_at > today - Aucun appel réseau, aucun ping, aucune télémétrie.

Conséquence : un retrait de machine ou une révocation côté admin n'est effectif qu'à la prochaine vérification du binaire concerné (retélécharger license.key propage immédiatement le retrait ; pour une révocation de licence entière, le user devra retélécharger un nouveau license.key qui n'inclura plus son empreinte ou aura une expires_at rapprochée).

2 Multi-licences sur une même machine — SCA_LICENSE_PATH

Si le client a 2 licences différentes (ex. Solo Plus perso + Team équipe — cas rare), il peut basculer entre elles sans déplacer de fichier :

SCA_LICENSE_PATH=~/licences/team.key       ./sca scan ~/projet-pro
SCA_LICENSE_PATH=~/licences/solo-plus.key  ./sca scan ~/projet-perso

Ordre de priorité de SCA pour trouver son license.key :

  1. $SCA_LICENSE_KEY (contenu JSON brut, défini par un wrapper)
  2. $SCA_LICENSE_PATH (chemin vers un fichier .key — recommandé pour le switching multi-licences)
  3. ./license.key (cwd, convention par défaut)

3 Cas spéciaux côté client

Cas Procédure
Ajouter une N-ième machine Refaire phase C (étapes 7→12) sur la nouvelle machine. Consomme 1 ajout du quota de fréquence (places max_machines permettant).
Réinstallation OS sur la même machine L'empreinte change → refaire phase C (nouvel ajout). Si quota de places atteint, retirer l'ancienne empreinte au préalable depuis /activate.php (gratuit, sans limite).
Transfert poste à poste Retirer l'ancien depuis /activate.php → refaire phase C sur le nouveau (1 ajout consommé).
Machine perdue/volée Retirer depuis /activate.php — effectif à la prochaine vérification du binaire sur ce poste.
Fichier license.key perdu Le retélécharger à tout moment depuis /activate.php (bouton dédié par licence) — pas besoin de refaire phase C, l'empreinte est déjà déclarée.
Renouvellement annuel Le client refait étape 4 (download nouveau package) + étape 11 (rapatriement nouveau license.key) sur chaque machine si la version a changé.