Electroneum
account.h
Go to the documentation of this file.
1 // Copyrights(c) 2017-2019, The Electroneum Project
2 // Copyrights(c) 2014-2017, The Monero Project
3 //
4 // All rights reserved.
5 //
6 // Redistribution and use in source and binary forms, with or without modification, are
7 // permitted provided that the following conditions are met:
8 //
9 // 1. Redistributions of source code must retain the above copyright notice, this list of
10 // conditions and the following disclaimer.
11 //
12 // 2. Redistributions in binary form must reproduce the above copyright notice, this list
13 // of conditions and the following disclaimer in the documentation and/or other
14 // materials provided with the distribution.
15 //
16 // 3. Neither the name of the copyright holder nor the names of its contributors may be
17 // used to endorse or promote products derived from this software without specific
18 // prior written permission.
19 //
20 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
21 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
22 // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
23 // THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
27 // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
28 // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 //
30 // Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers
31 
32 #pragma once
33 
34 #include "cryptonote_basic.h"
35 #include "crypto/crypto.h"
36 #include "serialization/keyvalue_serialization.h"
37 
38 namespace cryptonote
39 {
40 
41  struct account_keys
42  {
46 
47  BEGIN_KV_SERIALIZE_MAP()
48  KV_SERIALIZE(m_account_address)
49  KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE(m_spend_secret_key)
50  KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE(m_view_secret_key)
51  END_KV_SERIALIZE_MAP()
52  };
53 
54  /************************************************************************/
55  /* */
56  /************************************************************************/
58  {
59  public:
60  account_base();
61  crypto::secret_key generate(const crypto::secret_key& recovery_key = crypto::secret_key(), bool recover = false, bool two_random = false);
62  void create_from_keys(const cryptonote::account_public_address& address, const crypto::secret_key& spendkey, const crypto::secret_key& viewkey);
63  void create_from_viewkey(const cryptonote::account_public_address& address, const crypto::secret_key& viewkey);
64  const account_keys& get_keys() const;
65  std::string get_public_address_str(bool testnet) const;
66  std::string get_public_integrated_address_str(const crypto::hash8 &payment_id, bool testnet) const;
67 
68  uint64_t get_createtime() const { return m_creation_timestamp; }
69  void set_createtime(uint64_t val) { m_creation_timestamp = val; }
70 
71  bool load(const std::string& file_path);
72  bool store(const std::string& file_path);
73 
74  void forget_spend_key();
75 
76  template <class t_archive>
77  inline void serialize(t_archive &a, const unsigned int /*ver*/)
78  {
79  a & m_keys;
80  a & m_creation_timestamp;
81  }
82 
83  BEGIN_KV_SERIALIZE_MAP()
84  KV_SERIALIZE(m_keys)
85  KV_SERIALIZE(m_creation_timestamp)
86  END_KV_SERIALIZE_MAP()
87 
88  private:
89  void set_null();
90  account_keys m_keys;
91  uint64_t m_creation_timestamp;
92  };
93 }
Holds cryptonote related classes and helpers.
Definition: db_bdb.cpp:225
Definition: account.h:57
void serialize(t_archive &a, const unsigned int)
Definition: account.h:77
void load(Archive &a, std::unordered_map< h_key, hval > &x, const boost::serialization::version_type ver)
Definition: unordered_containers_boost_serialization.h:55
Definition: account.h:41
void set_createtime(uint64_t val)
Definition: account.h:69
crypto::secret_key m_view_secret_key
Definition: account.h:45
account_public_address m_account_address
Definition: account.h:43
Definition: cryptonote_basic.h:421
POD_CLASS hash8
Definition: hash.h:49
POD_CLASS secret_key
Definition: crypto.h:69
crypto::secret_key m_spend_secret_key
Definition: account.h:44
string a
Definition: MakeCryptoOps.py:15
uint64_t get_createtime() const
Definition: account.h:68