#r "nuget:Standard.Licensing" open System.Text open System.IO open System
let baseDir = "./keys" match Directory.Exists baseDir with | false -> Directory.CreateDirectory baseDir |>ignore () | true -> ()
let prefix = DateTime.Now.ToString("yyyyMMdd_hhmmss")
let initKeys (passPhrase:string) :(string * string) = let generator = Standard.Licensing.Security.Cryptography.KeyGenerator.Create() let keyPair = generator.GenerateKeyPair() (keyPair.ToEncryptedPrivateKeyString(passPhrase),keyPair.ToPublicKeyString())
let privateKeyName = $"{prefix}_key.private" let publicKeyName = $"{prefix}_key.public"
printf "please input your passPhrase:" let passPhrase = Console.ReadLine()
let privateKey, publicKey = initKeys passPhrase
let privateKeyPath = Path.Combine(baseDir,privateKeyName) let publicKeyPath = Path.Combine(baseDir,publicKeyName) File.WriteAllText(privateKeyPath,privateKey,Encoding.UTF8); File.WriteAllText(publicKeyPath,publicKey,Encoding.UTF8);
privatestaticboolCheckLicense() { var licensePath = "Your License File Path"; var licContent = Encoding.UTF8.GetString(Convert.FromBase64String(File.ReadAllText(licensePath, Encoding.UTF8))); var lic = License.Load(licContent); var assembly = Assembly.GetEntryAssembly(); usingvar rStream = assembly.GetManifestResourceStream($"Some.Namespace.key.public"); //read public key as ManifestResource usingvar sr = new StreamReader(rStream); var publicKey = sr.ReadToEnd(); Log.Information($"This app is using init license from [{licensePath}]");