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:
@@ -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
|
||||
|
||||
@@ -73,16 +73,21 @@ const
|
||||
//
|
||||
// BCRYPT_ECCPUBLIC_BLOB : magic 'ECS1' + longueur(32) + X(32) + Y(32).
|
||||
//
|
||||
// Posee le 2026-09-05. NE JAMAIS REGENERER LA PAIRE : toutes les licences
|
||||
// deja emises tomberaient d'un coup. Un blob a zero refuse tout, ce qui est
|
||||
// le bon defaut — un defaut qui accepterait quelque chose serait pire.
|
||||
// Posee le 2026-09-05, REFAITE le meme jour : la premiere privee a ete
|
||||
// supprimee sans copie. Une paire perdue interdit toute nouvelle licence a
|
||||
// jamais, et la seule reparation est celle-ci — regenerer et reemettre.
|
||||
// C'etait sans douleur avec une licence en circulation ; ca ne le sera plus.
|
||||
//
|
||||
// NE JAMAIS REGENERER SANS RAISON : toutes les licences deja emises
|
||||
// tomberaient d'un coup. Un blob a zero refuse tout, ce qui est le bon
|
||||
// defaut — un defaut qui accepterait quelque chose serait pire.
|
||||
LicencePublicKeyBlob: array[0..71] of Byte = (
|
||||
$45, $43, $53, $31, $20, $00, $00, $00, $AA, $6D, $66, $6E,
|
||||
$3E, $43, $61, $20, $5D, $4B, $DC, $C4, $7E, $07, $D1, $71,
|
||||
$78, $5D, $F1, $45, $9A, $90, $70, $E5, $A2, $62, $28, $52,
|
||||
$49, $96, $F2, $88, $20, $17, $E6, $42, $3F, $B0, $DF, $73,
|
||||
$D2, $5E, $AA, $DF, $92, $4D, $51, $C8, $86, $1E, $26, $29,
|
||||
$05, $43, $E4, $18, $80, $9C, $E2, $E6, $04, $20, $3C, $56
|
||||
$45, $43, $53, $31, $20, $00, $00, $00, $E3, $7A, $24, $23,
|
||||
$B3, $90, $E4, $5C, $02, $7F, $49, $17, $9F, $1E, $BA, $96,
|
||||
$18, $54, $BF, $9A, $F4, $42, $E9, $1E, $A4, $AD, $32, $DF,
|
||||
$82, $7E, $54, $F4, $E7, $04, $5E, $FE, $84, $AA, $FA, $A3,
|
||||
$3F, $78, $26, $6E, $C3, $67, $8A, $2A, $F2, $B4, $CD, $0D,
|
||||
$EA, $2E, $96, $CB, $99, $71, $70, $DC, $E7, $C5, $40, $E7
|
||||
);
|
||||
|
||||
// ===== CNG ===================================================================
|
||||
|
||||
+5
-1
@@ -15,7 +15,11 @@ param(
|
||||
[string]$For,
|
||||
[string]$Name = '',
|
||||
[string]$Machine,
|
||||
[string]$KeyFile = "$PSScriptRoot\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, et une cle
|
||||
# privee perdue interdit toute nouvelle licence a jamais. Le .gitignore la
|
||||
# protegeait du depot, rien ne la protegeait de son proprietaire.
|
||||
[string]$KeyFile = "$env:USERPROFILE\Documents\pmserver-licence-private.key"
|
||||
)
|
||||
|
||||
$ErrorActionPreference = 'Stop'
|
||||
|
||||
Reference in New Issue
Block a user