public InitializationResult InitializeService(string url, string token, MasterServiceData data, EncryptionInfo encryptionInfo)
        {
            StatusServiceClient client = StatusServiceClientCreator(url);

            string encryptedToken = _symmetricEncryptionProvider.Encrypt(token, encryptionInfo);
            string serializedData = _objectSerializationProvider.Serialize(data);
            string encryptedData  = _symmetricEncryptionProvider.Encrypt(serializedData, encryptionInfo);

            string result          = client.InitializeService(encryptedToken, encryptedData);
            string decryptedResult = _symmetricEncryptionProvider.Decrypt(result, encryptionInfo);

            InitializationResult initializationResult = _objectSerializationProvider.Deserialize <InitializationResult>(decryptedResult);

            return(initializationResult);
        }
示例#2
0
        public static void SerializeMasterServiceData()
        {
            ICommonRepository            commonRepository            = ObjectLocator.GetInstance <ICommonRepository>();
            IObjectSerializationProvider objectSerializationProvider = ObjectLocator.GetInstance <IObjectSerializationProvider>();

            MasterServiceData service           = commonRepository.GetMasterServiceData();
            string            serializedService = objectSerializationProvider.Serialize(service);

            if (File.Exists(Directory.GetCurrentDirectory() + "\\MasterService.dat"))
            {
                File.Delete(Directory.GetCurrentDirectory() + "\\MasterService.dat");
            }

            using (TextWriter writer = new StreamWriter((Directory.GetCurrentDirectory() + "\\MasterService.dat")))
            {
                writer.WriteLine(serializedService);
            }
        }
示例#3
0
        public KeyPair GetManagementKeyPair()
        {
            MasterServiceData masterData = _commonRepository.GetMasterServiceData();

            StringBuilder inboundKey = new StringBuilder();

            inboundKey.Append(masterData.ManagementInboundKey);
            inboundKey.Append(GetInboundHalfFromFile());

            StringBuilder outboundKey = new StringBuilder();

            outboundKey.Append(masterData.ManagementOutboundKey);
            outboundKey.Append(GetOutboundHalfFromFile());

            KeyPair keyPair = new KeyPair();

            keyPair.PublicKey  = inboundKey.ToString();
            keyPair.PrivateKey = outboundKey.ToString();

            return(keyPair);
        }
示例#4
0
        public bool InitializeService(Service service)
        {
            string token = _packingService.PackToken(service.GetManagementToken());
            StatusRequestResult statusResult = _serviceStatusProvider.GetServiceStatus(service.ManagementUrl, token, GetManagementStandardEncryptionInfo(service));

            if (statusResult.IsInitialized == true)
            {
                return(false);
            }

            if (statusResult.IsActive == true)
            {
                return(false);
            }

            if (statusResult.IsRequestValid == false)
            {
                return(false);
            }

            MasterServiceData masterData = new MasterServiceData();

            masterData.ServiceId             = service.UniquePad;
            masterData.Token                 = service.Token;
            masterData.Initialized           = true;
            masterData.ClientInboundKey      = service.GetClientInboundKeyPart1();
            masterData.ClientOutboundKey     = service.GetClientOutboundKeyPart1();
            masterData.ManagementInboundKey  = service.GetManagementInboundKeyPart1();
            masterData.ManagementOutboundKey = service.GetManagementOutboundKeyPart1();

            InitializationResult result = _serviceStatusProvider.InitializeService(service.ManagementUrl, token, masterData,
                                                                                   GetManagementStandardEncryptionInfo(service));

            if (!result.WasInitializionSucessful)
            {
                return(false);
            }

            return(true);
        }
示例#5
0
        public string InitializeService(string token, string data)
        {
            InitializationResult result = new InitializationResult();

            try
            {
                if (!_controlService.ValidateManagementToken(token))
                {
                    result.WasInitializionSucessful = false;
                    return(_controlService.EncryptSymmetricResponse(_serializationProvider.Serialize(result)));
                }

                string            decryptedData = _controlService.DecryptSymmetricResponse(data);
                MasterServiceData masterData    = _serializationProvider.Deserialize <MasterServiceData>(decryptedData);

                MasterServiceData masterData1 = _masterService.SetMasterServiceData(masterData);

                if (masterData1 == null)
                {
                    result.WasInitializionSucessful = false;
                    return(_controlService.EncryptSymmetricResponse(_serializationProvider.Serialize(result)));
                }

                result.WasInitializionSucessful = true;

                string path = _commonService.GetPath();
                if (File.Exists(path + "\\AllowDatabaseTest.emp"))
                {
                    File.Delete(path + "\\AllowDatabaseTest.emp");
                }
            }
            catch (Exception ex)
            {
                LoggingHelper.LogException(ex);
            }

            return(_controlService.EncryptSymmetricResponse(_serializationProvider.Serialize(result)));
        }
