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); }
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); }
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); }