public LiteDbAccountDataRepository(
            string pathToDb,
            SecureString password,
            ICurrencies currencies,
            ISymbols symbols)
        {
            _pathToDb = pathToDb ??
                        throw new ArgumentNullException(nameof(pathToDb));

            if (password == null)
            {
                throw new ArgumentNullException(nameof(password));
            }

            if (currencies == null)
            {
                throw new ArgumentNullException(nameof(currencies));
            }

            if (symbols == null)
            {
                throw new ArgumentNullException(nameof(symbols));
            }

            _sessionPassword = SessionPasswordHelper.GetSessionPassword(password);
            _bsonMapper      = CreateBsonMapper(currencies, symbols);
        }
Exemplo n.º 2
0
        public LiteDbAccountDataRepository(
            string pathToDb,
            SecureString password,
            ICurrencies currencies,
            Network network)
        {
            _pathToDb = pathToDb ??
                        throw new ArgumentNullException(nameof(pathToDb));

            if (password == null)
            {
                throw new ArgumentNullException(nameof(password));
            }

            if (currencies == null)
            {
                throw new ArgumentNullException(nameof(currencies));
            }

            _sessionPassword = SessionPasswordHelper.GetSessionPassword(password);
            _bsonMapper      = CreateBsonMapper(currencies);

            LiteDbMigrationManager.Migrate(
                pathToDb: _pathToDb,
                sessionPassword: _sessionPassword,
                network: network);
        }
Exemplo n.º 3
0
        public static object LoadFromFile(
            string pathToFile,
            SecureString password)
        {
            var passwordHash   = SessionPasswordHelper.GetSessionPasswordBytes(password, hashIterationsCount: 5);
            var encryptedBytes = File.ReadAllBytes(pathToFile);

            var decryptedBytes = Aes.Decrypt(
                encryptedBytes: encryptedBytes,
                keyBytes: passwordHash);

            var json = Encoding.UTF8.GetString(decryptedBytes);

            var storage = JsonConvert.DeserializeObject <JObject>(json);

            var encryptedSeed = storage["Keys"]["1729"]["EncryptedSeed"].ToString();

            var seedPasswordHash = SessionPasswordHelper.GetSessionPasswordBytes(password);

            var seed = Aes.Decrypt(
                encryptedBytes: Hex.FromString(encryptedSeed),
                keyBytes: seedPasswordHash);

            storage["Seed"] = seed.ToHexString();

            return(storage);
        }