public void Will_detect_duplicate_license() { var guid = Guid.NewGuid(); var generator = new LicenseGenerator(public_and_private); var expiration = DateTime.Now.AddDays(30); var key = generator.Generate("Oren Eini", guid, expiration, LicenseType.Trial); var path = Path.GetTempFileName(); File.WriteAllText(path, key); var wait = new ManualResetEvent(false); var validator = new LicenseValidator(public_only, path) { LeaseTimeout = TimeSpan.FromSeconds(1) }; InvalidationType?invalidation = null; validator.LicenseInvalidated += type => invalidation = type; validator.MultipleLicensesWereDiscovered += (sender, args) => wait.Set(); validator.AssertValidLicense(); var validator2 = new LicenseValidator(public_only, path); validator2.AssertValidLicense(); //todo: marked this out for now // Assert.True(wait.WaitOne(TimeSpan.FromSeconds(100))); //Assert.Equal(invalidation.Value, InvalidationType.TimeExpired); }
public void Gen_and_validate_with_attributes() { var guid = Guid.NewGuid(); var generator = new LicenseGenerator(public_and_private); var expiration = DateTime.Now.AddDays(30); var key = generator.Generate("Oren Eini", guid, expiration, new Dictionary<string, string> { {"prof", "llb"}, {"reporting", "on"} }, LicenseType.Trial); var path = Path.GetTempFileName(); File.WriteAllText(path, key); var validator = new LicenseValidator(public_only, path); validator.AssertValidLicense(); Assert.Equal("llb", validator.LicenseAttributes["prof"]); Assert.Equal("on", validator.LicenseAttributes["reporting"]); Assert.Equal(guid, validator.UserId); Assert.Equal(expiration, validator.ExpirationDate); Assert.Equal("Oren Eini", validator.Name); Assert.Equal(LicenseType.Trial, validator.LicenseType); }
/// <summary> /// 生成license /// </summary> static void GenerateLicense() { Console.Write("确定要生成许可吗(Y/N):"); var k = Console.ReadKey(); if (k.Key == ConsoleKey.Y) { var privateKey = File.ReadAllText("privateKey.xml"); var id = Guid.NewGuid(); var generator = new LicenseGenerator(privateKey); Console.WriteLine(); Console.Write("许可名称: "); var name = Console.ReadLine(); //Console.Write("Date: "); //var expirationDate = DateTime.Parse(Console.ReadLine()); //Console.Write("Type: "); //LicenseType licenseType = (LicenseType)Enum.Parse(typeof(LicenseType), Console.ReadLine()); // generate the license var license = generator.Generate(name, id, new DateTime(2020, 12, 31), LicenseType.Standard); Console.WriteLine(); Console.WriteLine(license); File.WriteAllText("license.lic", license); } Console.ReadKey(); }
private void GenerateLicense() { if (!File.Exists("privateKey.xml")) { MessageBox.Show("Please create a license key first"); return; } if (string.IsNullOrWhiteSpace(txtName.Text) || string.IsNullOrWhiteSpace(txtComputerKey.Text)) { MessageBox.Show("Some field is missing"); return; } var privateKey = File.ReadAllText(@"privateKey.xml"); var generator = new LicenseGenerator(privateKey); var dict = new Dictionary <string, string>(); dict["name"] = txtName.Text; dict["key"] = txtComputerKey.Text; // generate the license var license = generator.Generate("EasyLicense", Guid.NewGuid(), DateTime.UtcNow.AddYears(1), dict, LicenseType.Standard); txtLicense.Text = license; File.WriteAllText("license.lic", license); File.AppendAllText("license.log", $"License to {dict["name"]}, key is {dict["key"]}, Date is {DateTime.Now}"); }
public void Gen_and_validate_with_attributes() { var guid = Guid.NewGuid(); var generator = new LicenseGenerator(public_and_private); var expiration = DateTime.Now.AddDays(30); var key = generator.Generate("Oren Eini", guid, expiration, new Dictionary <string, string> { { "prof", "llb" }, { "reporting", "on" } }, LicenseType.Trial); var path = Path.GetTempFileName(); File.WriteAllText(path, key); var validator = new LicenseValidator(public_only, path); validator.AssertValidLicense(); Assert.Equal("llb", validator.LicenseAttributes["prof"]); Assert.Equal("on", validator.LicenseAttributes["reporting"]); Assert.Equal(guid, validator.UserId); Assert.Equal(expiration, validator.ExpirationDate); Assert.Equal("Oren Eini", validator.Name); Assert.Equal(LicenseType.Trial, validator.LicenseType); }
public void Can_validate_expired_subscription_license_when_service_returns_new_one() { var generator = new LicenseGenerator(public_and_private); var license = generator.Generate("ayende", new Guid("FFD0C62C-B953-403e-8457-E90F1085170D"), DateTime.UtcNow.AddDays(-1), new Dictionary <string, string> { { "version", "2.0" } }, LicenseType.Subscription); var path = Path.GetTempFileName(); File.WriteAllText(path, license); var host = new ServiceHost(typeof(DummySubscriptionLicensingService)); const string address = "http://localhost:19292/license"; host.AddServiceEndpoint(typeof(ISubscriptionLicensingService), new BasicHttpBinding(), address); host.Open(); Assert.DoesNotThrow(() => new LicenseValidator(new DebugLogService(), public_only, path) { SubscriptionEndpoint = address }.AssertValidLicense()); host.Close(); }
public void Will_detect_duplicate_license() { var guid = Guid.NewGuid(); var generator = new LicenseGenerator(public_and_private); var expiration = DateTime.Now.AddDays(30); var key = generator.Generate("Oren Eini", guid, expiration, LicenseType.Trial); var path = Path.GetTempFileName(); File.WriteAllText(path, key); var wait = new ManualResetEvent(false); var validator = new LicenseValidator(public_only, path) { LeaseTimeout = TimeSpan.FromSeconds(1) }; InvalidationType? invalidation = null; validator.LicenseInvalidated += type => invalidation = type; validator.MultipleLicensesWereDiscovered += (sender, args) => wait.Set(); validator.AssertValidLicense(); var validator2 = new LicenseValidator(public_only, path); validator2.AssertValidLicense(); //todo: marked this out for now // Assert.True(wait.WaitOne(TimeSpan.FromSeconds(100))); //Assert.Equal(invalidation.Value, InvalidationType.TimeExpired); }
public void Export(Product product, License license, FileInfo path) { var generator = new LicenseGenerator(product.PrivateKey); var expiration = license.ExpirationDate.GetValueOrDefault(DateTime.MaxValue); var key = generator.Generate(license.OwnerName, license.ID, expiration, license.Data.ToDictionary(userData => userData.Key, userData => userData.Value), license.LicenseType); File.WriteAllText(path.FullName, key); }
public string Export(Product product, License license) { var generator = new LicenseGenerator(product.PrivateKey); var expiration = license.ExpirationDate.GetValueOrDefault(DateTime.MaxValue); return(generator.Generate(license.OwnerName, license.ID, expiration, license.Data.ToDictionary(userData => userData.Key, userData => userData.Value), license.LicenseType)); }
private void GenerateLicenseFileInLicensesDirectory() { var generator = new LicenseGenerator(public_and_private); var generate = generator.Generate("ayende", Guid.NewGuid(), DateTime.MaxValue, LicenseType.Standard); var dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Licenses"); if (Directory.Exists(dir) == false) Directory.CreateDirectory(dir); File.WriteAllText(Path.Combine(dir, "ayende.xml"), generate); }
private string GenerateLicenseCode(PayPalInfo payPalInfo, string licenseTypeProfile) { _licenseGenerator.Initialize(); _licenseGenerator.SetActiveProfile(licenseTypeProfile); _licenseGenerator.NumberOfUsers = payPalInfo.IpnQuantity; _licenseGenerator.UserData = payPalInfo.UserData; var licenseCode = _licenseGenerator.Generate(); return(licenseCode); }
private void GenerateLicenseFileInLicensesDirectory() { var generator = new LicenseGenerator(public_and_private); var generate = generator.Generate("ayende", Guid.NewGuid(), DateTime.MaxValue, LicenseType.Standard); var dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Licenses"); if (Directory.Exists(dir) == false) { Directory.CreateDirectory(dir); } File.WriteAllText(Path.Combine(dir, "ayende.xml"), generate); }
public void Can_generate_subscription_license() { var generator = new LicenseGenerator(public_and_private); var license = generator.Generate("ayende", new Guid("FFD0C62C-B953-403e-8457-E90F1085170D"), new DateTime(2010, 10, 10), new Dictionary<string, string> {{"version", "2.0"}}, LicenseType.Subscription); var license_header = @"<license id=""ffd0c62c-b953-403e-8457-e90f1085170d"" expiration=""2010-10-10T00:00:00.0000000"" type=""Subscription"" version=""2.0"">"; var owner_name = "<name>ayende</name>"; Assert.Contains(license_header, license); Assert.Contains(owner_name, license); }
public void Can_validate_subscription_license_with_time_to_spare() { var generator = new LicenseGenerator(public_and_private); var license = generator.Generate("ayende", new Guid("FFD0C62C-B953-403e-8457-E90F1085170D"), DateTime.UtcNow.AddDays(15), new Dictionary<string, string> { { "version", "2.0" } }, LicenseType.Subscription); var path = Path.GetTempFileName(); File.WriteAllText(path, license); Assert.DoesNotThrow(() => new LicenseValidator(public_only, path).AssertValidLicense()); }
public void An_expired_non_OEM_license_is_invalid() { var rsa = new RSACryptoServiceProvider(); var licenseGenerator = new LicenseGenerator(rsa.ToXmlString(true)); var licenseValues = new Dictionary <string, string>(); var license = licenseGenerator.Generate("Foo", Guid.NewGuid(), new DateTime(2000, 1, 1), licenseValues, LicenseType.Subscription); var licenseValidator = new StringLicenseValidator(rsa.ToXmlString(false), license) { DisableFloatingLicenses = true, SubscriptionEndpoint = "http://uberprof.com/Subscriptions.svc" }; Assert.Throws <LicenseExpiredException>(() => licenseValidator.AssertValidLicense()); }
public void An_not_expired_non_OEM_license_is_valid() { var rsa = new RSACryptoServiceProvider(); var licenseGenerator = new LicenseGenerator(rsa.ToXmlString(true)); var licenseValues = new Dictionary <string, string>(); var license = licenseGenerator.Generate("Foo", Guid.NewGuid(), DateTime.Today.AddDays(1), licenseValues, LicenseType.Subscription); var licenseValidator = new StringLicenseValidator(rsa.ToXmlString(false), license) { DisableFloatingLicenses = true, SubscriptionEndpoint = "http://uberprof.com/Subscriptions.svc" }; licenseValidator.AssertValidLicense(); }
public void Cannot_validate_expired_subscription_license_when_url_is_not_available() { var generator = new LicenseGenerator(public_and_private); var license = generator.Generate("ayende", new Guid("FFD0C62C-B953-403e-8457-E90F1085170D"), DateTime.UtcNow.AddDays(-1), new Dictionary<string, string> { { "version", "2.0" } }, LicenseType.Subscription); var path = Path.GetTempFileName(); File.WriteAllText(path, license); Assert.Throws<LicenseExpiredException>(() => new LicenseValidator(public_only, path) { SubscriptionEndpoint = "http://localhost/" + Guid.NewGuid() }.AssertValidLicense()); }
public void Bug_for_year_over_8000_was_marked_as_expired() { var guid = Guid.NewGuid(); var generator = new LicenseGenerator(public_and_private); var expiration = new DateTime(9999, 10, 10, 10, 10, 10); var key = generator.Generate("User name", guid, expiration, LicenseType.Standard); var path = Path.GetTempFileName(); File.WriteAllText(path, key); var validator = new LicenseValidator(public_only, path); validator.AssertValidLicense(); Assert.Equal(guid, validator.UserId); Assert.Equal(expiration, validator.ExpirationDate); Assert.Equal("User name", validator.Name); Assert.Equal(LicenseType.Standard, validator.LicenseType); }
public void Throws_date_exception_when_license_is_expired() { var guid = Guid.NewGuid(); var generator = new LicenseGenerator(public_and_private); var expiration = DateTime.Now.AddDays(-1); var key = generator.Generate("Oren Eini", guid, expiration, new Dictionary<string, string> { {"prof", "llb"}, {"reporting", "on"} }, LicenseType.Trial); var path = Path.GetTempFileName(); File.WriteAllText(path, key); var validator = new LicenseValidator(public_only, path); Assert.Throws<LicenseExpiredException>(() => validator.AssertValidLicense()); }
public void Gen_and_validate() { var guid = Guid.NewGuid(); var generator = new LicenseGenerator(public_and_private); var expiration = DateTime.Now.AddDays(30); var key = generator.Generate("Oren Eini", guid, expiration, LicenseType.Trial); var path = Path.GetTempFileName(); File.WriteAllText(path, key); var validator = new LicenseValidator(public_only, path); validator.AssertValidLicense(); Assert.Equal(guid, validator.UserId); Assert.Equal(expiration, validator.ExpirationDate); Assert.Equal("Oren Eini", validator.Name); Assert.Equal(LicenseType.Trial, validator.LicenseType); }
private void btGenerer_Click(object sender, EventArgs e) { var codeClient = txtCode.Text; if (string.IsNullOrEmpty(codeClient)) { MessageBox.Show("Code client invalide!"); return; } if (string.IsNullOrEmpty(txtSociete.Text)) { MessageBox.Show("Nom du client invalide!"); return; } var dialog = new FolderBrowserDialog(); DialogResult result = dialog.ShowDialog(); if (result != DialogResult.OK) { return; } if (dialog.SelectedPath == string.Empty) { return; } var privateKey = File.ReadAllText("privateKey.xml"); var id = Guid.NewGuid(); var generator = new LicenseGenerator(privateKey); var attributes = new Dictionary <string, string>(); attributes.Add("MultiSocite", chMultiSociete.Checked ? "0" : "1"); attributes.Add("Societe", txtSociete.Text); attributes.Add("Cnss", chCnss.Checked ? "0" : "1"); attributes.Add("Employeur", chDeclarationEmp.Checked ? "0" : "1"); attributes.Add("BcSuspension", chDecBc.Checked ? "0" : "1"); attributes.Add("FcSuspension", chDecFc.Checked ? "0" : "1"); attributes.Add("Virement", chVirementBancaire.Checked ? "0" : "1"); attributes.Add("Liasse", txtLiasse.Checked ? "0" : "1"); var license = generator.Generate(codeClient, id, dtDateExpiration.DateTime, attributes, LicenseType.None); File.WriteAllText(string.Format("{0}\\Licence {1}.tvs", dialog.SelectedPath, txtSociete.Text), license); MessageBox.Show("Licence générer avec succés!"); }
public void Throws_date_exception_when_license_is_expired() { var guid = Guid.NewGuid(); var generator = new LicenseGenerator(public_and_private); var expiration = DateTime.Now.AddDays(-1); var key = generator.Generate("Oren Eini", guid, expiration, new Dictionary <string, string> { { "prof", "llb" }, { "reporting", "on" } }, LicenseType.Trial); var path = Path.GetTempFileName(); File.WriteAllText(path, key); var validator = new LicenseValidator(public_only, path); Assert.Throws <LicenseExpiredException>(() => validator.AssertValidLicense()); }
private void GenerateLicense() { if (!File.Exists("privateKey.xml")) { MessageBox.Show("Please create a license key first"); return; } var privateKey = File.ReadAllText(@"privateKey.xml"); var generator = new LicenseGenerator(privateKey); var dictionary = new Dictionary <string, string>(); // generate the license var license = generator.Generate("EasyLicense", Guid.NewGuid(), DateTime.UtcNow.AddYears(1), dictionary, LicenseType.Standard); txtLicense.Text = license; File.WriteAllText("license.lic", license); }
private void btnReg_Click(object sender, EventArgs e) { try { if (string.IsNullOrEmpty(txtMachineNum.Text)) { MessageBox.Show("机器码为空!"); return; } if (dtp_exp.Value < DateTime.Now) { MessageBox.Show("过期时间小于当前时间!", "警 告", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } var privateKey = txtMachineNum.Text; var _xmlDoc = new XmlDocument(); _xmlDoc.LoadXml(privateKey); var _newKey = _xmlDoc.SelectSingleNode("/Root/PrivateKey").InnerXml; var _id = _xmlDoc.SelectSingleNode("/Root/Params/id").InnerText; var _name = _xmlDoc.SelectSingleNode("/Root/Params/name").InnerText; var _expDate = _xmlDoc.SelectSingleNode("/Root/Params/expirationDate").InnerText; var _machineKey = _xmlDoc.SelectSingleNode("/Root/Params/dictionary").InnerText; var generator = new LicenseGenerator(_newKey); var dictionary = new Dictionary <string, string>(); dictionary.Add("m", _machineKey); // generate the license var license = generator.Generate(_name, Guid.Parse(_id), dtp_exp.Value, dictionary, LicenseType.Standard); txtRegisterNum.Text = license; } catch (Exception ex) { MessageBox.Show("注册失败,异常:" + ex.Message, "提示", MessageBoxButtons.OK); } }
public void Can_validate_expired_subscription_license_when_service_returns_old_one() { var generator = new LicenseGenerator(public_and_private); var license = generator.Generate("ayende", new Guid("FFD0C62C-B953-403e-8457-E90F1085170D"), DateTime.UtcNow.AddDays(-1), new Dictionary<string, string> { { "version", "2.0" } }, LicenseType.Subscription); var path = Path.GetTempFileName(); File.WriteAllText(path, license); var host = new ServiceHost(typeof(NoOpSubscriptionLicensingService)); const string address = "http://localhost:19292/license"; host.AddServiceEndpoint(typeof(ISubscriptionLicensingService), new BasicHttpBinding(), address); host.Open(); Assert.Throws<LicenseExpiredException>(() => new LicenseValidator(public_only, path) { SubscriptionEndpoint = address }.AssertValidLicense()); host.Close(); }
private void btnGenerateLic_Click(object sender, EventArgs e) { var privateKey = File.ReadAllText(_privateKeyFile); var id = Guid.NewGuid(); var generator = new LicenseGenerator(privateKey); var name = tbName.Text; var expirationDate = dtExpireDate.Value; var licenseType = (LicenseType)Enum.Parse(typeof(LicenseType), cbLicenseType.SelectedItem.ToString()); // generate the license var license = generator.Generate(name, id, expirationDate, licenseType); if (saveFileDialog1.ShowDialog() == DialogResult.OK) { File.WriteAllText(saveFileDialog1.FileName, license); } }
private void GenerateLicense() { var privateKeyPath = GetWorkDirFile("privateKey.xml"); var publicKeyPath = GetWorkDirFile("publicKey.xml"); if (!File.Exists(privateKeyPath)) { MessageBox.Show("Please create a license key first"); return; } if (string.IsNullOrWhiteSpace(txtName.Text) || string.IsNullOrWhiteSpace(txtComputerKey.Text)) { MessageBox.Show("Some field is missing"); return; } var privateKey = File.ReadAllText(privateKeyPath); var generator = new LicenseGenerator(privateKey); var dict = new Dictionary <string, string>(); dict["name"] = txtName.Text; dict["key"] = txtComputerKey.Text; LicenseType licenseType = LicenseType.None; var selectedType = (type.SelectedItem as System.Windows.Controls.ComboBoxItem)?.Tag; Enum.TryParse <LicenseType>(selectedType.ToString(), out licenseType); var expireDate = DateTime.Now.AddYears(10); if (licenseType == LicenseType.None) { MessageBox.Show("授权类型不能为空"); return; } switch (licenseType) { case LicenseType.None: break; case LicenseType.Trial: expireDate = expireDatePicker.SelectedDate.Value; break; case LicenseType.Standard: break; case LicenseType.Personal: break; case LicenseType.Floating: break; case LicenseType.Subscription: break; default: break; } // generate the license var license = generator.Generate("W7.License", Guid.NewGuid(), expireDate, dict, licenseType); txtLicense.Text = license; var dir = $"{GetWorkDirFile("")}\\{dict["name"]}-{licenseType.ToString()}-{txtComputerKey.Text}-{expireDate.ToString("yyyyMMdd")}\\"; if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } File.WriteAllText(dir + "license.lic", license); File.Copy(publicKeyPath, dir + "publicKey.xml", true); System.Diagnostics.Process.Start(dir); File.AppendAllText("license.log", $"License to {dict["name"]}, key is {dict["key"]}, Date is {DateTime.Now}"); }