diff options
-rw-r--r-- | node/EllipticCurveKey.hpp | 24 |
1 files changed, 5 insertions, 19 deletions
diff --git a/node/EllipticCurveKey.hpp b/node/EllipticCurveKey.hpp index b32f702d..5a3a60c4 100644 --- a/node/EllipticCurveKey.hpp +++ b/node/EllipticCurveKey.hpp @@ -30,6 +30,7 @@ #include <string> #include <algorithm> +#include <stdexcept> #include <string.h> #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; } |