Exemplo n.º 1
0
        public static EntrySettings GetKeeAgentSettings(this PwEntry entry)
        {
            var settingsString = entry.Strings.ReadSafe(settingsStringId);

            // move settings from string to binary attachment
            if (settingsString != string.Empty)
            {
                entry.Binaries.Set(settingsBinaryId,
                                   new ProtectedBinary(false, Encoding.Unicode.GetBytes(settingsString)));
                entry.Strings.Remove(settingsStringId);
                entry.Touch(true);
            }
            var settingsBinary = entry.Binaries.Get(settingsBinaryId);

            if (settingsBinary != null)
            {
                settingsString = Encoding.Unicode.GetString(settingsBinary.ReadData());
                if (!string.IsNullOrWhiteSpace(settingsString))
                {
                    using (var reader = XmlReader.Create(new StringReader(settingsString))) {
                        if (EntrySettingsSerializer.CanDeserialize(reader))
                        {
                            return(EntrySettingsSerializer.Deserialize(reader) as EntrySettings);
                        }
                    }
                }
            }
            return(new EntrySettings());
        }
Exemplo n.º 2
0
 public static void SetKeeAgentSettings(this ProtectedBinaryDictionary binaries,
                                        EntrySettings settings)
 {
     // only save if there is an existing entry or AllowUseOfSshKey is checked
     // this way we don't pollute entries that don't have SSH keys
     if (binaries.Get(settingsBinaryId) != null ||
         settings.AllowUseOfSshKey)
     {
         using (var writer = new StringWriter()) {
             EntrySettingsSerializer.Serialize(writer, settings);
             // string is protected just to make UI look cleaner
             binaries.Set(settingsBinaryId,
                          new ProtectedBinary(false, Encoding.Unicode.GetBytes(writer.ToString())));
         }
     }
 }