private static void DecryptYamlValue(JsonPasswordCrypto cryptoHandler, YamlEncryptedNode encryptedNode) { var decryptedValue = cryptoHandler.Decrypt(encryptedNode.EncryptedValue); encryptedNode.Parent.Children.Remove(encryptedNode.Container); encryptedNode.Parent.Add(encryptedNode.Container.Key, decryptedValue); }
private static void FindEncryptedNodes(YamlMappingNode parent, KeyValuePair <YamlNode, YamlNode> container, List <YamlEncryptedNode> matches) { var node = container.Value; if (node is YamlMappingNode) { var nodes = ((YamlMappingNode)node).Children.ToList(); if (nodes.Count == 2 && nodes[0].Key.ToString().Equals("IV", StringComparison.InvariantCultureIgnoreCase) && nodes[1].Key.ToString().Equals("Value", StringComparison.InvariantCultureIgnoreCase)) { var encryptedNode = new YamlEncryptedNode { Container = container, Parent = parent }; matches.Add(encryptedNode); } } if (node is YamlMappingNode) { foreach (var childNode in ((YamlMappingNode)node).Children) { FindEncryptedNodes((YamlMappingNode)node, childNode, matches); } } if (node is YamlSequenceNode) { var sequenceNodes = ((YamlSequenceNode)node).Children; foreach (var child in sequenceNodes.OfType <YamlMappingNode>()) { child.Children.ToList().ForEach(x => FindEncryptedNodes(child, x, matches)); } } }