public DtoProvisionResponse RenewSymmKey(DtoRenewKeyRequest renewRequest) { Request.Method = Method.POST; Request.Resource = string.Format("ProvisionedComm/{0}/RenewSymmKey/", Resource); return(new ApiRequest().ExecuteSymKeyEncryption <DtoProvisionResponse>(Request, JsonConvert.SerializeObject(renewRequest))); }
private EnumProvisionStatus.Status RenewSymmKey() { var deviceThumbprint = _serviceSetting.GetSetting("device_thumbprint"); var deviceCert = ServiceCertificate.GetCertificateFromStore(deviceThumbprint.Value, StoreName.My); if (deviceCert == null) { return(EnumProvisionStatus.Status.Error); } var key = GenerateSymmKey(); var renewRequest = new DtoRenewKeyRequest(); renewRequest.Name = DtoGobalSettings.ClientIdentity.Name; renewRequest.Guid = DtoGobalSettings.ClientIdentity.Guid; renewRequest.DeviceCert = Convert.ToBase64String(deviceCert.RawData); renewRequest.SymmKey = Convert.ToBase64String(key); var renewResult = new APICall().ProvisionApi.RenewSymmKey(renewRequest); if (renewResult == null) { return(EnumProvisionStatus.Status.Error); } if (renewResult.ProvisionStatus != EnumProvisionStatus.Status.Provisioned) { return(renewResult.ProvisionStatus); } UpdateComServers(renewResult.ComServers); var entropy = _serviceSetting.GetSetting("entropy"); var entropyBytes = ServiceDP.CreateRandomEntropy(); entropy.Value = Convert.ToBase64String(entropyBytes); _serviceSetting.UpdateSettingValue(entropy); var encryptedKey = ServiceDP.EncryptData(key, true, entropyBytes); var keySetting = _serviceSetting.GetSetting("encryption_key"); keySetting.Value = Convert.ToBase64String(encryptedKey); _serviceSetting.UpdateSettingValue(keySetting); return(EnumProvisionStatus.Status.Provisioned); }
public DtoProvisionResponse RenewSymmKey(DtoRenewKeyRequest request) { var response = new DtoProvisionResponse(); var computerService = new ServiceComputer(); var computer = computerService.GetByGuid(request.Guid); if (computer == null) { return new DtoProvisionResponse() { ProvisionStatus = EnumProvisionStatus.Status.Error } } ; if (computer.ProvisionStatus == EnumProvisionStatus.Status.Reset) { return new DtoProvisionResponse() { ProvisionStatus = EnumProvisionStatus.Status.Reset } } ; computer.ProvisionStatus = EnumProvisionStatus.Status.Provisioned; computer.SymmKeyEncrypted = new EncryptionServices().EncryptText(request.SymmKey); //computer may have been renamed, update the name var originalName = computer.Name; request.Name = request.Name.ToUpper(); if (!request.Name.Equals(computer.Name)) { computer.Name = request.Name; Logger.Debug("SymmKey Update Requires Computer Name Update"); Logger.Debug("Old Name: " + originalName); Logger.Debug("New Name: " + request.Name); var doesExist = computerService.GetByName(request.Name); //a computer already exists with this name, what next if (doesExist != null) { if (doesExist.ProvisionStatus == EnumProvisionStatus.Status.Provisioned) { Logger.Debug("An Active Computer With This Name Already Exists. Cannot Renew SymmKey"); return(new DtoProvisionResponse() { ProvisionStatus = EnumProvisionStatus.Status.Error }); } else if (doesExist.ProvisionStatus == EnumProvisionStatus.Status.PreProvisioned) { Logger.Debug("Updating Name, Removing PreProvisioned Computer"); //new computer has preprovisioned with this name, allow provison to occur //delete the doesExist entity, allowing the archived computer to be restored new ServiceComputer().DeleteComputer(doesExist.Id); //requires a new instance or delete will fail } else if (doesExist.ProvisionStatus == EnumProvisionStatus.Status.ProvisionApproved || doesExist.ProvisionStatus == EnumProvisionStatus.Status.Reset) { Logger.Debug("Updating Name, Archiving Existing Computer"); //new computer has preprovisioned with this name, allow provison to occur //delete the doesExist entity, allowing the archived computer to be restored new ServiceComputer().ArchiveComputerKeepGroups(doesExist.Id); //requires a new instance or delete will fail } else { return(new DtoProvisionResponse() { ProvisionStatus = EnumProvisionStatus.Status.Error }); } } } var result = computerService.UpdateComputer(computer); if (result == null) { Logger.Debug("Could Not Renew SymmKey. Computer Name May Have Been Updated With An Existing Computer"); return(new DtoProvisionResponse() { ProvisionStatus = EnumProvisionStatus.Status.Error }); } if (!result.Success) { Logger.Debug("Could Not Renew SymmKey. Computer Name May Have Been Updated With An Existing Computer"); return(new DtoProvisionResponse() { ProvisionStatus = EnumProvisionStatus.Status.Error }); } var clientComServers = new GetClientComServers().Run(request.Guid); if (clientComServers != null) { response.ComServers = clientComServers; } response.ProvisionStatus = EnumProvisionStatus.Status.Provisioned; return(response); } } }