示例#6
0
        public MasterServiceData SetMasterServiceData(MasterServiceData data)
        {
            if (GetMasterServiceData() != null)
            {
                return(null);
            }

            using (ScutexServiceEntities db1 = new ScutexServiceEntities())
            {
                Master m = new Master();
                m.ServiceId             = data.ServiceId;
                m.ClientInboundKey      = data.ClientInboundKey;
                m.ClientOutboundKey     = data.ClientOutboundKey;
                m.ManagementInboundKey  = data.ManagementInboundKey;
                m.ManagementOutboundKey = data.ManagementOutboundKey;
                m.Token = data.Token;

                db1.AddToMasters(m);
                db1.SaveChanges();
            }

            return(GetMasterServiceData());
        }
示例#7
0
        public string GetServiceStatus(string token)
        {
            StatusRequestResult result = new StatusRequestResult();

            if (!_controlService.ValidateManagementToken(token))
            {
                result.IsActive       = false;
                result.IsInitialized  = false;
                result.IsRequestValid = false;

                return(_controlService.EncryptSymmetricResponse(_serializationProvider.Serialize(result)));
            }

            MasterServiceData masterData = _masterService.GetMasterServiceData();

            if (masterData == null)
            {
                result.IsActive       = false;
                result.IsInitialized  = false;
                result.IsRequestValid = true;
            }

            return(_controlService.EncryptSymmetricResponse(_serializationProvider.Serialize(result)));
        }
            public void Before_each_test()
            {
                clientLicenseRepoistory      = new ClientLicenseRepository(objectSerializationProvider, symmetricEncryptionProvider);
                clientLicenseService         = new ClientLicenseService(clientLicenseRepoistory);
                serviceProductsRepository    = new ServiceProductsRepository(new ScutexServiceEntities());
                symmetricEncryptionProvider  = new SymmetricEncryptionProvider();
                asymmetricEncryptionProvider = new AsymmetricEncryptionProvider();
                hashingProvider             = new HashingProvider();
                objectSerializationProvider = new ObjectSerializationProvider();
                numberDataGenerator         = new NumberDataGenerator();
                packingService             = new PackingService(numberDataGenerator);
                commonRepository           = new CommonRepository(new ScutexServiceEntities());
                clientRepository           = new ClientRepository(new ScutexServiceEntities());
                keyGenerator               = new KeyGenerator(symmetricEncryptionProvider, asymmetricEncryptionProvider, hashingProvider);
                masterService              = new MasterService(commonRepository);
                hardwareFingerprintService = new HardwareFingerprintService(new WmiDataProvider(), new HashingProvider());
                keyGeneratorLarge          = new Scutex.Generators.StaticKeyGeneratorLarge.KeyGenerator(symmetricEncryptionProvider, asymmetricEncryptionProvider, hashingProvider, hardwareFingerprintService);

                var mockActivationLogRepository = new Mock <IActivationLogRepoistory>();

                mockActivationLogRepository.Setup(log => log.SaveActivationLog(It.IsAny <Scutex.Model.ActivationLog>()));

                activationLogService = new ActivationLogService(mockActivationLogRepository.Object, hashingProvider);
                commonService        = new CommonService();

                string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);

                path = path.Replace("file:\\", "");

                var mockCommonService = new Mock <ICommonService>();

                mockCommonService.Setup(common => common.GetPath()).Returns(path + "\\Data\\Client\\");

                string masterServiceDataText;

                using (TextReader reader = new StreamReader(path + "\\Data\\MasterService.dat"))
                {
                    masterServiceDataText = reader.ReadToEnd().Trim();
                }

                masterServiceData = objectSerializationProvider.Deserialize <MasterServiceData>(masterServiceDataText);

                var mockCommonRepository = new Mock <ICommonRepository>();

                mockCommonRepository.Setup(repo => repo.GetMasterServiceData()).Returns(masterServiceData);

                masterService = new MasterService(mockCommonRepository.Object);

                keyPairService             = new KeyPairService(mockCommonService.Object, mockCommonRepository.Object);
                controlService             = new ControlService(symmetricEncryptionProvider, keyPairService, packingService, masterService, objectSerializationProvider, asymmetricEncryptionProvider);
                servicesRepository         = new ServicesRepository(new ScutexEntities());
                serviceStatusProvider      = new ServiceStatusProvider(symmetricEncryptionProvider, objectSerializationProvider, asymmetricEncryptionProvider);
                licenseActiviationProvider = new LicenseActiviationProvider(asymmetricEncryptionProvider, symmetricEncryptionProvider, objectSerializationProvider);
                servicesService            = new ServicesService(servicesRepository, serviceStatusProvider, packingService, licenseActiviationProvider, null, null, null, null, null);
                licenseKeyService          = new LicenseKeyService(keyGenerator, keyGeneratorLarge, packingService, clientLicenseService);
                keyService        = new KeyManagementService(clientRepository, licenseKeyService, activationLogService, hashingProvider, serviceProductsRepository);
                activationService = new ActivationService(controlService, keyService, keyPairService, objectSerializationProvider, asymmetricEncryptionProvider, activationLogService, masterService, commonService, null);

                string serviceData;

                using (TextReader reader = new StreamReader(path + "\\Data\\Service.dat"))
                {
                    serviceData = reader.ReadToEnd().Trim();
                }

                service = objectSerializationProvider.Deserialize <Service>(serviceData);
            }
            public void Before_each_test()
            {
                clientLicenseRepoistory = new ClientLicenseRepository(objectSerializationProvider, symmetricEncryptionProvider);
                clientLicenseService = new ClientLicenseService(clientLicenseRepoistory);
                serviceProductsRepository = new ServiceProductsRepository(new ScutexServiceEntities());
                symmetricEncryptionProvider = new SymmetricEncryptionProvider();
                asymmetricEncryptionProvider = new AsymmetricEncryptionProvider();
                hashingProvider = new HashingProvider();
                objectSerializationProvider = new ObjectSerializationProvider();
                numberDataGenerator = new NumberDataGenerator();
                packingService = new PackingService(numberDataGenerator);
                commonRepository = new CommonRepository(new ScutexServiceEntities());
                clientRepository = new ClientRepository(new ScutexServiceEntities());
                keyGenerator = new KeyGenerator(symmetricEncryptionProvider, asymmetricEncryptionProvider, hashingProvider);
                masterService = new MasterService(commonRepository);
                activationLogRepository = new ActivationLogRepoistory(new ScutexServiceEntities());

                activationLogService = new ActivationLogService(activationLogRepository, hashingProvider);
                keyService = new KeyManagementService(clientRepository, licenseKeyService, activationLogService, hashingProvider, serviceProductsRepository);
                commonService = new CommonService();

                string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
                path = path.Replace("file:\\", "");

                var mockCommonService = new Mock<ICommonService>();
                mockCommonService.Setup(common => common.GetPath()).Returns(path + "\\Data\\Client\\");

                string masterServiceDataText;

                using (TextReader reader = new StreamReader(path + "\\Data\\MasterService.dat"))
                {
                    masterServiceDataText = reader.ReadToEnd().Trim();
                }

                masterServiceData = objectSerializationProvider.Deserialize<MasterServiceData>(masterServiceDataText);

                var mockCommonRepository = new Mock<ICommonRepository>();
                mockCommonRepository.Setup(repo => repo.GetMasterServiceData()).Returns(masterServiceData);

                keyPairService = new KeyPairService(mockCommonService.Object, mockCommonRepository.Object);
                controlService = new ControlService(symmetricEncryptionProvider, keyPairService, packingService, masterService, objectSerializationProvider, asymmetricEncryptionProvider);
                servicesRepository = new ServicesRepository(new ScutexEntities());
                serviceStatusProvider = new ServiceStatusProvider(symmetricEncryptionProvider, objectSerializationProvider, asymmetricEncryptionProvider);
                licenseActiviationProvider = new LicenseActiviationProvider(asymmetricEncryptionProvider, symmetricEncryptionProvider, objectSerializationProvider);
                servicesService = new ServicesService(servicesRepository, serviceStatusProvider, packingService, licenseActiviationProvider, null, null, null, null, null);
                licenseKeyService = new LicenseKeyService(keyGenerator, packingService, clientLicenseService);
                activationService = new ActivationService(controlService, keyService, keyPairService, objectSerializationProvider, asymmetricEncryptionProvider, null, null);

                string serviceData;

                using (TextReader reader = new StreamReader(path + "\\Data\\Service.dat"))
                {
                    serviceData = reader.ReadToEnd().Trim();
                }

                service = objectSerializationProvider.Deserialize<Service>(serviceData);
            }
示例#10
0
 public MasterServiceData SetMasterServiceData(MasterServiceData data)
 {
     return(_commonRepository.SetMasterServiceData(data));
 }