mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
parent
5e75cae28a
commit
941a0164f9
@ -87,47 +87,6 @@ using bytes = std::vector<byte>;
|
|||||||
using bytesRef = vector_ref<byte>;
|
using bytesRef = vector_ref<byte>;
|
||||||
using bytesConstRef = vector_ref<byte const>;
|
using bytesConstRef = vector_ref<byte const>;
|
||||||
|
|
||||||
template <class T>
|
|
||||||
class secure_vector
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
secure_vector() {}
|
|
||||||
secure_vector(secure_vector<T> const& /*_c*/) = default; // See https://github.com/ethereum/libweb3core/pull/44
|
|
||||||
explicit secure_vector(unsigned _size): m_data(_size) {}
|
|
||||||
explicit secure_vector(unsigned _size, T _item): m_data(_size, _item) {}
|
|
||||||
explicit secure_vector(std::vector<T> const& _c): m_data(_c) {}
|
|
||||||
explicit secure_vector(vector_ref<T> _c): m_data(_c.data(), _c.data() + _c.size()) {}
|
|
||||||
explicit secure_vector(vector_ref<const T> _c): m_data(_c.data(), _c.data() + _c.size()) {}
|
|
||||||
~secure_vector() { ref().cleanse(); }
|
|
||||||
|
|
||||||
secure_vector<T>& operator=(secure_vector<T> const& _c)
|
|
||||||
{
|
|
||||||
if (&_c == this)
|
|
||||||
return *this;
|
|
||||||
|
|
||||||
ref().cleanse();
|
|
||||||
m_data = _c.m_data;
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
std::vector<T>& writable() { clear(); return m_data; }
|
|
||||||
std::vector<T> const& makeInsecure() const { return m_data; }
|
|
||||||
|
|
||||||
void clear() { ref().cleanse(); }
|
|
||||||
|
|
||||||
vector_ref<T> ref() { return vector_ref<T>(&m_data); }
|
|
||||||
vector_ref<T const> ref() const { return vector_ref<T const>(&m_data); }
|
|
||||||
|
|
||||||
size_t size() const { return m_data.size(); }
|
|
||||||
bool empty() const { return m_data.empty(); }
|
|
||||||
|
|
||||||
void swap(secure_vector<T>& io_other) { m_data.swap(io_other.m_data); }
|
|
||||||
|
|
||||||
private:
|
|
||||||
std::vector<T> m_data;
|
|
||||||
};
|
|
||||||
|
|
||||||
using bytesSec = secure_vector<byte>;
|
|
||||||
|
|
||||||
// Numeric types.
|
// Numeric types.
|
||||||
using bigint = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<>>;
|
using bigint = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<>>;
|
||||||
using u64 = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<64, 64, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void>>;
|
using u64 = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<64, 64, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void>>;
|
||||||
|
Loading…
Reference in New Issue
Block a user