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
|
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
|
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.
|
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
|
- **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
|
par le script (`r||s` brut, 64 octets) est deja celle qu'attend
|
||||||
`BCryptVerifySignature`, et les coordonnees exportees se rangent telles
|
`BCryptVerifySignature`, et les coordonnees exportees se rangent telles
|
||||||
|
|||||||
@@ -73,16 +73,21 @@ const
|
|||||||
//
|
//
|
||||||
// BCRYPT_ECCPUBLIC_BLOB : magic 'ECS1' + longueur(32) + X(32) + Y(32).
|
// BCRYPT_ECCPUBLIC_BLOB : magic 'ECS1' + longueur(32) + X(32) + Y(32).
|
||||||
//
|
//
|
||||||
// Posee le 2026-09-05. NE JAMAIS REGENERER LA PAIRE : toutes les licences
|
// Posee le 2026-09-05, REFAITE le meme jour : la premiere privee a ete
|
||||||
// deja emises tomberaient d'un coup. Un blob a zero refuse tout, ce qui est
|
// supprimee sans copie. Une paire perdue interdit toute nouvelle licence a
|
||||||
// le bon defaut — un defaut qui accepterait quelque chose serait pire.
|
// 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 = (
|
LicencePublicKeyBlob: array[0..71] of Byte = (
|
||||||
$45, $43, $53, $31, $20, $00, $00, $00, $AA, $6D, $66, $6E,
|
$45, $43, $53, $31, $20, $00, $00, $00, $E3, $7A, $24, $23,
|
||||||
$3E, $43, $61, $20, $5D, $4B, $DC, $C4, $7E, $07, $D1, $71,
|
$B3, $90, $E4, $5C, $02, $7F, $49, $17, $9F, $1E, $BA, $96,
|
||||||
$78, $5D, $F1, $45, $9A, $90, $70, $E5, $A2, $62, $28, $52,
|
$18, $54, $BF, $9A, $F4, $42, $E9, $1E, $A4, $AD, $32, $DF,
|
||||||
$49, $96, $F2, $88, $20, $17, $E6, $42, $3F, $B0, $DF, $73,
|
$82, $7E, $54, $F4, $E7, $04, $5E, $FE, $84, $AA, $FA, $A3,
|
||||||
$D2, $5E, $AA, $DF, $92, $4D, $51, $C8, $86, $1E, $26, $29,
|
$3F, $78, $26, $6E, $C3, $67, $8A, $2A, $F2, $B4, $CD, $0D,
|
||||||
$05, $43, $E4, $18, $80, $9C, $E2, $E6, $04, $20, $3C, $56
|
$EA, $2E, $96, $CB, $99, $71, $70, $DC, $E7, $C5, $40, $E7
|
||||||
);
|
);
|
||||||
|
|
||||||
// ===== CNG ===================================================================
|
// ===== CNG ===================================================================
|
||||||
|
|||||||
+5
-1
@@ -15,7 +15,11 @@ param(
|
|||||||
[string]$For,
|
[string]$For,
|
||||||
[string]$Name = '',
|
[string]$Name = '',
|
||||||
[string]$Machine,
|
[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'
|
$ErrorActionPreference = 'Stop'
|
||||||
|
|||||||
Reference in New Issue
Block a user