iota.lib.cpp
IOTA C++ Library
seed.hpp
1 //
2 // MIT License
3 //
4 // Copyright (c) 2017-2018 Thibault Martinez and Simon Ninon
5 //
6 // Permission is hereby granted, free of charge, to any person obtaining a copy
7 // of this software and associated documentation files (the "Software"), to deal
8 // in the Software without restriction, including without limitation the rights
9 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 // copies of the Software, and to permit persons to whom the Software is
11 // furnished to do so, subject to the following conditions:
12 //
13 // The above copyright notice and this permission notice shall be included in all
14 // copies or substantial portions of the Software.
15 //
16 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 // SOFTWARE.
23 //
24 //
25 
26 #pragma once
27 
28 #include <iota/models/fwd.hpp>
29 #include <iota/types/trinary.hpp>
30 
31 namespace IOTA {
32 
33 namespace Models {
34 
40 class Seed {
41 public:
48  Seed(const Types::Trytes& seed = "", int security = 2);
49 
56  Seed(const char* seed, int security = 2);
57 
61  ~Seed() = default;
62 
63 public:
67  const Types::Trytes& toTrytes() const;
68 
74  void setSeed(const Types::Trytes& seed);
75 
82  void setSecurity(int security);
83 
87  int getSecurity() const;
88 
89 public:
94  static Seed generateRandomSeed();
95 
96 public:
105  Models::Address newAddress(int32_t index, int32_t security = 0) const;
106 
116  static Models::Address newAddress(const Models::Seed& seed, int32_t index, int32_t security = 0);
117 
118 public:
126  bool operator==(const Seed& rhs) const;
127 
135  bool operator!=(const Seed& rhs) const;
136 
137 public:
145  bool operator==(const Types::Trytes& rhs) const;
146 
154  bool operator!=(const Types::Trytes& rhs) const;
155 
156 private:
160  Types::Trytes seed_;
164  int security_;
165 };
166 
167 std::ostream& operator<<(std::ostream& os, const Seed& seed);
168 
169 } // namespace Models
170 
171 } // namespace IOTA
Models::Address newAddress(int32_t index, int32_t security=0) const
static Seed generateRandomSeed()
void setSeed(const Types::Trytes &seed)
Definition: address.hpp:43
Seed(const Types::Trytes &seed="", int security=2)
const Types::Trytes & toTrytes() const
bool operator==(const Seed &rhs) const
int getSecurity() const
void setSecurity(int security)
bool operator!=(const Seed &rhs) const
Definition: seed.hpp:40
Definition: core.hpp:33