Example #1
0
        public void ReturnsOldProviderTypeIfXmlIsntValid()
        {
            var badElement     = new XElement("BadElement");
            var builder        = new CryptoProviderFactoryFromXml(badElement);
            var cryptoProvider = builder.Build();

            Assert.That(cryptoProvider, Is.TypeOf <LegacyRijndaelCryptographyProvider>());
        }
Example #2
0
        public void BuildsCorrectKdfIterations()
        {
            var element        = BuildValidElement();
            var builder        = new CryptoProviderFactoryFromXml(element);
            var cryptoProvider = builder.Build();

            Assert.That(cryptoProvider.KeyDerivationIterations, Is.EqualTo(1234));
        }
Example #3
0
        public void BuildsCorrectCipherMode()
        {
            var element        = BuildValidElement();
            var builder        = new CryptoProviderFactoryFromXml(element);
            var cryptoProvider = builder.Build();

            Assert.That(cryptoProvider.CipherMode, Is.EqualTo(BlockCipherModes.EAX));
        }
Example #4
0
        public void BuildsCorrectEncryptionEngine()
        {
            var element        = BuildValidElement();
            var builder        = new CryptoProviderFactoryFromXml(element);
            var cryptoProvider = builder.Build();

            Assert.That(cryptoProvider.CipherEngine, Is.EqualTo(BlockCipherEngines.Serpent));
        }
        public IEnumerable <ICredentialRecord> Harvest(XDocument xDocument, SecureString decryptionKey)
        {
            if (xDocument == null)
            {
                throw new ArgumentNullException(nameof(xDocument));
            }

            var cryptoProvider = new CryptoProviderFactoryFromXml(xDocument.Root).Build();

            foreach (var element in xDocument.Descendants("Node"))
            {
                if (!EntryHasSomeCredentialData(element))
                {
                    continue;
                }
                var newCredential = BuildCredential(element, cryptoProvider, decryptionKey);

                Guid connectionId;
                Guid.TryParse(element.Attribute("Id")?.Value, out connectionId);
                if (connectionId == Guid.Empty)
                {
                    //error
                }

                if (ConnectionToCredentialMap.Values.Contains(newCredential, _credentialComparer))
                {
                    var existingCredential =
                        ConnectionToCredentialMap.Values.First(record =>
                                                               _credentialComparer.Equals(newCredential, record));
                    ConnectionToCredentialMap.Add(connectionId, existingCredential);
                }
                else
                {
                    ConnectionToCredentialMap.Add(connectionId, newCredential);
                }
            }

            return(ConnectionToCredentialMap.Values.Distinct(_credentialComparer));
        }
Example #6
0
        private string DecryptPasswords(string xml, SecureString key)
        {
            if (string.IsNullOrEmpty(xml))
            {
                return(xml);
            }
            var xdoc           = XDocument.Parse(xml);
            var cryptoProvider = new CryptoProviderFactoryFromXml(xdoc.Root).Build();

            DecryptAuthHeader(xdoc.Root, cryptoProvider, key);
            foreach (var credentialElement in xdoc.Descendants())
            {
                var passwordAttribute = credentialElement.Attribute("Password");
                if (passwordAttribute == null)
                {
                    continue;
                }
                var decryptedPassword = cryptoProvider.Decrypt(passwordAttribute.Value, key);
                passwordAttribute.SetValue(decryptedPassword);
            }
            return(xdoc.ToString());
        }