diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9bed852 --- /dev/null +++ b/LICENSE @@ -0,0 +1,28 @@ +Copyright (c) 2016, +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of i2pd-reseed nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c51c310 --- /dev/null +++ b/Makefile @@ -0,0 +1,27 @@ +CXX = g++ +CXXFLAGS = -g -Wall -std=c++11 +OBJECTS = keygen.o +INCFLAGS = -I"../i2pd" +LDFLAGS = -Wl,-rpath,/usr/local/lib +LIBS = ../i2pd/libi2pd.a -lboost_system -lboost_date_time -lboost_filesystem -lboost_program_options -lssl -lcrypto -lpthread -lrt -lz + +all: keygen + +keygen: $(OBJECTS) + $(CXX) -o keygen $(OBJECTS) $(LDFLAGS) $(LIBS) + +.SUFFIXES: +.SUFFIXES: .c .cc .C .cpp .o + +.cpp.o : + $(CXX) -o $@ -c $(CXXFLAGS) $< $(INCFLAGS) + +count: + wc *.c *.cc *.C *.cpp *.h *.hpp + +clean: + rm -f *.o keygen + +.PHONY: all +.PHONY: count +.PHONY: clean diff --git a/keygen.cpp b/keygen.cpp new file mode 100644 index 0000000..0b93f4b --- /dev/null +++ b/keygen.cpp @@ -0,0 +1,34 @@ +#include +#include +#include +#include "Crypto.h" +#include "Identity.h" + +int main (int argc, char * argv[]) +{ + if (argc < 3) + { + std::cout << "Usage: keygen filename " << std::endl; + return -1; + } + i2p::crypto::InitCrypto (false); + i2p::data::SigningKeyType type = i2p::data::SIGNING_KEY_TYPE_DSA_SHA1; + if (argc >= 3) type = atoi (argv[2]); + auto keys = i2p::data::PrivateKeys::CreateRandomKeys (type); + std::ofstream f (argv[1], std::ofstream::binary | std::ofstream::out); + if (f) + { + size_t len = keys.GetFullLen (); + uint8_t * buf = new uint8_t[len]; + len = keys.ToBuffer (buf, len); + f.write ((char *)buf, len); + delete[] buf; + std::cout << "Destination " << keys.GetPublic ()->GetIdentHash ().ToBase32 () << " created" << std::endl; + } + else + std::cout << "Can't create file " << argv[1] << std::endl; + + return 0; +} + +