diff --git a/node/EllipticCurveKey.hpp b/node/EllipticCurveKey.hpp index b32f702dc..5a3a60c48 100644 --- a/node/EllipticCurveKey.hpp +++ b/node/EllipticCurveKey.hpp @@ -30,6 +30,7 @@ #include #include +#include #include #include "Utils.hpp" @@ -69,39 +70,24 @@ public: } EllipticCurveKey(const void *data,unsigned int len) - throw() + throw(std::out_of_range) { set(data,len); } EllipticCurveKey(const std::string &data) - throw() + throw(std::out_of_range) { set(data.data(),data.length()); } - EllipticCurveKey(const EllipticCurveKey &k) - throw() - { - _bytes = k._bytes; - memcpy(_key,k._key,_bytes); - } - - inline EllipticCurveKey &operator=(const EllipticCurveKey &k) - throw() - { - _bytes = k._bytes; - memcpy(_key,k._key,_bytes); - return *this; - } - inline void set(const void *data,unsigned int len) - throw() + throw(std::out_of_range) { if (len <= ZT_EC_MAX_BYTES) { _bytes = len; memcpy(_key,data,len); - } else _bytes = 0; + } else throw std::out_of_range("key too large"); } inline const unsigned char *data() const throw() { return _key; }