Пример #1
0
        public void Save(ConnectionTreeModel connectionTreeModel, string propertyNameTrigger = "")
        {
            try
            {
                var cryptographyProvider     = new CryptoProviderFactoryFromSettings().Build();
                var connectionNodeSerializer = new XmlConnectionNodeSerializer27(
                    cryptographyProvider,
                    connectionTreeModel
                    .RootNodes.OfType <RootNodeInfo>()
                    .First().PasswordString
                    .ConvertToSecureString(),
                    _saveFilter);
                var xmlConnectionsSerializer =
                    new XmlConnectionsSerializer(cryptographyProvider, connectionNodeSerializer)
                {
                    UseFullEncryption = mRemoteNG.Settings.Default.EncryptCompleteConnectionsFile
                };
                var xml = xmlConnectionsSerializer.Serialize(connectionTreeModel);

                var fileDataProvider = new FileDataProviderWithRollingBackup(_connectionFileName);
                fileDataProvider.Save(xml);
            }
            catch (Exception ex)
            {
                Runtime.MessageCollector?.AddExceptionStackTrace("SaveToXml failed", ex);
            }
        }
Пример #2
0
        public void Setup()
        {
            _connectionTreeModel  = SetupConnectionTreeModel();
            _cryptographyProvider = new AeadCryptographyProvider();
            var connectionNodeSerializer = new XmlConnectionNodeSerializer27(
                _cryptographyProvider,
                _connectionTreeModel.RootNodes.OfType <RootNodeInfo>().First().PasswordString.ConvertToSecureString(),
                new SaveFilter());

            _serializer = new XmlConnectionsSerializer(_cryptographyProvider, connectionNodeSerializer);
        }
        public void Setup()
        {
            _connectionTreeModel  = SetupConnectionTreeModel();
            _cryptographyProvider = new CryptoProviderFactory(BlockCipherEngines.AES, BlockCipherModes.GCM).Build();
            var connectionNodeSerializer = new XmlConnectionNodeSerializer27(
                _cryptographyProvider,
                _connectionTreeModel.RootNodes.OfType <RootNodeInfo>().First().PasswordString.ConvertToSecureString(),
                new SaveFilter());

            _documentCompiler = new XmlConnectionsDocumentCompiler(_cryptographyProvider, connectionNodeSerializer);
        }
        public void Setup()
        {
            _originalModel = SetupConnectionTreeModel();
            var cryptoProvider = _cryptoFactory.Build();
            var nodeSerializer = new XmlConnectionNodeSerializer27(
                cryptoProvider,
                _originalModel.RootNodes.OfType <RootNodeInfo>().First().PasswordString.ConvertToSecureString(),
                new SaveFilter());

            _serializer   = new XmlConnectionsSerializer(cryptoProvider, nodeSerializer);
            _deserializer = new XmlConnectionsDeserializer();
        }
Пример #5
0
        private XDocument CreateTestData(ConnectionInfo connectionInfo)
        {
            var rootNode = new RootNodeInfo(RootNodeType.Connection)
            {
                PasswordString = _key.ConvertToUnsecureString()
            };

            rootNode.AddChild(connectionInfo);
            var nodeSerializer = new XmlConnectionNodeSerializer27(_cryptographyProvider, _key, new SaveFilter());
            var serializer     = new XmlConnectionsSerializer(_cryptographyProvider, nodeSerializer);
            var serializedData = serializer.Serialize(rootNode);

            return(XDocument.Parse(serializedData));
        }
