public void ReturnsOldProviderTypeIfXmlIsntValid() { var badElement = new XElement("BadElement"); var builder = new CryptoProviderFactoryFromXml(badElement); var cryptoProvider = builder.Build(); Assert.That(cryptoProvider, Is.TypeOf <LegacyRijndaelCryptographyProvider>()); }
public void BuildsCorrectKdfIterations() { var element = BuildValidElement(); var builder = new CryptoProviderFactoryFromXml(element); var cryptoProvider = builder.Build(); Assert.That(cryptoProvider.KeyDerivationIterations, Is.EqualTo(1234)); }
public void BuildsCorrectCipherMode() { var element = BuildValidElement(); var builder = new CryptoProviderFactoryFromXml(element); var cryptoProvider = builder.Build(); Assert.That(cryptoProvider.CipherMode, Is.EqualTo(BlockCipherModes.EAX)); }
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)); }
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()); }