// Copyright (c) 2011-2016 The Cryptonote developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #pragma once #include #include #include #include "crypto/hash.h" #include "crypto/chacha8.h" namespace CryptoNote { class AccountBase; class ISerializer; } namespace CryptoNote { class WalletUserTransactionsCache; class WalletLegacySerializer { public: WalletLegacySerializer(CryptoNote::AccountBase& account, WalletUserTransactionsCache& transactionsCache); void serialize(std::ostream& stream, const std::string& password, bool saveDetailed, const std::string& cache); void deserialize(std::istream& stream, const std::string& password, std::string& cache); private: void saveKeys(CryptoNote::ISerializer& serializer); void loadKeys(CryptoNote::ISerializer& serializer); Crypto::chacha8_iv encrypt(const std::string& plain, const std::string& password, std::string& cipher); void decrypt(const std::string& cipher, std::string& plain, Crypto::chacha8_iv iv, const std::string& password); CryptoNote::AccountBase& account; WalletUserTransactionsCache& transactionsCache; const uint32_t walletSerializationVersion; }; } //namespace CryptoNote