Пример #1
0
        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);
        }
Пример #3
0
        /// <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();
        }
Пример #4
0
        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);
        }
Пример #6
0
        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);
		}
Пример #8
0
        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);
        }
Пример #9
0
        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);
        }
Пример #10
0
        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);
 }
Пример #12
0
        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);
        }
Пример #15
0
        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());	
        }
Пример #17
0
        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());	
        }
Пример #18
0
        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());
        }
Пример #19
0
        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());
        }
Пример #21
0
        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());
        }
Пример #22
0
        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());
        }
        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);
        }
Пример #28
0
        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);
        }
Пример #29
0
        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);
        }
Пример #30
0
        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();
        }
Пример #32
0
        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);
            }
        }
Пример #33
0
        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}");
        }