diff --git a/CLAUDE.md b/CLAUDE.md index 9305aac..b8f096f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -425,6 +425,40 @@ Settings -> Licence, revele seulement quand `config.txt` existe a cote de l'exe `PM.Licence.ClearLicence`, et evite d'avoir a supprimer `prefs.bin` — qui desactive mais emporte le mode de deverrouillage, le nom retenu et la sync. +### Cote Android : differe, et le jour venu on reutilisera la licence desktop + +**Rien n'est fait, et c'est deliberе** — l'APK ne part chez personne aujourd'hui, +on l'installe soi-meme par adb. Un dispositif de licences sans destinataire est +du code qui vieillit sans jamais s'executer chez quelqu'un. + +Le jour ou l'APK partira chez des clients, **ne pas refaire un second dispositif**. +Trois raisons, a garder pour ne pas les re-deriver : + +- **L'elegance du cote Windows ne se transporte pas.** Elle venait de ce que + .NET sur Windows EST CNG : la signature `r||s` brute est deja celle qu'attend + `BCryptVerifySignature`. **Java attend du DER** — il faudrait emettre deux + formats ou convertir, plus un pont JNI vers `java.security.Signature`. La + moitie penible qu'on avait evitee reviendrait. +- **Pas d'empreinte materielle solide sur Android.** Plus d'IMEI ni de numero de + serie sans permission privilegiee ; il reste `ANDROID_ID`, **remis a zero par + une reinitialisation d'usine** — donc des clients legitimes qui perdent leur + licence sans rien avoir fait. C'est le defaut couteux, celui qui refuse + quelqu'un qui a paye. +- **Un APK se contourne bien plus facilement qu'un exe.** `repack-apk.ps1` en + est la demonstration : decompiler, retirer un test, resigner est de la routine + outillee. + +**La forme retenue** : l'instantane publie par le poste porte la licence, et +l'APK exige d'y en trouver une. Le telephone lit deja cet instantane — aucun +nouveau format d'emission, aucune empreinte Android, aucune licence +supplementaire a fabriquer. + +**Et l'APK n'a PAS a verifier la signature** : il constate la presence, rien de +plus. Payer le DER et le JNI pour durcir un controle que le repaquetage retire +en dix minutes serait le mauvais echange. Le but est de tenir le mobile attache +a un poste paye, pas de resister a une attaque — l'APK ne peut pas resister, et +faire semblant couterait plus que de l'admettre. + **ORDRE OBLIGATOIRE.** Tant que `LicencePublicKeyBlob` est a zero, aucune licence n'est valide et l'ecran d'activation est **infranchissable** — l'exe construit ne s'ouvre plus. Poser la cle publique AVANT de deployer :