Esempio n. 1
0
        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
            });
        }
Esempio n. 2
0
        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
            });
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 5
0
        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);
            }
        }
Esempio n. 6
0
 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
     });
 }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
 private static SerializableEntity LoadEntity(RawSimpleEntity e)
 {
     return((SerializableEntity)JsonConvert.DeserializeObject(Encoding.UTF8.GetString(e.Data), typeof(SerializableEntity)));
 }