Licenza in abbonamento con codice Pro cifrato
Questo esempio mostra una licenza a tempo (in abbonamento) con un periodo di tolleranza, in cui le funzionalità riservate all’abbonamento sono protette con la cifratura del codice MSIL di Babel Obfuscator. Il codice Pro può essere eseguito solo finché l’abbonamento, compreso il periodo di tolleranza, è valido, perché la Babel Virtual Machine ottiene la password di decifratura dalla licenza stessa. Quando l’abbonamento è scaduto oltre il periodo di tolleranza la licenza non supera più la convalida, quindi il codice Pro cifrato smette di funzionare.
Per usare questo esempio ti servono una licenza per sede di Babel Obfuscator (edizioni Ultimate, Server o Data Center) e Babel Licensing. Il codice sorgente è disponibile su GitHub:
git clone https://github.com/babelfornet/subscription-license-console-example.gitLa licenza contiene due date: una ExpireDate applicata dal motore, impostata sulla fine del
periodo di tolleranza (il limite definitivo), e un campo subscription-end, non vincolante, che
indica quando va fatto il rinnovo. Tra queste due date l’app continua a funzionare ma ricorda
all’utente di rinnovare; dopo il limite definitivo la licenza non supera più la convalida e il codice
Pro cifrato resta bloccato.
Active -> Pro forecast runs
Grace (lapsed) -> Pro forecast runs + "please renew" warning
Expired (>grace) -> Pro forecast locked (BVM cannot decrypt it)Il metodo Pro è cifrato e ottiene la password dalla licenza attraverso un hook get password:
[Obfuscation(Feature = "msil encryption:internal=true;source=pro;password=...")]
public static double Forecast(double[] history) { /* protected body */ }Un progetto complementare, LicenseGenerator, emette le licenze in abbonamento (--days, --grace,
--expired), così puoi provare ogni stato. Poiché la protezione è crittografica, estendere
l’abbonamento modificando con una patch un controllo sulla data non serve: senza una licenza valida
non c’è password, e il codice Pro non può essere decifrato.