feat: prepare Pro licensing and Android API 36
This commit is contained in:
1 parent
b600412285
commit
11a91863a3
25 files changed
+2447
-62
No files matched your search
@@ -0,0 +1,80 @@
|
||||
namespace LmeLicenseManager;
|
||||
|
||||
internal static class Program
|
||||
{
|
||||
[STAThread]
|
||||
private static void Main(string[] args)
|
||||
{
|
||||
if (args.Contains("--self-test", StringComparer.OrdinalIgnoreCase))
|
||||
{
|
||||
RunSelfTest();
|
||||
return;
|
||||
}
|
||||
|
||||
var repository = new LicenseRepository();
|
||||
repository.Initialize();
|
||||
if (args.Contains("--init", StringComparer.OrdinalIgnoreCase))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ApplicationConfiguration.Initialize();
|
||||
Application.Run(new MainForm(repository));
|
||||
}
|
||||
|
||||
private static void RunSelfTest()
|
||||
{
|
||||
var testDirectory = Path.Combine(Path.GetTempPath(), $"LME-License-SelfTest-{Guid.NewGuid():N}");
|
||||
var importedDirectory = Path.Combine(Path.GetTempPath(), $"LME-License-SelfTest-{Guid.NewGuid():N}");
|
||||
const string backupPassword = "LME-Test-Backup-Password-2026";
|
||||
try
|
||||
{
|
||||
var repository = new LicenseRepository(testDirectory, allowKeyGeneration: true);
|
||||
repository.Initialize();
|
||||
var license = repository.Issue(
|
||||
"Mario",
|
||||
"Rossi",
|
||||
"mario.rossi@example.test",
|
||||
DateTimeOffset.Now.AddDays(30),
|
||||
"Test automatico");
|
||||
if (!repository.VerifyToken(license.Token))
|
||||
{
|
||||
throw new InvalidOperationException("Il codice emesso non supera la verifica crittografica.");
|
||||
}
|
||||
|
||||
var backupPath = Path.Combine(testDirectory, "signing-key.lmekey");
|
||||
repository.ExportSigningKeyBackup(backupPath, backupPassword);
|
||||
|
||||
var importedRepository = new LicenseRepository(importedDirectory, allowKeyGeneration: true);
|
||||
importedRepository.Initialize();
|
||||
importedRepository.ImportSigningKeyBackup(backupPath, backupPassword);
|
||||
var portableLicense = importedRepository.Issue(
|
||||
"Giulia",
|
||||
"Bianchi",
|
||||
"giulia.bianchi@example.test",
|
||||
DateTimeOffset.Now.AddYears(1),
|
||||
"Test portabilita chiave");
|
||||
if (!repository.VerifyToken(portableLicense.Token)
|
||||
|| !importedRepository.VerifyToken(license.Token))
|
||||
{
|
||||
throw new InvalidOperationException("La chiave importata non produce licenze compatibili.");
|
||||
}
|
||||
|
||||
Console.WriteLine("Self-test licenze e portabilita chiave completato.");
|
||||
}
|
||||
finally
|
||||
{
|
||||
foreach (var directory in new[] { testDirectory, importedDirectory })
|
||||
{
|
||||
var fullPath = Path.GetFullPath(directory);
|
||||
var tempRoot = Path.GetFullPath(Path.GetTempPath());
|
||||
if (Directory.Exists(fullPath)
|
||||
&& fullPath.StartsWith(tempRoot, StringComparison.OrdinalIgnoreCase)
|
||||
&& Path.GetFileName(fullPath).StartsWith("LME-License-SelfTest-", StringComparison.Ordinal))
|
||||
{
|
||||
Directory.Delete(fullPath, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user