fix(licence): nouvelle paire, et la privee ne nait plus dans le depot

La premiere privee a ete supprimee sans copie : plus aucune licence
nouvelle n'etait emettable. Regeneration + reemission, indolore
aujourd'hui parce qu'une seule licence circulait.

licence.ps1 ecrit desormais la cle dans %USERPROFILE%\Documents, hors du
depot. Elle vivait dans tools\, ou elle n'attendait qu'un menage : le
.gitignore la protegeait du depot, rien ne la protegeait de son
proprietaire.

Verifie : la licence de la nouvelle paire passe, celle de la paire
perdue tombe — la regeneration a bien remplace, pas ajoute.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
r-zakarya
2026-09-05 17:50:14 +01:00
parent 427d294b22
commit fc945ac6ab
3 changed files with 31 additions and 10 deletions
+12
View File
@@ -300,6 +300,18 @@ tools\licence.ps1 -For "a@b.com" -Name "Ami" # une licence
magic `ECS1` + longueur(32) + X(32) + Y(32). **Livre a zero** — tant qu'on
n'y a pas colle la sortie de `-Init`, aucune licence n'est valide. Ne jamais
regenerer la paire ensuite : toutes les licences deja emises tomberaient.
- **La cle privee s'ecrit dans `%USERPROFILE%\Documents\pmserver-licence-private.key`,
hors du depot par construction.** Elle a d'abord vecu dans `tools\`, ou elle
n'attendait qu'un menage pour disparaitre — ce qui est arrive le 2026-09-05,
sans copie, obligeant a regenerer la paire et a reemettre. Le `.gitignore` la
protegeait du depot ; rien ne la protegeait de son proprietaire. Sa vraie
place est un coffre ; le fichier n'est qu'un intermediaire, et `-KeyFile`
permet de la relire d'ou on l'a mise.
- **Perdre la privee et perdre la publique n'ont pas le meme effet** : sans la
privee on ne peut plus emettre AUCUNE licence nouvelle (les existantes
continuent — l'exe n'a que la publique) ; la reparation est de regenerer,
reconstruire et reemettre chacune. Indolore avec une licence en circulation,
ingerable avec vingt.
- **Aucun ASN.1 nulle part.** .NET sur Windows EST CNG : la signature produite
par le script (`r||s` brut, 64 octets) est deja celle qu'attend
`BCryptVerifySignature`, et les coordonnees exportees se rangent telles