internal static bool ConfirmLicenseDate() { if (CryptUtils.VerifySign(GetWinInfoHash(LicenseExpireDate + InstanceGuid), LicenseKey, sPublicKeyA + ImportPlayers.sPublicKeyB + sPublicKeyC + sPublicKeyE)) { if (LicenseExpireDate.CompareTo(WinInfo.GetCurrentDate().ToString(DATEFORMAT)) > 0) { return(true); } } return(false); }
public static string ToXmlString() { return(String.Format(@"<ActivationKey UserName='******' Organization='{1}' EMail='{2}' AppGuid='{3}' Edition='{4}' WinInfo='{5}' ExpireDate='{6}' InstanceGuid='{7}'/>", UserName, Organization, EMail, SoftwareGuid.ToString(), Corel.EditionManager.EditionString, CryptUtils.GetHash(WinInfo.GetInfo()), LicenseExpireDate, InstanceGuid)); }
/*static void ReadInfoFromRegistry() * { * Utils.IniFile ini = Settings.IniFile; * Organization = ini.GetString("Reginfo", "Organization", ""); * UserName = ini.GetString("Reginfo", "UserName", ""); * EMail = ini.GetString("Reginfo", "EMail", ""); * LicenseExpireDate = ini.GetString("Reginfo", "ExpireDate", DateTime.MinValue.ToString(DATEFORMAT)); * LicenseExpireDateKey = ini.GetString("Reginfo", "ExpireDateKey", ""); * LicenseKey = ini.GetString("Reginfo", "LicenseKey", ""); * }*/ /* * public static void WriteUserInfoToRegistry() * { * * * Utils.IniFile ini = Settings.IniFile; * ini.Write("Reginfo", "Organization", Organization); * ini.Write("Reginfo", "UserName", UserName); * ini.Write("Reginfo", "EMail", EMail); * }*/ /* * static void WriteLicenseExpireDateToRegistry() * { * Utils.IniFile ini = Settings.IniFile; * ini.Write("Reginfo", "ExpireDate", LicenseExpireDate); * ini.Write("Reginfo", "ExpireDateKey", LicenseExpireDateKey); * }*/ public static bool CheckRegistration() { TA.Corel.EditionManager.IsTrial = true; // будем считать, что это trial-версия if (LicenseExpireDate == "") //DateTime.MinValue.ToString(DATEFORMAT)) { // Дата окончания срока лицензии не установлена, значит это первый запуск программы if (!TA.DB.Manager.DatabaseManager.CurrentDb.IsDatabaseEmpty) { // Если БД не пустая, заначит это не первый запуск программы // Просим пользователя зарегистрироваться // Если пользователь откажется регистрироваться, программа завершится ShowRegistrationWindow(true); } else { TA.Corel.EditionManager.IsTrial = true; // будем считать, что это trial-версия // Устанавливаем дату окончания trial-периода // сохраняем информацию в файл или БД LicenseExpireDate = WinInfo.GetPageFileDate().AddMonths(1).ToString(DATEFORMAT); InstanceGuid = Guid.NewGuid().ToString(); // Формируем строку, подписывающую дату окончания срока действия // во избежаниие ручного изменения LicenseExpireDateKey = GetWinInfoHash(LicenseExpireDate + InstanceGuid); //WriteLicenseExpireDateToRegistry(); WindowSkin.MessageBox.Show(Localizator.Dictionary.GetString("TRIAL_DATE", " ") + LicenseExpireDateFormated); } } else { // Дата окончания срока действия лицензии уже установлена, значит это не первый запуск if (LicenseKey != "") { // Уже есть лицензия if (CryptUtils.VerifySign(GetWinInfoHash(LicenseExpireDate + InstanceGuid), LicenseKey, sPublicKeyA + ImportPlayers.sPublicKeyB + sPublicKeyC + sPublicKeyE)) { // Это правильная лицензия if (LicenseExpireDate.CompareTo(WinInfo.GetCurrentDate().AddMonths(1).ToString(DATEFORMAT)) > 0) { TA.Corel.EditionManager.IsTrial = false; return(true); // До окончания срока действия лицензии осталось больше 30 дней } if (LicenseExpireDate.CompareTo(WinInfo.GetCurrentDate().ToString(DATEFORMAT)) < 0) { TA.Corel.EditionManager.IsTrial = true; ShowRegistrationWindow(true); // Срок действия лицензии закончился, предлагаем продлить. Если нет, то завершаем приложение } else { TA.Corel.EditionManager.IsTrial = false; ShowRegistrationWindow(false); // Срок действия лицензии скоро закончится, предлагаем продлить. Если нет, то продолжаем выполнение программы } } else { // Целостность лицензии нарушена TA.Corel.EditionManager.IsTrial = true; ShowRegistrationWindow(true); // предлагаем Продлить. Если нет, то завершаем приложение //TA.Corel.EditionManager.IsTrial = true; // будем считать, что это trial-версия //WindowSkin.MessageBox.Show(Localizator.Dictionary.GetString("ACTIVATION_KEY_CORRUPTED")); //throw new Exception(Localizator.Dictionary.GetString("ACTIVATION_KEY_CORRUPTED")); } } else { // Лицензии еще нет, значит это trial-период TA.Corel.EditionManager.IsTrial = true; if (GetWinInfoHash(LicenseExpireDate + InstanceGuid) == LicenseExpireDateKey) { // Успешно пройдена проверка подписи под датой окончания срока действия лицензии if (LicenseExpireDate.CompareTo(WinInfo.GetCurrentDate().ToString(DATEFORMAT)) < 0) { // Срок действия trial_лицензии закончился // просим зарегистрироваться, иначе завершаем приложение ShowRegistrationWindow(true); } else { // Срок действия trial-лицензии еще не вышел if (LicenseExpireDate.CompareTo(WinInfo.GetCurrentDate().AddDays(20).ToString(DATEFORMAT)) > 0) { ShowRegistrationWindow(false); } } } else { // Подпись под датой окончания лицензии нарушена // просим зарегистрироваться, иначе завершаем приложение ShowRegistrationWindow(true); } } } return(false); }
/// <summary> /// Возвращает ХЭШ(дата истечения лицензии, SoftwareGuid, Edition, ХЭШ(WinIfno)) /// </summary> /// <param name="licenseExpireDateString">дата истечения лицензии</param> /// <returns></returns> private static string GetWinInfoHash(string licenseExpireDateString) { return(CryptUtils.GetHash(licenseExpireDateString + SoftwareGuid.ToString() + Corel.EditionManager.EditionString + CryptUtils.GetHash(WinInfo.GetInfo()))); }