From 304ed641fedc148520551904ff1b1819a230561d Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Sat, 27 Jul 2013 16:26:06 -0400 Subject: [PATCH] makekeypair utility --- Makefile.mac | 3 +++ makekeypair.cpp | 47 +++++++++++++++++++++++++++++++++++++++ node/EllipticCurveKey.hpp | 11 +++++---- 3 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 makekeypair.cpp diff --git a/Makefile.mac b/Makefile.mac index 4f85cc5a3..61c6c1d05 100644 --- a/Makefile.mac +++ b/Makefile.mac @@ -56,6 +56,9 @@ launcher-fakebin: $(CC) $(CFLAGS) -DZEROTIER_FAKE_VERSION_MAJOR=1 -DZEROTIER_FAKE_VERSION_MINOR=2 -DZEROTIER_FAKE_VERSION_REV $(CC) $(CFLAGS) -DZEROTIER_FAKE_VERSION_MAJOR=1 -DZEROTIER_FAKE_VERSION_MINOR=2 -DZEROTIER_FAKE_VERSION_REV +makekeypair: $(OBJS) + $(CXX) $(CXXFLAGS) -o zerotier-makekeypair makekeypair.cpp $(OBJS) $(LIBS) + clean: rm -rf *.dSYM rm -f $(OBJS) zerotier-* diff --git a/makekeypair.cpp b/makekeypair.cpp new file mode 100644 index 000000000..b8736a4e2 --- /dev/null +++ b/makekeypair.cpp @@ -0,0 +1,47 @@ +/* + * ZeroTier One - Global Peer to Peer Ethernet + * Copyright (C) 2012-2013 ZeroTier Networks LLC + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * -- + * + * ZeroTier may be used and distributed under the terms of the GPLv3, which + * are available at: http://www.gnu.org/licenses/gpl-3.0.html + * + * If you would like to embed ZeroTier into a commercial application or + * redistribute it in a modified binary form, please contact ZeroTier Networks + * LLC. Start here: http://www.zerotier.com/ + */ + +#include +#include +#include "node/EllipticCurveKeyPair.hpp" +#include "node/EllipticCurveKey.hpp" +#include "node/Utils.hpp" + +using namespace ZeroTier; + +int main(int argc,char **argv) +{ + std::cout << "[generating]" << std::endl; + + EllipticCurveKeyPair kp; + kp.generate(); + + std::cout << "PUBLIC: " << kp.pub().toHex() << std::endl; + std::cout << "PRIVATE: " << kp.priv().toHex() << std::endl; + + return 0; +} diff --git a/node/EllipticCurveKey.hpp b/node/EllipticCurveKey.hpp index cc666104f..b32f702dc 100644 --- a/node/EllipticCurveKey.hpp +++ b/node/EllipticCurveKey.hpp @@ -71,10 +71,13 @@ public: EllipticCurveKey(const void *data,unsigned int len) throw() { - if (len <= ZT_EC_MAX_BYTES) { - _bytes = len; - memcpy(_key,data,len); - } else _bytes = 0; + set(data,len); + } + + EllipticCurveKey(const std::string &data) + throw() + { + set(data.data(),data.length()); } EllipticCurveKey(const EllipticCurveKey &k)