public void Unprotect(CountersDocument configDocument) { if (configDocument.SecuredSettings == null) { configDocument.SecuredSettings = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase); return; } foreach (var prop in configDocument.SecuredSettings.ToList()) { if (prop.Value == null) { continue; } var bytes = Convert.FromBase64String(prop.Value); var entrophy = Encoding.UTF8.GetBytes(prop.Key); try { var unprotectedValue = ProtectedData.Unprotect(bytes, entrophy, DataProtectionScope.CurrentUser); configDocument.SecuredSettings[prop.Key] = Encoding.UTF8.GetString(unprotectedValue); } catch (Exception e) { Logger.WarnException("Could not unprotect secured db data " + prop.Key + " setting the value to '<data could not be decrypted>'", e); configDocument.SecuredSettings[prop.Key] = Constants.DataCouldNotBeDecrypted; } } }
public void Protect(CountersDocument configDocument) { if (configDocument.SecuredSettings == null) { configDocument.SecuredSettings = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase); return; } foreach (var prop in configDocument.SecuredSettings.ToList()) { if (prop.Value == null) { continue; } var bytes = Encoding.UTF8.GetBytes(prop.Value); var entrophy = Encoding.UTF8.GetBytes(prop.Key); var protectedValue = ProtectedData.Protect(bytes, entrophy, DataProtectionScope.CurrentUser); configDocument.SecuredSettings[prop.Key] = Convert.ToBase64String(protectedValue); } }
protected InMemoryRavenConfiguration CreateConfiguration( string tenantId, CountersDocument document, string folderPropName, InMemoryRavenConfiguration parentConfiguration) { var config = new InMemoryRavenConfiguration { Settings = new NameValueCollection(parentConfiguration.Settings), }; SetupTenantConfiguration(config); config.CustomizeValuesForDatabaseTenant(tenantId); config.Settings["Raven/StorageEngine"] = parentConfiguration.DefaultStorageTypeName; config.Settings["Raven/Counters/Storage"] = parentConfiguration.FileSystem.DefaultStorageTypeName; foreach (var setting in document.Settings) { config.Settings[setting.Key] = setting.Value; } Unprotect(document); foreach (var securedSetting in document.SecuredSettings) { config.Settings[securedSetting.Key] = securedSetting.Value; } config.Settings[folderPropName] = config.Settings[folderPropName].ToFullPath(parentConfiguration.DataDirectory); config.Settings["Raven/Esent/LogsPath"] = config.Settings["Raven/Esent/LogsPath"].ToFullPath(parentConfiguration.DataDirectory); config.Settings[Constants.RavenTxJournalPath] = config.Settings[Constants.RavenTxJournalPath].ToFullPath(parentConfiguration.DataDirectory); config.Settings["Raven/VirtualDir"] = config.Settings["Raven/VirtualDir"] + "/" + tenantId; config.CountersDatabaseName = tenantId; config.Initialize(); config.CopyParentSettings(parentConfiguration); return(config); }