Пример #6
0
        private static void SaveExportFile(string fileName,
                                           SaveFormat saveFormat,
                                           SaveFilter saveFilter,
                                           ConnectionInfo exportTarget)
        {
            try
            {
                ISerializer <ConnectionInfo, string> serializer;
                switch (saveFormat)
                {
                case SaveFormat.mRXML:
                    var cryptographyProvider     = new CryptoProviderFactoryFromSettings().Build();
                    var rootNode                 = exportTarget.GetRootParent() as RootNodeInfo;
                    var connectionNodeSerializer = new XmlConnectionNodeSerializer27(
                        cryptographyProvider,
                        rootNode?.PasswordString
                        .ConvertToSecureString() ??
                        new RootNodeInfo(RootNodeType
                                         .Connection)
                        .PasswordString
                        .ConvertToSecureString(),
                        saveFilter);
                    serializer = new XmlConnectionsSerializer(cryptographyProvider, connectionNodeSerializer);
                    break;

                case SaveFormat.mRCSV:
                    serializer =
                        new CsvConnectionsSerializerMremotengFormat(saveFilter, Runtime.CredentialProviderCatalog);
                    break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(saveFormat), saveFormat, null);
                }

                var serializedData   = serializer.Serialize(exportTarget);
                var fileDataProvider = new FileDataProvider(fileName);
                fileDataProvider.Save(serializedData);
            }
            catch (Exception ex)
            {
                Runtime.MessageCollector.AddExceptionStackTrace($"Export.SaveExportFile(\"{fileName}\") failed.", ex);
            }
            finally
            {
                Runtime.ConnectionsService.RemoteConnectionsSyncronizer?.Enable();
            }
        }
Пример #7
0
        public void SerializerRespectsSaveFilterSettings(string attributeName, string expectedValue)
        {
            var connectionNodeSerializer = new XmlConnectionNodeSerializer27(
                _cryptographyProvider,
                _connectionTreeModel.RootNodes.OfType <RootNodeInfo>().First().PasswordString.ConvertToSecureString(),
                new SaveFilter(true));
            var serializer     = new XmlConnectionsSerializer(_cryptographyProvider, connectionNodeSerializer);
            var connectionInfo = new ConnectionInfo
            {
                Name        = "myConnection",
                Inheritance = { AutomaticResize = true }
            };
            var serializedConnections = serializer.Serialize(connectionInfo);
            var xdoc           = XDocument.Parse(serializedConnections);
            var attributeValue = xdoc.Root?.Element("Node")?.Attribute(attributeName)?.Value;

            Assert.That(attributeValue, Is.EqualTo(expectedValue));
        }
        public void SerializeAndDeserializeWithCustomKdfIterationsValue()
        {
            var cryptoProvider = _cryptoFactory.Build();

            cryptoProvider.KeyDerivationIterations = 5000;
            var nodeSerializer = new XmlConnectionNodeSerializer27(
                cryptoProvider,
                _originalModel.RootNodes.OfType <RootNodeInfo>().First().PasswordString.ConvertToSecureString(),
                new SaveFilter());

            _serializer = new XmlConnectionsSerializer(cryptoProvider, nodeSerializer);
            var serializedContent = _serializer.Serialize(_originalModel);
            var deserializedModel = _deserializer.Deserialize(serializedContent);
            var nodeNamesFromDeserializedModel = deserializedModel.GetRecursiveChildList().Select(node => node.Name);
            var nodeNamesFromOriginalModel     = _originalModel.GetRecursiveChildList().Select(node => node.Name);

            Assert.That(nodeNamesFromDeserializedModel, Is.EquivalentTo(nodeNamesFromOriginalModel));
        }
Пример #9
0
        public void Setup()
        {
            _connectionTreeModel = new ConnectionTreeModel();
            var root = new RootNodeInfo(RootNodeType.Connection);

            root.AddChild(new ConnectionInfo());
            _connectionTreeModel.AddRootNode(root);

            _cryptographyProvider = new AeadCryptographyProvider();
            var connectionNodeSerializer = new XmlConnectionNodeSerializer27(
                _cryptographyProvider,
                _connectionTreeModel.RootNodes.OfType <RootNodeInfo>().First().PasswordString.ConvertToSecureString(),
                new SaveFilter());

            _serializer        = new XmlConnectionsSerializer(_cryptographyProvider, connectionNodeSerializer);
            _xmlReaderSettings = new XmlReaderSettings
            {
                ValidationType  = ValidationType.Schema,
                ValidationFlags = XmlSchemaValidationFlags.ProcessInlineSchema |
                                  XmlSchemaValidationFlags.ProcessSchemaLocation |
                                  XmlSchemaValidationFlags.ReportValidationWarnings
            };
        }