31
31
32
32
// local headers
33
33
#include " address_utils_compat.h"
34
+ #include " carrot_core/address_utils.h"
34
35
35
36
// third party headers
36
37
@@ -53,4 +54,88 @@ void cryptonote_hierarchy_address_device_ram_borrowed::make_legacy_subaddress_ex
53
54
legacy_subaddress_extension_out);
54
55
}
55
56
// -------------------------------------------------------------------------------------------------------------------
57
+ carrot_hierarchy_address_device_ram_borrowed::carrot_hierarchy_address_device_ram_borrowed (
58
+ const crypto::public_key &account_spend_pubkey,
59
+ const crypto::public_key &account_view_pubkey,
60
+ const crypto::public_key &main_address_view_pubkey,
61
+ const crypto::secret_key &s_generate_address)
62
+ :
63
+ m_account_spend_pubkey (account_spend_pubkey),
64
+ m_account_view_pubkey (account_view_pubkey),
65
+ m_main_address_view_pubkey (main_address_view_pubkey),
66
+ m_s_generate_address (s_generate_address)
67
+ {}
68
+ // -------------------------------------------------------------------------------------------------------------------
69
+ void carrot_hierarchy_address_device_ram_borrowed::make_index_extension_generator (const std::uint32_t major_index,
70
+ const std::uint32_t minor_index,
71
+ crypto::secret_key &address_generator_out) const
72
+ {
73
+ make_carrot_index_extension_generator (m_s_generate_address, major_index, minor_index, address_generator_out);
74
+ }
75
+ // -------------------------------------------------------------------------------------------------------------------
76
+ crypto::public_key carrot_hierarchy_address_device_ram_borrowed::get_carrot_account_spend_pubkey () const
77
+ {
78
+ return m_account_spend_pubkey;
79
+ }
80
+ // -------------------------------------------------------------------------------------------------------------------
81
+ crypto::public_key carrot_hierarchy_address_device_ram_borrowed::get_carrot_account_view_pubkey () const
82
+ {
83
+ return m_account_view_pubkey;
84
+ }
85
+ // -------------------------------------------------------------------------------------------------------------------
86
+ crypto::public_key carrot_hierarchy_address_device_ram_borrowed::get_carrot_main_address_view_pubkey () const
87
+ {
88
+ return m_main_address_view_pubkey;
89
+ }
90
+ // -------------------------------------------------------------------------------------------------------------------
91
+ hybrid_hierarchy_address_device_composed::hybrid_hierarchy_address_device_composed (
92
+ const cryptonote_hierarchy_address_device *cn_addr_dev,
93
+ const carrot_hierarchy_address_device *carrot_addr_dev)
94
+ :
95
+ m_cn_addr_dev (cn_addr_dev),
96
+ m_carrot_addr_dev (carrot_addr_dev)
97
+ {}
98
+ // -------------------------------------------------------------------------------------------------------------------
99
+ bool hybrid_hierarchy_address_device_composed::supports_address_derivation_type (AddressDeriveType derive_type) const
100
+ {
101
+ switch (derive_type)
102
+ {
103
+ case AddressDeriveType::PreCarrot:
104
+ return m_cn_addr_dev;
105
+ case AddressDeriveType::Carrot:
106
+ return m_carrot_addr_dev;
107
+ case AddressDeriveType::Auto:
108
+ return m_cn_addr_dev || m_carrot_addr_dev;
109
+ default :
110
+ throw device_error (" Default" ,
111
+ " hybrid_hierarchy_address_device_composed" ,
112
+ " supports_address_derivation_type" ,
113
+ " unrecognized derive type" , -1 );
114
+ }
115
+ }
116
+ // -------------------------------------------------------------------------------------------------------------------
117
+ const cryptonote_hierarchy_address_device &hybrid_hierarchy_address_device_composed::access_cryptonote_hierarchy_device () const
118
+ {
119
+ if (!m_cn_addr_dev)
120
+ {
121
+ throw device_error (" Default" ,
122
+ " hybrid_hierarchy_address_device_composed" ,
123
+ " access_cryptonote_hierarchy_device" ,
124
+ " cryptonote sub-device unavailable" , -1 );
125
+ }
126
+ return *m_cn_addr_dev;
127
+ }
128
+ // -------------------------------------------------------------------------------------------------------------------
129
+ const carrot_hierarchy_address_device &hybrid_hierarchy_address_device_composed::access_carrot_hierarchy_device () const
130
+ {
131
+ if (!m_carrot_addr_dev)
132
+ {
133
+ throw device_error (" Default" ,
134
+ " hybrid_hierarchy_address_device_composed" ,
135
+ " access_carrot_hierarchy_device" ,
136
+ " carrot sub-device unavailable" , -1 );
137
+ }
138
+ return *m_carrot_addr_dev;
139
+ }
140
+ // -------------------------------------------------------------------------------------------------------------------
56
141
} // namespace carrot
0 commit comments