private static Target LoadTarget(RawSimpleEntity e, SerializableEntity target) { if (!"target".Equals(target.type)) { return(null); } BitmapImage icon = null; if (target.icon != null) { using (var s = new MemoryStream(target.icon)) { icon = new BitmapImage(); icon.BeginInit(); icon.CacheOption = BitmapCacheOption.OnLoad; icon.StreamSource = s; icon.EndInit(); } } return(new Target { Guid = e.Guid, Title = target.title, Uri = target.uri, Icon = icon, Description = target.descr }); }
private static Account LoadAccount(RawSimpleEntity e, SerializableEntity account, IDictionary <Guid, Entity> entities) { if (!"account".Equals(account.type)) { return(null); } Login login = null; if (account.login != null) { login = (Login)entities[(Guid)account.login]; } Target target = null; if (account.target != null) { target = (Target)entities[(Guid)account.target]; } return(new Account { Guid = e.Guid, Password = account.pass, Login = login, Target = target, Description = account.descr }); }
private static RawSimpleEntity Persist(Target target) { var ht = new SerializableEntity(); ht.type = "target"; ht.title = target.Title; ht.descr = target.Description; ht.uri = target.Uri; if (target.Icon != null) { PngBitmapEncoder enc = new PngBitmapEncoder(); enc.Frames.Add(CreateResizedImage(target.Icon, 16, 16)); using (var s = new System.IO.MemoryStream()) { enc.Save(s); s.Flush(); ht.icon = s.ToArray(); } } RawSimpleEntity e = new RawSimpleEntity(); e.Guid = target.Guid; var json = JsonConvert.SerializeObject(ht); e.Data = Encoding.UTF8.GetBytes(json); return(e); }
public IEnumerable <RawSimpleEntity> DecryptAll( IEnumerable <RawSimpleEntity> entities, string password, byte[] salt) { if (String.IsNullOrEmpty(password)) { foreach (var entity in entities) { yield return(entity); } } var key = Hash(password, GetDataSalt(salt)); foreach (var entity in entities) { RawSimpleEntity e = new RawSimpleEntity(); e.Guid = entity.Guid; using (var ms = new MemoryStream(entity.Data)) { Rijndael rijndael = Rijndael.Create(); rijndael.Key = key; byte[] iv = new byte[16]; ms.Read(iv, 0, 16); rijndael.IV = iv; var buffer = new byte[entity.Data.Length - 16]; using (var cs = new CryptoStream(ms, rijndael.CreateDecryptor(), CryptoStreamMode.Read)) { var read = cs.Read(buffer, 0, buffer.Length); e.Data = new byte[read]; Array.Copy(buffer, e.Data, read); } } yield return(e); } }
public IEnumerable <RawSimpleEntity> EncryptAll( IEnumerable <RawSimpleEntity> entities, string password, byte[] salt) { if (String.IsNullOrEmpty(password)) { foreach (var entity in entities) { yield return(entity); } } var key = Hash(password, GetDataSalt(salt)); foreach (var entity in entities) { RawSimpleEntity e = new RawSimpleEntity(); e.Guid = entity.Guid; using (var ms = new MemoryStream()) { Rijndael rijndael = Rijndael.Create(); rijndael.Key = key; rijndael.GenerateIV(); using (var cs = new CryptoStream(ms, rijndael.CreateEncryptor(), CryptoStreamMode.Write)) { cs.Write(entity.Data, 0, entity.Data.Length); } var data = ms.ToArray(); e.Data = new byte[data.Length + 16]; Array.Copy(rijndael.IV, e.Data, 16); Array.Copy(data, 0, e.Data, 16, data.Length); } yield return(e); } }
private static Login LoadLogin(RawSimpleEntity e, SerializableEntity login) { if (!"login".Equals(login.type)) { return(null); } return(new Login { Guid = e.Guid, Username = login.user, Description = login.descr }); }
private static RawSimpleEntity Persist(Login target) { var ht = new SerializableEntity(); ht.type = "login"; ht.user = target.Username; ht.descr = target.Description; RawSimpleEntity e = new RawSimpleEntity(); e.Guid = target.Guid; var json = JsonConvert.SerializeObject(ht); e.Data = Encoding.UTF8.GetBytes(json); return(e); }
private static RawSimpleEntity Persist(Account target) { var ht = new SerializableEntity(); ht.type = "account"; ht.descr = target.Description; ht.pass = target.Password; if (target.Target != null) { ht.target = target.Target.Guid; } if (target.Login != null) { ht.login = target.Login.Guid; } RawSimpleEntity e = new RawSimpleEntity(); e.Guid = target.Guid; var json = JsonConvert.SerializeObject(ht); e.Data = Encoding.UTF8.GetBytes(json); return(e); }
private static SerializableEntity LoadEntity(RawSimpleEntity e) { return((SerializableEntity)JsonConvert.DeserializeObject(Encoding.UTF8.GetString(e.Data), typeof(SerializableEntity))); }