diff --git a/apps/enclave/LICENSE b/apps/enclave/LICENSE deleted file mode 100644 index ed1daacf69f47fc4fa5196724096f7b47134a66e..0000000000000000000000000000000000000000 --- a/apps/enclave/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> -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 the author nor the names of any 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 OWNER -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/apps/enclave/Makefile.cygwin b/apps/enclave/Makefile.cygwin deleted file mode 100644 index 0c209c2064afdc53536c221a8edc9a70cd7a3f8e..0000000000000000000000000000000000000000 --- a/apps/enclave/Makefile.cygwin +++ /dev/null @@ -1,87 +0,0 @@ -# -# This Makefile is compatible with GNU Make and should work on Cygwin -# - -# -# Your operating environment -# - -OS = CYGWIN - -# -# Directories -# - -BINDIR = bin -LOGDIR = log -OBJDIR = obj -SRCDIR = src - -SAMINCDIR = ../sam/c/inc -SAMLIBDIR = ../sam/c/lib -TOMCRYPTDIR = $(HOME)/libtomcrypt-0.96 - -# -# Programs -# - -CC = g++ - -# -# Flags -# - -CFLAGS = -g -march=i486 -pipe -Wall -CFLAGS += -DOS=$(OS) - -# -# Libraries -# - -CFLAGS += -I$(SAMINCDIR) -I$(TOMCRYPTDIR) -LDFLAGS = -L$(SAMLIBDIR) -L$(TOMCRYPTDIR) -LIBS = -lsam -ltomcrypt -lpthread - -# -# Object files -# - -OBJS = $(OBJDIR)/bigint.o \ - $(OBJDIR)/chk.o \ - $(OBJDIR)/config.o \ - $(OBJDIR)/logger.o \ - $(OBJDIR)/main.o \ - $(OBJDIR)/mutex.o \ - $(OBJDIR)/peers.o \ - $(OBJDIR)/random.o \ - $(OBJDIR)/rpc.o \ - $(OBJDIR)/sam.o \ - $(OBJDIR)/sha1.o \ - $(OBJDIR)/thread.o - -# -# Build rules -# - -all: depend enclave - -depend: - $(CC) $(CFLAGS) -MM $(SRCDIR)/*.cpp > .depend - -$(OBJDIR)/%.o: $(SRCDIR)/%.cpp - $(CC) $(CFLAGS) -o $@ -c $< - -enclave: $(OBJS) - $(CC) $(CFLAGS) $(LDFLAGS) -o $(BINDIR)/enclave $(OBJS) $(LIBS) - -# -# Cleanup rules -# - -clean: - -rm -f $(BINDIR)/* $(OBJDIR)/* .depend - -clean-logs: - -rm -f $(LOGDIR)/* - -tidy: clean clean-logs diff --git a/apps/enclave/Makefile.linux b/apps/enclave/Makefile.linux deleted file mode 100644 index 054ff6f2fffb2e7c61fa873da83000c4222f1d4e..0000000000000000000000000000000000000000 --- a/apps/enclave/Makefile.linux +++ /dev/null @@ -1,87 +0,0 @@ -# -# This Makefile is compatible with GNU Make and should work on Linux (generic) -# - -# -# Your operating environment -# - -OS = LINUX - -# -# Directories -# - -BINDIR = bin -LOGDIR = log -OBJDIR = obj -SRCDIR = src - -SAMINCDIR = ../sam/c/inc -SAMLIBDIR = ../sam/c/lib -TOMCRYPTDIR = $(HOME)/libtomcrypt-0.96 - -# -# Programs -# - -CC = g++ - -# -# Flags -# - -CFLAGS = -g -march=i486 -pipe -Wall -CFLAGS += -DOS=$(OS) - -# -# Libraries -# - -CFLAGS += -I$(SAMINCDIR) -I$(TOMCRYPTDIR) -LDFLAGS = -L$(SAMLIBDIR) -L$(TOMCRYPTDIR) -LIBS = -lsam -ltomcrypt -lpthread - -# -# Object files -# - -OBJS = $(OBJDIR)/bigint.o \ - $(OBJDIR)/chk.o \ - $(OBJDIR)/config.o \ - $(OBJDIR)/logger.o \ - $(OBJDIR)/main.o \ - $(OBJDIR)/mutex.o \ - $(OBJDIR)/peers.o \ - $(OBJDIR)/random.o \ - $(OBJDIR)/rpc.o \ - $(OBJDIR)/sam.o \ - $(OBJDIR)/sha1.o \ - $(OBJDIR)/thread.o - -# -# Build rules -# - -all: depend enclave - -depend: - $(CC) $(CFLAGS) -MM $(SRCDIR)/*.cpp > .depend - -$(OBJDIR)/%.o: $(SRCDIR)/%.cpp - $(CC) $(CFLAGS) -o $@ -c $< - -enclave: $(OBJS) - $(CC) $(CFLAGS) $(LDFLAGS) -o $(BINDIR)/enclave $(OBJS) $(LIBS) - -# -# Cleanup rules -# - -clean: - -rm -f $(BINDIR)/* $(OBJDIR)/* .depend - -clean-logs: - -rm -f $(LOGDIR)/* - -tidy: clean clean-logs diff --git a/apps/enclave/Makefile.mingw b/apps/enclave/Makefile.mingw deleted file mode 100644 index a1298e0e173dea1e8917062b57f04f4734ba5a07..0000000000000000000000000000000000000000 --- a/apps/enclave/Makefile.mingw +++ /dev/null @@ -1,87 +0,0 @@ -# -# This Makefile is compatible with GNU Make and should work on Windows (Mingw) -# - -# -# Your operating environment -# - -OS = MINGW - -# -# Directories -# - -BINDIR = bin -LOGDIR = log -OBJDIR = obj -SRCDIR = src - -SAMINCDIR = C:\cygwin\home\Administrator\cvs\i2p\apps\sam\c\inc -SAMLIBDIR = C:\cygwin\home\Administrator\cvs\i2p\apps\sam\c\lib -TOMCRYPTDIR = C:\cygwin\home\Administrator\libtomcrypt-0.96 - -# -# Programs -# - -CC = C:\Dev-Cpp\bin\g++ - -# -# Flags -# - -CFLAGS = -g -march=i486 -pipe -Wall -CFLAGS += -DOS=$(OS) - -# -# Libraries -# - -CFLAGS += -I$(SAMINCDIR) -I$(TOMCRYPTDIR) -LDFLAGS = -L$(SAMLIBDIR) -L$(TOMCRYPTDIR) -LIBS = -lsam -ltomcrypt - -# -# Object files -# - -OBJS = $(OBJDIR)/bigint.o \ - $(OBJDIR)/chk.o \ - $(OBJDIR)/config.o \ - $(OBJDIR)/logger.o \ - $(OBJDIR)/main.o \ - $(OBJDIR)/mutex.o \ - $(OBJDIR)/peers.o \ - $(OBJDIR)/random.o \ - $(OBJDIR)/rpc.o \ - $(OBJDIR)/sam.o \ - $(OBJDIR)/sha1.o \ - $(OBJDIR)/thread.o - -# -# Build rules -# - -all: depend enclave - -depend: - $(CC) $(CFLAGS) -MM $(SRCDIR)/*.cpp > .depend - -$(OBJDIR)/%.o: $(SRCDIR)/%.cpp - $(CC) $(CFLAGS) -o $@ -c $< - -enclave: $(OBJS) - $(CC) $(CFLAGS) $(LDFLAGS) -o $(BINDIR)/enclave $(OBJS) $(LIBS) - -# -# Cleanup rules -# - -clean: - -rm -f $(BINDIR)/* $(OBJDIR)/* .depend - -clean-logs: - -rm -f $(LOGDIR)/* - -tidy: clean clean-logs diff --git a/apps/enclave/cfg/enclave.cfg b/apps/enclave/cfg/enclave.cfg deleted file mode 100644 index dacb19a5f1e8cf7dabbcaf678d4e773093fa9e32..0000000000000000000000000000000000000000 --- a/apps/enclave/cfg/enclave.cfg +++ /dev/null @@ -1,32 +0,0 @@ -# -# This is the Enclave configuration file. Lines starting with # and blank lines -# are ignored. -# - -# The DNS name or IP address of the SAM server you will be using -samhost=localhost - -# The TCP port the SAM server is listening on -samport=7656 - -# The destination name of this program. This can be anything. If you run -# multiple copies of Enclave off the same SAM server then each one has to have a -# unique name. -samname=enclave - -# The depth used for incoming and outgoing I2P tunnels. Using a depth of 2 is -# the default and a good choice. You can set it to 0 if you don't care about -# anonymity and just want speed. -tunneldepth=0 - -# The location of the peer references file. You can use an absolute or relative -# path, but absolute paths are safer. -references=cfg/peers.ref - -# Record every log message at or above this priority level -# debug = 0, minor = 1, info = 2, warn = 3, error = 4 -loglevel=0 - -# The location of the Enclave log file. You can use an absolute or relative -# path, but absolute paths are safer. -logfile=log/enclave.log diff --git a/apps/enclave/cfg/peers.ref b/apps/enclave/cfg/peers.ref deleted file mode 100644 index 2d72a5f73bd0dcd396a9735d32651ec5d266faed..0000000000000000000000000000000000000000 --- a/apps/enclave/cfg/peers.ref +++ /dev/null @@ -1,2 +0,0 @@ -4KpEG0uUvTM~IZKuWZZifdmh5UU6evIPG0tE3ppoqy37AY2NJrsM8BU0EkT1SG-g18qSW9UHDp7qs7m~WzeWTXyYggEb6k6-e0GYC2Cj8ED8JV58-2~cFZumVNJ2d1hns-MGX7RZv2lz3Cz2ZVhfZxSIw9UnpV-kwVn7sQ7PBCvJYE4INbp5OlRQH1-3lXiUheoJfeZpegGTUSHUwIRWglX7w87YF~LCbJMYXDgMyA3SaxsZaun7Wc8ku4bqtbmG9u15XlmqimLUUmDG0cw77HJzqxnR1C1hx0wf-9zgH6u4jwTWk92w5tZJZSv1SHKejlPkIbRNAhZv5wroyZsn6T0koV~kTVCvbUEwILho-rHn4A6C2jLQifwE9aucziBTVq3YLK2urf1wI1jLh98iFNav40S~B2w-4xZFAQ49bOdWzY4KmVIjocVhfGi~RLl5bHD1TEJS7nOaDhI8qCSe7mR0XzZgQ~iROR~XowlwKXBzNPjKED7yN8GgV2pWRGNYAAAA -WiotuvEjGpSz7q14eZGYFpD0xNt3V~nxZdDDgKc~whkW-pardZyz~wZipHXLIOvniThDL2rxJ~OW7RxgUycCph4x--NL51kEJhMWZ~bgxPioxw-T4JGQ9LSNndt9xNOf6yhEqyokqyEOEeJjw6m2e7RX7mTRffmTlCdu6uH6rVEk22o4Uu5S26p6-LS2k9lRyMWitFd~t9cnOgLTZTE~h4d-UlAd1BGxpCTlGWcaynOQzKKtljZknZMF9Qv19MxT83t18~3IURb6aOLlC4oih9pMt1pHouZuOaStKA7cGLsXUAhSB31BvK8l4R7VhgcudwJ9EQZkZQee51hcng7K1Yqmd4lnjHHuf1mDk0YXBAWDZOM0-oEwkJWumGuYl0NUtLhNlFrBjenbjACx88qhfy6mkXfo8c-c2QqEXuD2xt4OVqrWxBTIrr1pR-E1NdIxzIvOlCbrRXaqxqu-wnrrG2vCO-1zu9NHacCVjXD7AR7p3T628wPdCUzj2~rZRcCkAAAA diff --git a/apps/enclave/libsockthread/LICENSE b/apps/enclave/libsockthread/LICENSE deleted file mode 100644 index ed1daacf69f47fc4fa5196724096f7b47134a66e..0000000000000000000000000000000000000000 --- a/apps/enclave/libsockthread/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> -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 the author nor the names of any 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 OWNER -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/apps/enclave/libsockthread/src/logger.cpp b/apps/enclave/libsockthread/src/logger.cpp deleted file mode 100644 index 9b32a832eca85887d4b927785ee89ec2305e54fd..0000000000000000000000000000000000000000 --- a/apps/enclave/libsockthread/src/logger.cpp +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - * - * $Id$ - */ - -#include "platform.hpp" -#include "mutex.hpp" -#include "time.hpp" -#include "logger.hpp" -using namespace Libsockthread; - -/* - * Closes the log file - */ -void Logger::close() -{ - logf_m.lock(); - if (logf == NULL) { - logf_m.unlock(); - return; - } - if (fclose(logf) == EOF) { - cerr_m.lock(); - cerr << "fclose() failed: " << strerror(errno) << '\n'; - cerr_m.unlock(); - } - logf = NULL; - logf_m.unlock(); -} - -/* - * Sends a line to the log file. Uses variable arguments just like printf(). - */ -void Logger::log(priority_t priority, const char* format, ...) -{ - if (priority < get_loglevel()) - return; - - char ll; - switch (priority) { - case Logger::DEBUG: - ll = 'D'; - break; - case Logger::MINOR: - ll = 'M'; - break; - case Logger::INFO: - ll = 'I'; - break; - case Logger::WARN: - ll = 'W'; - break; - case Logger::ERROR: - ll = 'E'; - break; - default: - ll = '?'; - } - - va_list ap; - va_start(ap, format); - Time t; - logf_m.lock(); - - if (logf != NULL) { - /* - * Remember! If you change the format here, change it in the else too - */ - fprintf(logf, "%c %s ", ll, t.utc().c_str()); - vfprintf(logf, format, ap); - fputc('\n', logf); - if (fflush(logf) == EOF) { - cerr_m.lock(); - cerr << "fflush() failed: " << strerror(errno) << '\n'; - cerr_m.unlock(); - } - } else { - // if they don't have an open log file, just use stderr - fprintf(stderr, "%c %s ", ll, t.utc().c_str()); - vfprintf(stderr, format, ap); - fputc('\n', stderr); - } - - va_end(ap); - logf_m.unlock(); - - return; -} - -/* - * Opens a log file for appending. If a log file is already open, then it is - * closed and the new one is opened. - * - * file - file location to open - */ -bool Logger::open(const string& file) -{ - close(); - logf_m.lock(); - logf = fopen(file.c_str(), "a"); - if (logf != NULL) { - logf_m.unlock(); - return true; - } else { - logf_m.unlock(); - cerr_m.lock(); - cerr << "fopen() failed (" << file << "): " << strerror(errno) << '\n'; - cerr_m.unlock(); - return false; - } -} - -#ifdef UNIT_TEST -// g++ -Wall -c thread.cpp -o thread.o -// g++ -Wall -c mutex.cpp -o mutex.o -// g++ -Wall -c time.cpp -o time.o -// g++ -Wall -DUNIT_TEST -c logger.cpp -o logger.o -// g++ -Wall -DUNIT_TEST logger.o mutex.o thread.o time.o -o logger -pthread -int main() -{ - Logger logger; - - logger.open("delete.me"); - logger.set_loglevel(Logger::MINOR); - logger.close(); - LWARNS("This should appear on stderr"); - logger.open("delete.me.also"); - LINFO("%s\n", "hey it works"); - LDEBUGS("This shouldn't be saved in the file."); - - return 0; -} -#endif // UNIT_TEST diff --git a/apps/enclave/libsockthread/src/logger.hpp b/apps/enclave/libsockthread/src/logger.hpp deleted file mode 100644 index 44a32e6b0c6882756bcaf03de8a654283f3dafdb..0000000000000000000000000000000000000000 --- a/apps/enclave/libsockthread/src/logger.hpp +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - * - * $Id$ - */ - -#ifndef LIBSOCKTHREAD_LOGGER_HPP -#define LIBSOCKTHREAD_LOGGER_HPP - -/* - * Some helpful macros: - * - * LDEBUG - debugging messages - * LMINOR - unimportant messages - * LINFO - informational messages - * LWARN - errors we automatically recover from - * LERROR - major, important errors - * - * These only work if your Logger object is called "logger" - */ -// Prints out the file name, function name, and line number before the message -#define LDEBUG(format, ...) logger.log(Logger::DEBUG, "%s:%s:%d:" \ - format, __FILE__, __func__, __LINE__, __VA_ARGS__) -// This is the same as above, except it doesn't accept varargs -#define LDEBUGS(str) logger.log(Logger::DEBUG, "%s:%s:%d:" \ - str, __FILE__, __func__, __LINE__); -#define LMINOR(format, ...) logger.log(Logger::MINOR, "%s:%s:%d:" \ - format, __FILE__, __func__, __LINE__, __VA_ARGS__) -#define LMINORS(str) logger.log(Logger::MINOR, "%s:%s:%d:" \ - str, __FILE__, __func__, __LINE__); -#define LINFO(format, ...) logger.log(Logger::INFO, "%s:%s:%d:" \ - format, __FILE__, __func__, __LINE__, __VA_ARGS__) -#define LINFOS(str) logger.log(Logger::INFO, "%s:%s:%d:" \ - str, __FILE__, __func__, __LINE__); -#define LWARN(format, ...) logger.log(Logger::WARN, "%s:%s:%d:" \ - format, __FILE__, __func__, __LINE__, __VA_ARGS__) -#define LWARNS(str) logger.log(Logger::WARN, "%s:%s:%d:" \ - str, __FILE__, __func__, __LINE__); -#define LERROR(format, ...) logger.log(Logger::ERROR, "%s:%s:%d:" \ - format, __FILE__, __func__, __LINE__, __VA_ARGS__) -#define LERRORS(str) logger.log(Logger::ERROR, "%s:%s:%d:" \ - str, __FILE__, __func__, __LINE__); - -namespace Libsockthread { - class Logger { - public: - enum priority_t {DEBUG = 0, MINOR = 1, INFO = 2, WARN = 3, - ERROR = 4}; - - Logger() - : logf(NULL), loglevel(Logger::DEBUG) { } - ~Logger() - { close(); } - - void close(); - void log(priority_t priority, const char* format, ...); - priority_t get_loglevel() - { loglevel_m.lock(); priority_t ll = loglevel; - loglevel_m.unlock(); return ll; } - bool open(const string& file); - void set_loglevel(priority_t priority) - { loglevel_m.lock(); loglevel = priority; loglevel_m.unlock(); } - private: - Mutex cerr_m; - FILE* logf; - Mutex logf_m; - priority_t loglevel; - Mutex loglevel_m; - }; -} - -#endif // LIBSOCKTHREAD_LOGGER_HPP diff --git a/apps/enclave/libsockthread/src/mutex.cpp b/apps/enclave/libsockthread/src/mutex.cpp deleted file mode 100644 index 9f0b0d572a645547ed3f36680718831455d2eb09..0000000000000000000000000000000000000000 --- a/apps/enclave/libsockthread/src/mutex.cpp +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - * - * $Id$ - */ - -/* - * Modelled after JThread by Jori Liesenborgs - */ - -#include "platform.hpp" -#include "mutex.hpp" -using namespace Libsockthread; - -/* - * Creates a mutex - */ -Mutex::Mutex() -{ -#ifdef WINTHREAD - mutex = CreateMutex(NULL, false, NULL); - assert(mutex != NULL); -#else - int rc = pthread_mutex_init(&mutex, NULL); - assert(rc == 0); -#endif -} - -/* - * Destroys a mutex - */ -Mutex::~Mutex() -{ -#ifdef WINTHREAD - BOOL rc = CloseHandle(mutex); - assert(rc); -#else - int rc = pthread_mutex_destroy(&mutex); - assert(rc == 0); -#endif -} - -/* - * Locks the mutex - */ -void Mutex::lock() -{ -#ifdef WINTHREAD - DWORD rc = WaitForSingleObject(mutex, INFINITE); - assert(rc != WAIT_FAILED); -#else - int rc = pthread_mutex_lock(&mutex); - assert(rc == 0); -#endif -} - -/* - * Unlocks the mutex - */ -void Mutex::unlock() -{ -#ifdef WINTHREAD - BOOL rc = ReleaseMutex(mutex); - assert(rc); -#else - int rc = pthread_mutex_unlock(&mutex); - assert(rc == 0); -#endif -} - -#ifdef UNIT_TEST -// g++ -Wall -c thread.cpp -o thread.o -// g++ -Wall -DUNIT_TEST -c mutex.cpp -o mutex.o -// g++ -Wall -DUNIT_TEST mutex.o thread.o -o mutex -pthread -#include "thread.hpp" - -Mutex widget; - -int main() -{ - class Mutex_test : public Thread - { - public: - Mutex_test(int n) - : testval(n) {} - - void* thread() - { - widget.lock(); - cout << "I got it! thread #" << testval << '\n'; - // If this works, only one thread should be able to lock the - // widget, since it is never unlocked - return 0; - } - - private: - int testval; - }; - - Mutex_test t1(1); - Mutex_test t2(2); - Mutex_test t3(3); - t1.start(); t2.start(); t3.start(); - while (true); - - return 0; -} -#endif // UNIT_TEST diff --git a/apps/enclave/libsockthread/src/mutex.hpp b/apps/enclave/libsockthread/src/mutex.hpp deleted file mode 100644 index 118ad666c21ee0630cfaf35ee6a6008d07803a7c..0000000000000000000000000000000000000000 --- a/apps/enclave/libsockthread/src/mutex.hpp +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - * - * $Id$ - */ - -/* - * Modelled after JThread by Jori Liesenborgs - */ - -#ifndef LIBSOCKTHREAD_MUTEX_HPP -#define LIBSOCKTHREAD_MUTEX_HPP - -namespace Libsockthread { - class Mutex { - public: - Mutex(); - ~Mutex(); - - void lock(); - void unlock(); - private: -#ifdef WINTHREAD - HANDLE mutex; -#else - pthread_mutex_t mutex; -#endif - }; -} - -#endif // LIBSOCKTHREAD_MUTEX_HPP diff --git a/apps/enclave/libsockthread/src/platform.hpp b/apps/enclave/libsockthread/src/platform.hpp deleted file mode 100644 index 7e8f4b03c409f011dcfbbb6c55cf3ed64c3f8b2f..0000000000000000000000000000000000000000 --- a/apps/enclave/libsockthread/src/platform.hpp +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - * - * $Id: platform.hpp,v 1.5 2004/07/22 03:54:01 mpc Exp $ - */ - -/* - * Global includes and platform configuration. This is used to compile the - * library, but is not intended for use by users of the library in their - * own programs. - */ - -#ifndef LIBSOCKTHREAD_PLATFORM_HPP -#define LIBSOCKTHREAD_PLATFORM_HPP - -/* - * Operating system - */ -#define FREEBSD 0 // FreeBSD -#define WIN32 1 // Windows -#define LINUX 2 // Linux - -#if OS == WIN32 - #define WINSOCK - #define WINTHREAD -#endif - -#ifndef WINSOCK - #include <arpa/inet.h> -#endif -#include <cassert> -#include <cstdarg> -#include <cstddef> -#include <cstdio> -#include <ctime> -#include <iostream> -#ifndef WINSOCK - #include <netdb.h> -#endif -#ifndef WINTHREAD - #include <pthread.h> -#endif -#include <stdint.h> // TODO replace with Boost's version -#include <string> -#if defined WINSOCK || defined WINTHREAD - #include <windows.h> -#endif -using namespace std; -#include "types.hpp" - -#endif // LIBSOCKTHREAD_PLATFORM_HPP diff --git a/apps/enclave/libsockthread/src/socket.cpp b/apps/enclave/libsockthread/src/socket.cpp deleted file mode 100644 index 04a620f7929332fa61b3944caa17f2f81700d8da..0000000000000000000000000000000000000000 --- a/apps/enclave/libsockthread/src/socket.cpp +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - * - * $Id: socket.cpp,v 1.8 2004/07/22 22:08:20 mpc Exp $ - */ - -#include "platform.hpp" -#include "socket_error.hpp" -#include "socket.hpp" -using namespace Libsockthread; - -/* - * Closes the socket - */ -void Socket::close() -{ - if (sock != SERR) { - if (close(sock) == -1) - ; // FIXME log the error - } - sock = SERR; -} - -/* - * Changes the address associated with the socket - */ -void Socket::set_addr(Socket_addr& addr) -{ - close(); - this->addr = addr; - setup_socket(); -} - -/* - * Prepares the socket for use - */ -void Socket::setup_socket() -{ - assert(sock == SERR); // the descriptor shouldn't be active - if (!addr.is_ready()) - throw Socket_error("Couldn't create socket: address isn't ready"); - - sock = socket(addr.get_family(), addr.get_type(), 0); - if (sock == SERR) - throw Socket_error(strerror(errno)); -} diff --git a/apps/enclave/libsockthread/src/socket.hpp b/apps/enclave/libsockthread/src/socket.hpp deleted file mode 100644 index af4a578abaadf9dc999a4f4bcde7e900ce4b20d3..0000000000000000000000000000000000000000 --- a/apps/enclave/libsockthread/src/socket.hpp +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - * - * $Id: socket.hpp,v 1.8 2004/07/22 22:08:20 mpc Exp $ - */ - -#ifndef LIBSOCKTHREAD_SOCKET_HPP -#define LIBSOCKTHREAD_SOCKET_HPP - -namespace Libsockthread { - class Socket { - public: - #ifdef WINSOCK - typedef SOCKET socket_t; - enum { SERR = SOCKET_ERROR }; - #else - typedef int socket_t; - enum { SERR = -1 }; - #endif - - Socket() - : addr(), sock(SERR) {} - Socket(Socket_addr& addr) // throws Socket_error - : addr(addr), sock(SERR) { setup_socket(); } - - void close(); - size_t read(vector<uchar_t>& buf, size_t max = 0); - size_t read_until(vector<uchar_t>& buf, uchar_t delim = '\n'); - void set_addr(Socket_addr& addr); // throws Socket_error - void set_blocking(bool blocking); - size_t write(vector<uchar_t>& buf); - void write_all(vector<uchar_t>& buf); - size_t write_until(vector<uchar_t& buf, uchar_t delim = '\n'); - private: - void setup_socket(); // throws Socket_error - - Socket_addr addr; - socket_t sock; - }; -} - -#endif // LIBSOCKTHREAD_SOCKET_HPP diff --git a/apps/enclave/libsockthread/src/socket_addr.cpp b/apps/enclave/libsockthread/src/socket_addr.cpp deleted file mode 100644 index 7f80a372983a6106059010da242419133dd1f7de..0000000000000000000000000000000000000000 --- a/apps/enclave/libsockthread/src/socket_addr.cpp +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - * - * $Id: socket_addr.cpp,v 1.4 2004/07/22 19:10:59 mpc Exp $ - */ - -#include "platform.hpp" -#include "socket_error.hpp" -#include "socket_addr.hpp" -using namespace Libsockthread; - -Socket_addr::Socket_addr(Socket_addr& rhs) -{ - delete[] ip; - if (rhs.resolved) { - if (rhs.family == AF_INET) { - ip = new char[INET_ADDRSTRLEN]; - else - ip = new char[INET6_ADDRSTRLEN]; - strcpy(ip, rhs.ip); - } - family = rhs.family; - host = rhs.host; - port = rhs.port; - resolved = rhs.resolved; - type = rhs.type; -} - -Socket_addr& Socket_addr::operator=(const Socket_addr& rhs) -{ - if (this == &rhs) // check for self-assignment: a = a - return *this; - - delete[] ip; - if (rhs.resolved) { - if (rhs.family == AF_INET) - ip = new char[INET_ADDRSTRLEN]; - else - ip = new char[INET6_ADDRSTRLEN]; - strcpy(ip, rhs.ip); - } - family = rhs.family; - host = rhs.host; - port = rhs.port; - type = rhs.type; - - return *this; -} - -/* - * Performs a DNS lookup - */ -void Socket_addr::resolve() -{ - resolved = false; // in case they already had a host name but just set a - // new one with set_host() - hostent* hent = gethostbyname(host.c_str()); - if (hent == NULL) - throw Dns_error(hstrerror(h_errno)); - assert(hent->h_addrtype == AF_INET || hent->h_addrtype == AF_INET6); - family = hent->h_addrtype; - delete[] ip; - if (family == AF_INET) { - ip = new char[INET_ADDRSTRLEN]; - else - ip = new char[INET6_ADDRSTRLEN]; - strcpy(ip, hent->h_addr_list[0]); - resolved = true; -} - -bool Socket_addr::operator==(const Socket_addr& rhs) -{ - if (rhs.family == family - && rhs.host == host - && strcmp(rhs.ip, ip) == 0 - && rhs.port == port - && rhs.resolved == resolved - && rhs.type == type) - return true; - else - return false; -} diff --git a/apps/enclave/libsockthread/src/socket_addr.hpp b/apps/enclave/libsockthread/src/socket_addr.hpp deleted file mode 100644 index 12115fc603114e608fe9319b38b5f4fe276b1ac2..0000000000000000000000000000000000000000 --- a/apps/enclave/libsockthread/src/socket_addr.hpp +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - * - * $Id: socket_addr.hpp,v 1.4 2004/07/22 19:10:59 mpc Exp $ - */ - -#ifndef LIBSOCKTHREAD_SOCKET_ADDR_HPP -#define LIBSOCKTHREAD_SOCKET_ADDR_HPP - -namespace Libsockthread { - class Socket_addr { - public: - Socket_addr() - : family(AF_INET), resolved(false) { } - Socket_addr(Socket_addr& rhs); - Socket_addr(int type, string& host, uint16_t port) - : family(AF_INET), host(host), type(type), port(port) - { resolve(); } // throws Dns_error - ~Socket_addr() - { delete[] ip; } - - int get_family() const - { return family; } - const char* get_ip() const // Warning! This can be NULL! - { return ip; } - uint16_t get_port() const - { return port; } - int get_type() const - { return type; - bool is_ready() const - { return resolved; } - Socket_addr& operator=(const Socket_addr& rhs); - bool operator==(const Socket_addr& rhs); - void set_host(string& host) // throws Dns_error - { this->host = host; resolve(); } - void set_port(uint16_t port) - { this->port = port; } - void set_type(int type) - { this->type = type; } - private: - void resolve(); // throws Dns_error - - int family; // AF_INET or AF_INET6 - string host; - char* ip; - uint16_t port; - bool resolved; - int type; // SOCK_STREAM or SOCK_DGRAM - }; -} - -#endif // LIBSOCKTHREAD_SOCKET_ADDR_HPP diff --git a/apps/enclave/libsockthread/src/socket_connector.cpp b/apps/enclave/libsockthread/src/socket_connector.cpp deleted file mode 100644 index 5039f0d26b91e69b2dade62fa0990d5a5beebfd5..0000000000000000000000000000000000000000 --- a/apps/enclave/libsockthread/src/socket_connector.cpp +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - * - * $Id$ - */ - -#include "platform.hpp" -#include "socket_connector.hpp" -using namespace Libsockthread; diff --git a/apps/enclave/libsockthread/src/socket_connector.hpp b/apps/enclave/libsockthread/src/socket_connector.hpp deleted file mode 100644 index 4e4026963d654a2c217f7e25faaa5cea1d1e9dee..0000000000000000000000000000000000000000 --- a/apps/enclave/libsockthread/src/socket_connector.hpp +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - * - * $Id$ - */ - -#ifndef LIBSOCKTHREAD_SOCKET_CONNECTOR_HPP -#define LIBSOCKTHREAD_SOCKET_CONNECTOR_HPP - -namespace Libsockthread { - class Socket_connector : public Socket { - public: - Socket_connector(Socket_addr& addr) - : Socket(addr); - - void connect(); - }; -} - -#endif // LIBSOCKTHREAD_SOCKET_CONNECTOR_HPP diff --git a/apps/enclave/libsockthread/src/socket_error.hpp b/apps/enclave/libsockthread/src/socket_error.hpp deleted file mode 100644 index b09d3d71df527267171cd9a4ccadfb9567e76bc7..0000000000000000000000000000000000000000 --- a/apps/enclave/libsockthread/src/socket_error.hpp +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - */ - -#ifndef LIBSOCKTHREAD_SOCKET_ERROR_HPP -#define LIBSOCKTHREAD_SOCKET_ERROR_HPP - -namespace Libsockthread { - class Socket_error : public runtime_error { - public: - Socket_error(const string& s) - : runtime_error(s) { } - }; - class Dns_error : public Socket_error { - public: - Dns_error(const string& s) - : Socket_error(s) { } - }; -} - -#endif // LIBSOCKTHREAD_SOCKET_ERROR_HPP diff --git a/apps/enclave/libsockthread/src/socket_listener.cpp b/apps/enclave/libsockthread/src/socket_listener.cpp deleted file mode 100644 index 15cad33899955924c96f23d92cc2754450c2c915..0000000000000000000000000000000000000000 --- a/apps/enclave/libsockthread/src/socket_listener.cpp +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - * - * $Id$ - */ - -#include "platform.hpp" -#include "socket_listener.hpp" -using namespace Libsockthread; diff --git a/apps/enclave/libsockthread/src/socket_listener.hpp b/apps/enclave/libsockthread/src/socket_listener.hpp deleted file mode 100644 index c8f1a60a6262c30ec0bd8731c03fa762083f1f06..0000000000000000000000000000000000000000 --- a/apps/enclave/libsockthread/src/socket_listener.hpp +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - * - * $Id$ - */ - -#ifndef LIBSOCKTHREAD_SOCKET_LISTENER_HPP -#define LIBSOCKTHREAD_SOCKET_LISTENER_HPP - -namespace Libsockthread { - class Socket_listener { - public: - Socket_listener(Socket_addr& addr) - : Socket(addr); - - void accept(); - void listen(); - }; -} - -#endif // LIBSOCKTHREAD_SOCKET_LISTENER_HPP diff --git a/apps/enclave/libsockthread/src/strl.c b/apps/enclave/libsockthread/src/strl.c deleted file mode 100644 index 7958a8dbe6f1ce26410d18308a072d6f88bf223b..0000000000000000000000000000000000000000 --- a/apps/enclave/libsockthread/src/strl.c +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com> - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - * $Id$ - */ - -#include <stddef.h> -#include <string.h> - -/* - * Appends src to string dst of size siz (unlike strncat, siz is the - * full size of dst, not space left). At most siz-1 characters - * will be copied. Always NUL terminates (unless siz <= strlen(dst)). - * Returns strlen(src) + MIN(siz, strlen(initial dst)). - * If retval >= siz, truncation occurred. - */ -size_t -strlcat(char *dst, const char *src, size_t siz) -{ - register char *d = dst; - register const char *s = src; - register size_t n = siz; - size_t dlen; - - /* Find the end of dst and adjust bytes left but don't go past end */ - while (n-- != 0 && *d != '\0') - d++; - dlen = d - dst; - n = siz - dlen; - - if (n == 0) - return(dlen + strlen(s)); - while (*s != '\0') { - if (n != 1) { - *d++ = *s; - n--; - } - s++; - } - *d = '\0'; - - return(dlen + (s - src)); /* count does not include NUL */ -} - -/* - * Copy src to string dst of size siz. At most siz-1 characters - * will be copied. Always NUL terminates (unless siz == 0). - * Returns strlen(src); if retval >= siz, truncation occurred. - */ -size_t -strlcpy(char *dst, const char *src, size_t siz) -{ - register char *d = dst; - register const char *s = src; - register size_t n = siz; - - /* Copy as many bytes as will fit */ - if (n != 0 && --n != 0) { - do { - if ((*d++ = *s++) == 0) - break; - } while (--n != 0); - } - - /* Not enough room in dst, add NUL and traverse rest of src */ - if (n == 0) { - if (siz != 0) - *d = '\0'; /* NUL-terminate dst */ - while (*s++) - ; - } - - return(s - src - 1); /* count does not include NUL */ -} diff --git a/apps/enclave/libsockthread/src/strl.h b/apps/enclave/libsockthread/src/strl.h deleted file mode 100644 index 879d20f33c745b0ee45de851fa80874a6ff14615..0000000000000000000000000000000000000000 --- a/apps/enclave/libsockthread/src/strl.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - * - * $Id$ - */ - -/* - * Note: The strl.c file retains its original license (at the top of strl.c) - */ - -#ifndef LIBSOCKTHREAD_STRL_H -#define LIBSOCKTHREAD_STRL_H -#ifdef __cplusplus -extern "C" { -#endif - -extern size_t strlcat(char *dst, const char *src, size_t siz); -extern size_t strlcpy(char *dst, const char *src, size_t siz); - -#ifdef __cplusplus -} -#endif -#endif /* LIBSOCKTHREAD_STRL_H */ diff --git a/apps/enclave/libsockthread/src/thread.cpp b/apps/enclave/libsockthread/src/thread.cpp deleted file mode 100644 index a1367f442ccb0eb89bf37e9b8f82c01a3275b3cc..0000000000000000000000000000000000000000 --- a/apps/enclave/libsockthread/src/thread.cpp +++ /dev/null @@ -1,194 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - * - * $Id$ - */ - -/* - * Modelled after JThread by Jori Liesenborgs - */ - -#include "platform.hpp" -#include "mutex.hpp" -#include "thread.hpp" -using namespace Libsockthread; - -/* - * Gets the return value of a finished thread - */ -void* Thread::get_retval() -{ - void* val; - running_m.lock(); - if (running) - val = NULL; - else - val = retval; - running_m.unlock(); - return val; -} - -/* - * Checks whether the thread is running - */ -bool Thread::is_running() -{ - running_m.lock(); - bool r = running; - running_m.unlock(); - return r; -} - -/* - * Stops the thread - * Generally NOT a good idea - */ -void Thread::kill() -{ - running_m.lock(); -#ifndef NDEBUG - // make sure it as actually running first - if (!running) { - running_m.unlock(); - assert(false); - } -#endif -#ifdef WINTHREAD - BOOL rc = TerminateThread(handle, NULL); - assert(rc); -#else - int rc = pthread_cancel(id); - assert(rc == 0); -#endif - running = false; - running_m.unlock(); -} - -/* - * Starts the thread - */ -void Thread::start() -{ -#ifndef NDEBUG - // check whether the thread is already running - running_m.lock(); - assert(!running); - running_m.unlock(); -#endif - continue_m.lock(); -#ifdef WINTHREAD - handle = CreateThread(NULL, 0, &the_thread, this, 0, &id); - assert(handle != NULL); -#else - int rc = pthread_create(&id, 0, &the_thread, this); - assert(rc == 0); -#endif - // Wait until `running' is set - running_m.lock(); - while (!running) { - running_m.unlock(); - running_m.lock(); - } - running_m.unlock(); - continue_m.unlock(); -} - -/* - * Wrapper for the thread - */ -void* Thread::the_thread(void *param) -{ - Thread* t = static_cast<Thread*>(param); - t->running_m.lock(); - t->running = true; - t->running_m.unlock(); - // wait until we can continue - t->continue_m.lock(); - t->continue_m.unlock(); - void* ret = t->thread(); - t->running_m.lock(); - t->running = false; - t->retval = ret; - t->running_m.unlock(); - return 0; -} - -#ifdef UNIT_TEST -// g++ -Wall -c mutex.cpp -o mutex.o -// g++ -Wall -DUNIT_TEST -c thread.cpp -o thread.o -// g++ -Wall -DUNIT_TEST mutex.o thread.o -o thread -pthread -int main() -{ - class Thread_test : public Thread - { - public: - Thread_test(int testval) - : testval(testval) { } - - int get_testval() - { - testval_m.lock(); - int rc = testval; - testval_m.unlock(); - return rc; - } - void *thread() - { - // just do something - while (true) { - testval_m.lock(); - ++testval; - testval_m.unlock(); - } - return 0; - } - - private: - int testval; - Mutex testval_m; - }; - - Thread_test t1(1); - t1.start(); - Thread_test t2(1000000); - t2.start(); - Thread_test t3(-1000000); - t3.start(); - while (true) { - if (t1.is_running()) - cout << "t1 is running..." << t1.get_testval() << '\n'; - if (t2.is_running()) - cout << "t2 is running..." << t2.get_testval() << '\n'; - if (t3.is_running()) - cout << "t3 is running..." << t3.get_testval() << '\n'; - } - - return 0; -} -#endif // UNIT_TEST diff --git a/apps/enclave/libsockthread/src/thread.hpp b/apps/enclave/libsockthread/src/thread.hpp deleted file mode 100644 index 50e51785c9798a68e7066ed2fe83fbb3858a86ef..0000000000000000000000000000000000000000 --- a/apps/enclave/libsockthread/src/thread.hpp +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - * - * $Id$ - */ - -/* - * Modelled after JThread by Jori Liesenborgs - */ - -#ifndef LIBSOCKTHREAD_THREAD_HPP -#define LIBSOCKTHREAD_THREAD_HPP - -namespace Libsockthread { - class Thread { - public: - Thread() - : retval(NULL), running(false) { } - virtual ~Thread() - { kill(); } - - void* get_retval(); - bool is_running(); - void kill(); - void start(); - virtual void* thread() = 0; - private: -#ifdef WINTHREAD - static DWORD WINAPI the_thread(void* param); - HANDLE handle; - DWORD id; -#else - static void* the_thread(void* param); - pthread_t id; -#endif - Mutex continue_m; - void* retval; - bool running; - Mutex running_m; - }; -} - -#endif // LIBSOCKTHREAD_THREAD_HPP diff --git a/apps/enclave/libsockthread/src/time.cpp b/apps/enclave/libsockthread/src/time.cpp deleted file mode 100644 index daba0f2d85579faf58f813dc0c0877e3b22e0766..0000000000000000000000000000000000000000 --- a/apps/enclave/libsockthread/src/time.cpp +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - * - * $Id$ - */ - -#include "platform.hpp" -#include "time.hpp" -using namespace Libsockthread; - -/* - * Converts the time to an ISO 8601 standard date and time - * Example: 2004-07-01T19:03:47Z - */ -string& Time::utc() -{ - struct tm* tm = gmtime(&unixtime); - char t[21]; - strftime(t, sizeof t, "%Y-%m-%dT%H:%M:%SZ", tm); - return formatted = t; -} - -/* - * Converts the time to an ISO 8601 standard date - * Example: 2004-07-01Z - */ -string& Time::utc_date() -{ - struct tm* tm = gmtime(&unixtime); - char t[12]; - strftime(t, sizeof t, "%Y-%m-%dZ", tm); - return formatted = t; -} - -/* - * Converts the time to an ISO 8601 standard time - * Example: 19:03:47Z - */ -string& Time::utc_time() -{ - struct tm* tm = gmtime(&unixtime); - char t[10]; - strftime(t, sizeof t, "%H:%M:%SZ", tm); - return formatted = t; -} - -#ifdef UNIT_TEST -// g++ -Wall -DUNIT_TEST time.cpp -o time -int main() -{ - Time t; - cout << "Current date and time is " << t.utc() << '\n'; - cout << "Current date is " << t.utc_date() << '\n'; - cout << "Current time is " << t.utc_time() << '\n'; - cout << "Formatted time is " << t.get_formatted() << " (should be the same)\n"; - - return 0; -} -#endif // UNIT_TEST diff --git a/apps/enclave/libsockthread/src/time.hpp b/apps/enclave/libsockthread/src/time.hpp deleted file mode 100644 index d537c9a38d54c055fbc58c071828803d81011cc6..0000000000000000000000000000000000000000 --- a/apps/enclave/libsockthread/src/time.hpp +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - * - * $Id$ - */ - -#ifndef LIBSOCKTHREAD_TIME_HPP -#define LIBSOCKTHREAD_TIME_HPP - -namespace Libsockthread { - class Time { - public: - Time() - { now(); } - - string& get_formatted() - { return formatted; } - void now() - { unixtime = time(0); } - string& utc(); - string& utc_date(); - string& utc_time(); - private: - string formatted; - time_t unixtime; - }; -} - -#endif // LIBSOCKTHREAD_TIME_HPP diff --git a/apps/enclave/libsockthread/src/types.hpp b/apps/enclave/libsockthread/src/types.hpp deleted file mode 100644 index 5a37464503de778b8755b5cc6e98db9dc7f254fc..0000000000000000000000000000000000000000 --- a/apps/enclave/libsockthread/src/types.hpp +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - * - * $Id$ - */ - -#ifndef LIBSOCKTHREAD_TYPES_HPP -#define LIBSOCKTHREAD_TYPES_HPP - -/* - * Shorten some standard variable types - */ -typedef signed char schar_t; -typedef unsigned char uchar_t; -typedef unsigned int uint_t; -typedef unsigned long ulong_t; -typedef unsigned short ushort_t; - -#endif // LIBSOCKTHREAD_TYPES_HPP diff --git a/apps/enclave/src/bigint.cpp b/apps/enclave/src/bigint.cpp deleted file mode 100644 index df0328b0db436ac5499f751bbf8ec4256652b9e4..0000000000000000000000000000000000000000 --- a/apps/enclave/src/bigint.cpp +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - */ - -#include "platform.hpp" -#include "bigint.hpp" - -/******************************************************************************/ -// Note: All the const_casts below are necessary because libtomcrypt doesn't // -// have its arguments as const, even when they are not changed // -/******************************************************************************/ - -Bigint::Bigint(const Bigint& bigint) -{ - init(); - copyover_mp_int(bigint.mpi); -} - -Bigint::Bigint(const uchar_t* data, size_t size) -{ - init(); - import_uraw(data, size); -} - -Bigint::Bigint(uint16_t i) -{ - init(); - i = htons(i); - import_uraw(reinterpret_cast<uchar_t*>(&i), 2); -} - -Bigint::Bigint(uint32_t i) -{ - init(); - i = htonl(i); - import_uraw(reinterpret_cast<uchar_t*>(&i), 4); -} - -/* - * Replaces our current mp_int with another one - * (just a wrapper for mp_copy) - */ -void Bigint::copyover_mp_int(const mp_int& i) -{ - int rc = mp_copy(const_cast<mp_int*>(&i), &mpi); - assert(rc == MP_OKAY); -} - -/* - * Saves a Bigint to a raw unsigned big-endian integer - * Note that the result must be freed with delete[] - * - * size - filled with the size of the output - * - * Returns: binary data - */ -uchar_t* Bigint::export_uraw(size_t& size) const -{ - uchar_t* out; - size = mp_unsigned_bin_size(const_cast<mp_int*>(&mpi)); - if (size != 0) { - out = new uchar_t[size]; - int rc = mp_to_unsigned_bin(const_cast<mp_int*>(&mpi), out); - assert(rc == MP_OKAY); - } else { // size == 0 - size = 1; - out = new uchar_t[1]; - out[0] = 0; - } - return out; -} - -/* - * Loads a raw unsigned big-endian integer into Bigint - * - * data - binary data - * size - size of data - */ -void Bigint::import_uraw(const uchar_t* data, size_t size) -{ - uchar_t tmp[size]; // mp_read_unsigned_bin() arg 2 is not const - memcpy(tmp, data, sizeof tmp); // I'm not taking any chances - int rc = mp_read_unsigned_bin(&mpi, tmp, sizeof tmp); - assert(rc == MP_OKAY); -} - -/* - * Initialises the object - */ -void Bigint::init(void) -{ - int rc = mp_init(&mpi); - assert(rc == MP_OKAY); -} - -bool Bigint::operator<(const Bigint& rhs) const -{ - int rc = mp_cmp(const_cast<mp_int*>(&mpi), const_cast<mp_int*>(&rhs.mpi)); - if (rc == MP_LT) - return true; - else - return false; -} - -Bigint& Bigint::operator=(const Bigint& rhs) -{ - if (this != &rhs) // check for self-assignment: a = a - copyover_mp_int(rhs.mpi); - return *this; -} - -bool Bigint::operator==(const Bigint& rhs) const -{ - int rc = mp_cmp(const_cast<mp_int*>(&mpi), const_cast<mp_int*>(&rhs.mpi)); - if (rc == MP_EQ) - return true; - else - return false; -} - -bool Bigint::operator>(const Bigint& rhs) const -{ - int rc = mp_cmp(const_cast<mp_int*>(&mpi), const_cast<mp_int*>(&rhs.mpi)); - if (rc == MP_GT) - return true; - else - return false; -} - -/* - * Xors another Bigint with this Bigint and puts the result in Bigint `result'. - * We can't name it "xor" because that word is reserved in C++ (see Appendex C, - * section 3.1 in TC++PL). - * - * rhs - the bigint to xor with - * result - will be filled with the result of the xor - */ -void Bigint::x_or(const Bigint& rhs, Bigint& result) const -{ - int rc = mp_xor(const_cast<mp_int*>(&mpi), const_cast<mp_int*>(&rhs.mpi), - &result.mpi); - assert(rc == MP_OKAY); -} diff --git a/apps/enclave/src/bigint.hpp b/apps/enclave/src/bigint.hpp deleted file mode 100644 index 01694104eb7b7e65fc8b979bbb36123c688488c5..0000000000000000000000000000000000000000 --- a/apps/enclave/src/bigint.hpp +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - */ - -#ifndef BIGINT_HPP -#define BIGINT_HPP - -class Bigint { - public: - Bigint(void) { init(); } - Bigint(const Bigint& bigint); - Bigint(const uchar_t* data, size_t size); - Bigint(uint16_t i); - Bigint(uint32_t i); - ~Bigint(void) { mp_clear(&mpi); } - - uchar_t* export_uraw(size_t& size) const; - const mp_int& get_mp_int(void) const { return mpi; } - void import_uraw(const uchar_t* data, size_t size); - bool operator<(const Bigint& rhs) const; - Bigint& operator=(const Bigint& rhs); - bool operator==(const Bigint& rhs) const; - bool operator>(const Bigint& rhs) const; - void x_or(const Bigint& rhs, Bigint& result) const; - - protected: - mp_int mpi; - - private: - void copyover_mp_int(const mp_int& i); - void init(void); -}; - -#endif // BIGINT_HPP diff --git a/apps/enclave/src/chk.cpp b/apps/enclave/src/chk.cpp deleted file mode 100644 index fd8500d539fe4df0a8191d008ef026d3bf86621f..0000000000000000000000000000000000000000 --- a/apps/enclave/src/chk.cpp +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - */ - -#include "platform.hpp" -#include "chk.hpp" - -Chk::Chk(const uchar_t* plaintext, size_t size, const string& mime_type) - : data_size(size), mime_type(mime_type) -{ - encrypt(plaintext); -} - -void Chk::encrypt(const uchar_t *pt) -{ - int rc = register_cipher(&twofish_desc); - assert(rc != -1); - - uchar_t key[CRYPT_KEY_SIZE], iv[CRYPT_BLOCK_SIZE]; - prng->get_bytes(key, CRYPT_KEY_SIZE); - prng->get_bytes(iv, CRYPT_BLOCK_SIZE); - - symmetric_CTR ctr; - rc = ctr_start(find_cipher("twofish"), iv, key, CRYPT_KEY_SIZE, 0, &ctr); - assert(rc == CRYPT_OK); - - ct = new uchar_t[data_size]; - rc = ctr_encrypt(pt, ct, data_size, &ctr); - assert(rc == CRYPT_OK); -} diff --git a/apps/enclave/src/chk.hpp b/apps/enclave/src/chk.hpp deleted file mode 100644 index c6f2cfca11b2e96dff630a8228b1ab3aded274d8..0000000000000000000000000000000000000000 --- a/apps/enclave/src/chk.hpp +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - */ - -#ifndef CHK_HPP -#define CHK_HPP - -class Chk { - public: - //Chk(const uchar_t* cypertext, size_t size); - Chk(const uchar_t* plaintext, size_t size, const string& mime_type); - ~Chk(void) { delete[] ct; } - - private: - static const size_t CRYPT_BLOCK_SIZE = 16; - static const size_t CRYPT_KEY_SIZE = 32; - - void encrypt(const uchar_t *pt); - - uchar_t* ct; // cyphertext - const size_t data_size; - const string& mime_type; // I hate mimes. -}; - -#endif // CHK_HPP diff --git a/apps/enclave/src/config.cpp b/apps/enclave/src/config.cpp deleted file mode 100644 index d5a1f51b67a6d4a6325c2f10e8205315fdc83a03..0000000000000000000000000000000000000000 --- a/apps/enclave/src/config.cpp +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - */ - -#include "platform.hpp" -#include "bigint.hpp" - -Config::Config(const string& file) - : file(file) -{ - set_defaults(); - parse(); - configf.close(); -} - -/* - * Looks up a configuration option in the table and returns a constant value. - * This is the same as get_property() except the value returned is a constant. - * - * key - key to lookup - * - * Returns the value associated with the key - */ -const string& Config::get_cproperty(const string& key) const -{ - for (cfgmap_ci i = cfgmap.begin(); i != cfgmap.end(); i++) { - const string s = i->first; - if (s == key) - return i->second; - } - LERROR << "Tried to lookup an invalid property: " << key << '\n'; - assert(false); - // this should never occur, it's just to silence a compiler warning - string* s = new string; - return *s; -} - -/* - * Gets a property as an integer (they are all stored as strings) - * - * key - key to lookup - * - * Returns an integer of the value associated with the key - */ -int Config::get_iproperty(const string& key) const -{ - for (cfgmap_ci i = cfgmap.begin(); i != cfgmap.end(); i++) { - const string s = i->first; - if (s == key) - return atoi(i->second.c_str()); - } - LERROR << "Tried to lookup an invalid property: " << key << '\n'; - assert(false); - return 0; -} - -/* - * Looks up a configuration option in the table and returns the value - * - * key - key to lookup - * - * Returns the value associated with the key - */ -string& Config::get_property(const string& key) -{ - for (cfgmap_i i = cfgmap.begin(); i != cfgmap.end(); i++) { - const string s = i->first; - if (s == key) - return i->second; - } - LERROR << "Tried to lookup an invalid property: " << key << '\n'; - assert(false); - // this should never occur, it's just to silence a compiler warning - string* s = new string; - return *s; -} - -/* - * Parses the configuration file, replacing default values with user defined - * values - */ -void Config::parse(void) -{ - configf.open(file.c_str()); - if (!configf) { - cerr << "Error opening configuration file (" << file.c_str() << ")\n"; - throw runtime_error("Error opening configuration file"); - } - size_t line = 0; - string s; - for (getline(configf, s); configf; getline(configf, s)) { - line++; - if (s.size() == 0 || s[0] == '#') // blank line or comment - continue; - size_t eqpos = s.find("="); - if (eqpos == string::npos) { - cerr << "Error parsing line #" << line << " in " << file << ": " - << s << '\n'; - continue; - } - string key = s.substr(0, eqpos); - string value = s.substr(eqpos + 1); - //cout << "Inserting key = " << key << " value = " << value << '\n'; - cfgmap.erase(key); // erase the default value created by set_defaults() - cfgmap.insert(make_pair(key, value)); - } -} - -/* - * If you (the programmer) add something to the config file you should also add - * it here, and vice versa - */ -void Config::set_defaults(void) -{ - cfgmap.insert(make_pair("samhost", "localhost")); - cfgmap.insert(make_pair("samport", "7656")); - cfgmap.insert(make_pair("samname", "enclave")); - cfgmap.insert(make_pair("tunneldepth", "2")); - cfgmap.insert(make_pair("references", "cfg/peers.ref")); - cfgmap.insert(make_pair("loglevel", "1")); - cfgmap.insert(make_pair("logfile", "log/enclave.log")); -} diff --git a/apps/enclave/src/config.hpp b/apps/enclave/src/config.hpp deleted file mode 100644 index 278db650b445f9bd9a75ddd7bb2875252effab4b..0000000000000000000000000000000000000000 --- a/apps/enclave/src/config.hpp +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - */ - -#ifndef CONFIG_HPP -#define CONFIG_HPP - -class Config { - public: - Config(const string& file); - - const string& get_cproperty(const string& key) const; - int get_iproperty(const string& key) const; - string& get_property(const string& key); - - private: - typedef map<const string, string>::const_iterator cfgmap_ci; - typedef map<const string, string>::iterator cfgmap_i; - - void parse(void); - void set_defaults(void); - - ifstream configf; - const string file; - map<const string, string> cfgmap; -}; - -#endif // CONFIG_HPP diff --git a/apps/enclave/src/logger.cpp b/apps/enclave/src/logger.cpp deleted file mode 100644 index a0491f18c6b86fdd141af4f66f6414d4e2ab8e32..0000000000000000000000000000000000000000 --- a/apps/enclave/src/logger.cpp +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - */ - -#include "platform.hpp" -#include "logger.hpp" - -Logger::Logger(const string& file) - : file(file) -{ - set_pri(debug); - set_loglevel(static_cast<priority_t>(config->get_iproperty("loglevel"))); - logf.open(file.c_str(), ios::app); - if (!logf) { - cerr << "Error opening log file (" << file.c_str() << ")\n"; - throw runtime_error("Error opening log file"); - } -} - -#ifdef WIN_STRERROR -/* - * strerror() for primitive operating systems - */ -TCHAR* win_strerror(TCHAR* str, size_t size) -{ - LPVOID lpMsgBuf; - DWORD dw = GetLastError(); - FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, - NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpMsgBuf, - 0, NULL); - snprintf(str, size, "%s", lpMsgBuf); - LocalFree(lpMsgBuf); - return str; -} -#endif diff --git a/apps/enclave/src/logger.hpp b/apps/enclave/src/logger.hpp deleted file mode 100644 index 9ed809241f698a808ddec57f2ebfdd5b21e631f3..0000000000000000000000000000000000000000 --- a/apps/enclave/src/logger.hpp +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - */ - -#ifndef LOGGER_HPP -#define LOGGER_HPP - -/* - * LDEBUG - debugging messages - * LMINOR - unimportant messages - * LINFO - informational messages - * LWARN - errors we automatically recover from - * LERROR - major, important errors - */ -#if VERBOSE_LOGS - #define LDEBUG logger->set_pri(Logger::debug); (*logger) << "(D)" << __FILE__ << ':' << __LINE__ << ':' << __func__ << ": " - #define LMINOR logger->set_pri(Logger::minor); (*logger) << "(M)" << __FILE__ << ':' << __LINE__ << ':' << __func__ << ": " - #define LINFO logger->set_pri(Logger::info); (*logger) << "(I)" << __FILE__ << ':' << __LINE__ << ':' << __func__ << ": " - #define LWARN logger->set_pri(Logger::warn); (*logger) << "(W)" << __FILE__ << ':' << __LINE__ << ':' << __func__ << ": " - #define LERROR logger->set_pri(Logger::error); (*logger) << "(E)" << __FILE__ << ':' << __LINE__ << ':' << __func__ << ": " -#else - #define LDEBUG logger->set_pri(Logger::debug); (*logger) << "(D)" - #define LMINOR logger->set_pri(Logger::minor); (*logger) << "(M)" - #define LINFO logger->set_pri(Logger::info); (*logger) << "(I)" - #define LWARN logger->set_pri(Logger::warn); (*logger) << "(W)" - #define LERROR logger->set_pri(Logger::error); (*logger) << "(E)" -#endif - -class Logger { - public: - typedef enum {debug = 0, minor = 1, info = 2, warn = 3, error = 4} - priority_t; - - Logger(const string& file); - - void flush(void) { logf.flush(); } - priority_t get_loglevel(void) const { return loglevel; } - void set_loglevel(priority_t priority) { loglevel = priority; } - Logger& operator<<(char c) - { if (priority >= loglevel) { logf << c; flush(); } return *this; } - Logger& operator<<(const char* c) - { if (priority >= loglevel) { logf << c; flush(); } return *this; } - Logger& operator<<(int i) - { if (priority >= loglevel) { logf << i; flush(); } return *this; } - Logger& operator<<(const string& s) - { if (priority >= loglevel) { logf << s; flush(); } return *this; } - Logger& operator<<(unsigned int i) - { if (priority >= loglevel) { logf << i; flush(); } return *this; } - void set_pri(priority_t priority) { this->priority = priority; } - - private: - priority_t priority; // importance of the following log message(s) - string file; - priority_t loglevel; // write log messsages at or above this priority - ofstream logf; -}; - -#ifdef WIN_STRERROR -TCHAR* win_strerror(TCHAR* str, size_t size); -#endif - -#endif // LOGGER_HPP diff --git a/apps/enclave/src/main.cpp b/apps/enclave/src/main.cpp deleted file mode 100644 index b4fea4a4d7862d2519378e1abe51463a50d37864..0000000000000000000000000000000000000000 --- a/apps/enclave/src/main.cpp +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - */ - -#include "platform.hpp" -#include "main.hpp" - -Config *config; // Configuration options -Logger *logger; // Logging mechanism -Random *prng; // Random number generator -Sam *sam; // SAM connection - -int main(int argc, char* argv[]) -{ - if (argc != 2) { // put some getopts stuff in here later - cerr << "Please specify the configuration file location.\n" \ - "e.g. 'bin/enclave cfg/enclave.cfg'\n"; - return 1; - } - - try { - config = new Config(argv[1]); - } catch (const runtime_error& x) { - return 0; - } - logger = new Logger(config->get_cproperty("logfile")); - LINFO << "Enclave DHT - Built on " << __DATE__ << ' ' << __TIME__ << '\n'; - prng = new Random; - try { - sam = new Sam(config->get_cproperty("samhost"), - config->get_iproperty("samport"), config->get_cproperty("samname"), - config->get_iproperty("tunneldepth")); - } catch (const Sam_error& x) { - LERROR << "SAM error: " << x.what() << '\n'; - cerr << "SAM error: " << x.what() << '\n'; - if (x.code() == SAM_SOCKET_ERROR) { - LERROR << "Check whether you have specified the correct SAM host " \ - "and port number, and that I2P is running.\n"; - cerr << "Check whether you have specified the correct SAM host " \ - "and port number, and that\nI2P is running.\n"; - } - return 1; - } - sam->naming_lookup(); - while (sam->get_my_dest() == "") - sam->read_buffer(); // wait until we get our own dest back from lookup - - sam->peers->advertise_self(); - - while (true) - sam->read_buffer(); - - delete sam; - delete prng; - delete logger; - delete config; - return 0; -} diff --git a/apps/enclave/src/main.hpp b/apps/enclave/src/main.hpp deleted file mode 100644 index 48c9244e1f778ba2a80ad6a3410be5b9408c9635..0000000000000000000000000000000000000000 --- a/apps/enclave/src/main.hpp +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - */ - -#ifndef MAIN_HPP -#define MAIN_HPP - -// intentionally left blank - -#endif // MAIN_HPP diff --git a/apps/enclave/src/near_peer.hpp b/apps/enclave/src/near_peer.hpp deleted file mode 100644 index 807726b3d53a443fd887860b5277775b0e4bddc1..0000000000000000000000000000000000000000 --- a/apps/enclave/src/near_peer.hpp +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - */ - -#ifndef NEAR_PEER_HPP -#define NEAR_PEER_HPP - -// -// Used for finding the closest peers to a sha1 -// - -class Near_peer { - public: - Near_peer(const Bigint& distance, Peer* peer) - : distance(distance), peer(peer) {} - - Peer* get_peer(void) const { return peer; } - bool operator<(const Near_peer& rhs) const - { if (distance < rhs.distance) return true; else return false; } - - protected: - const Bigint distance; - - private: - Peer* peer; -}; - -#endif // NEAR_PEER_HPP diff --git a/apps/enclave/src/peer.hpp b/apps/enclave/src/peer.hpp deleted file mode 100644 index 939f7d7b87bedb050a6aeb8d7e9c90c5e16597b1..0000000000000000000000000000000000000000 --- a/apps/enclave/src/peer.hpp +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - */ - -#ifndef PEER_HPP -#define PEER_HPP - -class Peer { - public: - Peer(const string& dest, const Sha1& kaddr) - : dest(dest), kaddr(kaddr), lag(-1) {} - - const string& get_b64kaddr(void) const { return kaddr.b64hash(); } - const uchar_t* get_binkaddr(void) const { return kaddr.binhash(); } - const string& get_dest(void) const { return dest; } - int get_lag(void) const { return lag; } - const string get_sdest(void) const { return dest.substr(0, 8); } - void set_lag(int lag) { this->lag = lag; } - - private: - const string dest; - const Sha1 kaddr; - int lag; // if -1, then it is unknown -}; - -#endif // PEER_HPP diff --git a/apps/enclave/src/peers.cpp b/apps/enclave/src/peers.cpp deleted file mode 100644 index 300a254e8323b6f07c80d99e8afcee625e84782b..0000000000000000000000000000000000000000 --- a/apps/enclave/src/peers.cpp +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - */ - -#include "platform.hpp" -#include "near_peer.hpp" -#include "rpc.hpp" -#include "sha1.hpp" -#include "peers.hpp" - -/* - * Inform other peers of our existence and collect the destination addresses of - * nearby peers - */ -void Peers::advertise_self(void) -{ - list<Near_peer> near_peers; - get_nearest(sam->get_my_sha1(), PAR_RPCS, near_peers); - for (list<Near_peer>::const_iterator i = near_peers.begin(); - i != near_peers.end(); i++) { - Rpc rpc(i->get_peer()); - rpc.find_peers(sam->get_my_sha1()); - } -} - -/* - * Find the `n' nearest peers by xoring a sha1 with a kaddr - * - * sha1 - sha1 to find nearness to - * n - number of peers to find - * near_peers - a list to put the found peers in - */ -void Peers::get_nearest(const Sha1& sha1, size_t n, list<Near_peer>& near_peers) -{ - near_peers.clear(); // prevents duplicate peers in the list - for (peersmap_i i = peersmap.begin(); i != peersmap.end(); i++) { - const Sha1& kaddr = i->first; - Bigint distance; - sha1.x_or(kaddr, distance); - Near_peer np(distance, &(i->second)); - near_peers.insert(near_peers.end(), np); - } - near_peers.sort(); - while (near_peers.size() > n) - near_peers.pop_back(); -} - -Peer* Peers::get_peer_by_dest(const sam_pubkey_t dest) -{ - const string s = dest; - return get_peer_by_dest(s); -} - -/* - * Gets a peer by its base 64 destination address - * - * dest - destination - * - * Returns: pointer to peer, or 0 if the peer wasn't found - */ -Peer* Peers::get_peer_by_dest(const string& dest) -{ - for (peersmap_i i = peersmap.begin(); i != peersmap.end(); i++) { - Peer& tmp = i->second; - if (tmp.get_dest() == dest) - return &(i->second); - } - return 0; -} - -/* - * Gets a peer by its Kademlia address - * - * kaddr - Kademlia adddress - * - * Returns: pointer to peer, or 0 if the peer wasn't found - */ -Peer* Peers::get_peer_by_kaddr(const Sha1& kaddr) -{ - peersmap_i i = peersmap.find(kaddr); - if (i != peersmap.end()) - return &(i->second); - else - return 0; -} - -/* - * Loads peer addresses from a file - */ -void Peers::load(void) -{ - string dest; - - ifstream peersf(file.c_str()); - if (!peersf) { - LERROR << "Couldn't load peers reference file (" << file.c_str() - << ")\n"; - if (peersmap.size() > 0) - return; - else - throw runtime_error("No peer references in memory"); - } - - for (getline(peersf, dest); peersf; getline(peersf, dest)) - new_peer(dest); - - if (peersmap.size() > 0) { - LMINOR << peersmap.size() << " peer references in memory\n"; - } else - throw runtime_error("No peer references in memory"); -} - -Peer* Peers::new_peer(const sam_pubkey_t dest) -{ - const string s = dest; - return new_peer(s); -} - -/* - * Adds a newly discovered peer to the peers map - * - * dest - destination address of the peer - * - * Returns: pointer to the peer - */ -Peer* Peers::new_peer(const string& dest) -{ - // Check the destination address - if (!sam->valid_dest(dest)) { - LWARN << "Bad format in peer reference: " << dest.substr(0, 8) << '\n'; - return 0; - } - // Never add our own peer to the peers we can connect to - if (dest == sam->get_my_dest()) { - LDEBUG << "Not adding my own peer reference: " << dest.substr(0, 8) - << '\n'; - return 0; - } - // Be sure that the peer is not already known to us - Peer *peer = get_peer_by_dest(dest); - if (peer != 0) { - LDEBUG << "Redundant peer reference: " << dest.substr(0, 8) << '\n'; - return peer; - } - - // Tests passed, add it - Sha1 sha1(dest); - pair<peersmap_i, bool> p = peersmap.insert( - make_pair(sha1, Peer(dest, sha1))); - assert(p.second); - LMINOR << "New peer reference: " << dest.substr(0, 8) - << " (Kaddr: " << sha1.b64hash() << ")\n"; - peer = &(p.first->second); - return peer; -} - -/* - * Saves peer destinations to a file - * - * file - the file to save to - */ -void Peers::save(void) -{ - ofstream peersf(file.c_str()); - if (!peersf) { - LERROR << "Error opening peers reference file (" << file.c_str() - << ")\n"; - return; - } - - LDEBUG << "Saving " << peersmap.size() + 1 << " peer references\n"; - peersf << sam->get_my_dest() << '\n'; - for (peersmap_ci i = peersmap.begin(); i != peersmap.end(); i++) { - const Peer& tmp = i->second; - peersf << tmp.get_dest() << '\n'; - } -} - -/* - * Stores data on some peers - * - * sha1 - the sha1 value for the data - * data - the data - */ -void Peers::store(const Sha1& sha1) -{ - list<Near_peer> near_peers; - get_nearest(sam->get_my_sha1(), PAR_RPCS, near_peers); - for (list<Near_peer>::const_iterator i = near_peers.begin(); - i != near_peers.end(); i++) { - Rpc rpc(i->get_peer()); - rpc.store(sha1); - } -} diff --git a/apps/enclave/src/peers.hpp b/apps/enclave/src/peers.hpp deleted file mode 100644 index bf7cda389896d4595a71ed8bb898ec2e6167dde5..0000000000000000000000000000000000000000 --- a/apps/enclave/src/peers.hpp +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - */ - -#ifndef PEERS_HPP -#define PEERS_HPP - -class Peers { - public: - static const int PAR_RPCS = 3; // The number of parallel RPCs to send - static const int RET_REFS = 20; // The number of peer refs to return on - // failed requests - Peers(const string& file) - : file(file) - { load(); } - ~Peers(void) { save(); } - - void advertise_self(void); - void get_nearest(const Sha1& sha1, size_t n, - list<Near_peer>& near_peers); - Peer* get_peer_by_dest(const sam_pubkey_t dest); - Peer* get_peer_by_dest(const string& dest); - Peer* get_peer_by_kaddr(const Sha1& kaddr); - Peer* new_peer(const sam_pubkey_t dest); - Peer* new_peer(const string& dest); - void store(const Sha1& sha1); - - private: - typedef map<const Sha1, Peer>::const_iterator peersmap_ci; - typedef map<const Sha1, Peer>::iterator peersmap_i; - - void load(void); - void save(void); - - const string file; - map<const Sha1, Peer> peersmap; -}; - -#endif // PEERS_HPP diff --git a/apps/enclave/src/platform.hpp b/apps/enclave/src/platform.hpp deleted file mode 100644 index 1afbbd603def5f56d98e30f90bb2334fd2f35eee..0000000000000000000000000000000000000000 --- a/apps/enclave/src/platform.hpp +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - */ - -#ifndef PLATFORM_HPP -#define PLATFORM_HPP - -/* - * Operating system - */ -#define FREEBSD 0 // FreeBSD (untested) -#define MINGW 1 // Windows native (Mingw) -#define LINUX 2 // Linux -#define CYGWIN 3 // Cygwin - -#if OS == MINGW - #define NO_SSIZE_T - #define WIN_STRERROR - #define WINSOCK - #define WINTHREADS -#endif - -/* - * System includes - */ -#include <arpa/inet.h> -#include <cstdlib> -#include <cstring> -#include <fstream> -#include <iostream> -#include <list> -#include <map> -#ifdef WINTHREADS - #include <windows.h> -#else - #include <pthread.h> -#endif -#include <stdexcept> -#include <stdint.h> -#include <string> -#include <time.h> - -using namespace std; - -#ifdef NO_SSIZE_T - typedef signed long ssize_t; -#endif - -/* - * Define this to '1' to cause the printing of source code file and line number - * information with each log message. Set it to '0' for simple logging. - */ -#define VERBOSE_LOGS 0 - -/* - * Library includes - */ -#include "mycrypt.h" // LibTomCrypt -#include "sam.h" // LibSAM - -/* - * Local includes - */ -#include "mutex.hpp" // Mutex (for thread.hpp) -#include "thread.hpp" // Thread -#include "logger.hpp" // Logger -#include "config.hpp" // Config -#include "sam_error.hpp" // for sam.hpp -#include "bigint.hpp" // for sha1.hpp -#include "sha1.hpp" // for peers.hpp -#include "peer.hpp" // for peers.hpp -#include "near_peer.hpp" // for peers.hpp -#include "peers.hpp" // for sam.hpp -#include "sam.hpp" // SAM -#include "random.hpp" // Random - -/* - * Global variables - */ -extern Config *config; // Configuration options -extern Logger *logger; // Logging mechanism -extern Random *prng; // Random number generator -extern Sam *sam; // Sam connection - -#endif // PLATFORM_HPP diff --git a/apps/enclave/src/random.cpp b/apps/enclave/src/random.cpp deleted file mode 100644 index e843e5a2655c0014f41e2828d154fdf26b449777..0000000000000000000000000000000000000000 --- a/apps/enclave/src/random.cpp +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - */ - -#include "platform.hpp" -#include "random.hpp" - -/* - * Prepares the Yarrow PRNG for use - */ -Random::Random(void) -{ - LMINOR << "Initalising PRNG\n"; - - int rc = yarrow_start(&prng); - assert(rc == CRYPT_OK); - - uchar_t entropy[ENTROPY_SIZE]; - size_t sz = rng_get_bytes(entropy, ENTROPY_SIZE, NULL); - assert(sz == ENTROPY_SIZE); - - rc = yarrow_add_entropy(entropy, ENTROPY_SIZE, &prng); - assert(rc == CRYPT_OK); - - rc = yarrow_ready(&prng); - assert(rc == CRYPT_OK); -} - -/* - * Gets `size' random bytes from the PRNG - * - * random - space to fill with random bytes - * size - size of `random' - */ -void Random::get_bytes(uchar_t* random, size_t size) -{ - size_t sz = yarrow_read(random, size, &prng); - assert(sz == size); -} diff --git a/apps/enclave/src/random.hpp b/apps/enclave/src/random.hpp deleted file mode 100644 index 279efa065ef7a663a7b14f594de2d4ef72f7ab36..0000000000000000000000000000000000000000 --- a/apps/enclave/src/random.hpp +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - */ - -#ifndef RANDOM_HPP -#define RANDOM_HPP - -class Random { - public: - Random(void); - - void get_bytes(uchar_t* random, size_t size); - - private: - static const size_t ENTROPY_SIZE = 32; - prng_state prng; -}; - -#endif // RNG_HPP diff --git a/apps/enclave/src/rpc.cpp b/apps/enclave/src/rpc.cpp deleted file mode 100644 index 736b29069bb1e75792a21c9768ef5e23ab9f11c5..0000000000000000000000000000000000000000 --- a/apps/enclave/src/rpc.cpp +++ /dev/null @@ -1,233 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - */ - -#include "platform.hpp" -#include "rpc.hpp" - -// These can't be 'const' because I have to make them big-endian first -uint16_t Rpc::VERSION = htons(1); -uint16_t Rpc::OLDEST_GOOD_VERSION = htons(1); - -/* - * Requests a peer to find the addresses of the closest peers to the specified - * sha1 and return them - * - * sha1 - closeness to this sha1 - */ -void Rpc::find_peers(const Sha1& sha1) -{ - LDEBUG << "To: " << peer->get_sdest() << " [" << peer->get_b64kaddr() - << "] Msg: FIND_PEERS\n"; - - // VERSION + command + bin sha1 - const size_t len = sizeof VERSION + 1 + Sha1::SHA1BIN_LEN; - uchar_t buf[len]; - uchar_t* p = static_cast<uchar_t*>(memcpy(buf, &VERSION, sizeof VERSION)); - p += sizeof VERSION; - *p = FIND_PEERS; - p++; - memcpy(p, sha1.binhash(), Sha1::SHA1BIN_LEN); - sam->send_dgram(peer->get_dest(), buf, len); -} - -/* - * Returns the closest peer references to a Sha1 - * - * sha1 - sha1 to test nearness to - */ -void Rpc::found_peers(const Sha1& sha1) -{ - list<Near_peer> near_peers; - sam->peers->get_nearest(sha1, Peers::RET_REFS, near_peers); - LDEBUG << "To: " << peer->get_sdest() << " [" << peer->get_b64kaddr() - << "] Msg: FOUND_PEERS (" << near_peers.size() << " peers)\n"; - - // VERSION + command + number of sha1s (0-255) + bin sha1s - const size_t len = sizeof VERSION + 1 + 1 + - (near_peers.size() * (SAM_PUBKEY_LEN - 1)); - assert(near_peers.size() <= 255); - uchar_t buf[len]; - uchar_t* p = static_cast<uchar_t*>(memcpy(buf, &VERSION, sizeof VERSION)); - p += sizeof VERSION; - *p = FOUND_PEERS; - p++; - *p = near_peers.size(); - p++; - for (list<Near_peer>::const_iterator i = near_peers.begin(); - i != near_peers.end(); i++) { - const Peer* peer = i->get_peer(); - memcpy(p, peer->get_dest().c_str(), (SAM_PUBKEY_LEN - 1)); - p += SAM_PUBKEY_LEN - 1; - } - sam->send_dgram(peer->get_dest(), buf, len); -} - -/* - * Parse incoming data and invoke the appropriate RPC - * - * data - the data - * size - the size of `data' - */ -void Rpc::parse(const void* data, size_t size) -{ - uint16_t his_ver; - - memcpy(&his_ver, data, sizeof VERSION); - if (ntohs(his_ver) < ntohs(VERSION)) { - LMINOR << "Ignored RPC from " << peer->get_sdest() << " [" - << peer->get_b64kaddr() << "] using obsolete protocol version " - << ntohs(his_ver) << '\n'; - return; - } else if (size <= 4) { - LWARN << "RPC too small from " << peer->get_sdest() << " [" - << peer->get_b64kaddr() << "]\n"; - return; - } - const uchar_t* p = static_cast<const uchar_t*>(data); - - if (p[2] == PING) { //----------------------------------------------------- - LDEBUG << "From: " << peer->get_sdest() << " [" << peer->get_b64kaddr() - << "] Msg: PING\n"; - uint32_t ptime; - if (size != sizeof VERSION + 1 + sizeof ptime) { - LWARN << "Malformed PING RPC from " << peer->get_sdest() - << " [" << peer->get_b64kaddr() << "]\n"; - return; - } - p += sizeof VERSION + 1; - memcpy(&ptime, p, sizeof ptime); - pong(ptime); // no need to ntohl() it here because we're just copying it - return; - - } else if (p[2] == PONG) { //---------------------------------------------- - LDEBUG << "From: " << peer->get_sdest() << " [" << peer->get_b64kaddr() - << "] Msg: PONG\n"; - uint32_t ptime; - if (size != sizeof VERSION + 1 + sizeof ptime) { - LWARN << "Malformed PONG RPC from " << peer->get_sdest() - << " [" << peer->get_b64kaddr() << "]\n"; - return; - } - p += sizeof VERSION + 1; - memcpy(&ptime, p, sizeof ptime); - ptime = ntohl(ptime); - uint32_t now = time(NULL); - peer->set_lag(now - ptime); - LDEBUG << "Lag is " << peer->get_lag() << " seconds\n"; - return; - - } else if (p[2] == FIND_PEERS) { //---------------------------------------- - if (size != sizeof VERSION + 1 + Sha1::SHA1BIN_LEN) { - LWARN << "Malformed FIND_PEERS RPC from " << peer->get_sdest() - << " [" << peer->get_b64kaddr() << "]\n"; - return; - } - LDEBUG << "From: " << peer->get_sdest() << " [" << peer->get_b64kaddr() - << "] Msg: FIND_PEERS\n"; - found_peers(Sha1(p + 4)); - return; - - } else if (p[2] == FOUND_PEERS) { //--------------------------------------- - const size_t refs = p[3]; - if (size != sizeof VERSION + 1 + 1 + (refs * (SAM_PUBKEY_LEN - 1))) { - LWARN << "Malformed FOUND_PEERS RPC from " << peer->get_sdest() - << " [" << peer->get_b64kaddr() << "]\n"; - return; - } - LDEBUG << "From: " << peer->get_sdest() << " [" << peer->get_b64kaddr() - << "] Msg: FOUND_PEERS (" << refs << " peers)\n"; - p += sizeof VERSION + 1 + 1; - for (size_t i = 1; i <= refs; i++) { - sam_pubkey_t dest; - memcpy(dest, p, SAM_PUBKEY_LEN - 1); // - 1 == no NUL in RPC - dest[SAM_PUBKEY_LEN - 1] = '\0'; - //LDEBUG << "Message had: " << dest << '\n'; - sam->peers->new_peer(dest); - p += SAM_PUBKEY_LEN - 1; - } - return; - - } else //------------------------------------------------------------------ - LWARN << "Unknown RPC #" << static_cast<int>(p[2]) << " from " - << peer->get_sdest() << " [" << peer->get_b64kaddr() << "]\n"; -} - -/* - * Sends a ping to someone - */ -void Rpc::ping(void) -{ - LDEBUG << "To: " << peer->get_sdest() << " [" << peer->get_b64kaddr() - << "] Msg: PING\n"; - - uint32_t now = htonl(time(NULL)); - // VERSION + command + seconds since 1970 - const size_t len = sizeof VERSION + 1 + sizeof now; - uchar_t buf[len]; - uchar_t* p = static_cast<uchar_t*>(memcpy(buf, &VERSION, sizeof VERSION)); - p += sizeof VERSION; - *p = PING; - p++; - memcpy(p, &now, sizeof now); - sam->send_dgram(peer->get_dest(), buf, len); -} - -/* - * Sends a ping reply to someone - * - * ptime - the time the peer sent us (we echo the same time back) - */ -void Rpc::pong(uint32_t ptime) -{ - LDEBUG << "To: " << peer->get_sdest() << " [" << peer->get_b64kaddr() - << "] Msg: PONG\n"; - - // VERSION + command + pinger's seconds since 1970 echoed back - const size_t len = sizeof VERSION + 1 + sizeof ptime; - uchar_t buf[len]; - uchar_t* p = static_cast<uchar_t*>(memcpy(buf, &VERSION, sizeof VERSION)); - p += sizeof VERSION; - *p = PONG; - p++; - memcpy(p, &ptime, sizeof ptime); - sam->send_dgram(peer->get_dest(), buf, len); -} - -/* - * Tells a peer to store some data - * - * sha1 - sha1 value for the data - * data - the data - */ -void Rpc::store(const Sha1& sha1) -{ - LDEBUG << "To: " << peer->get_sdest() << " [" << peer->get_b64kaddr() - << "] Msg: STORE\n"; -} diff --git a/apps/enclave/src/rpc.hpp b/apps/enclave/src/rpc.hpp deleted file mode 100644 index ba069291325f2b649eb86ea7ade7e2ec85607a98..0000000000000000000000000000000000000000 --- a/apps/enclave/src/rpc.hpp +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - */ - -#ifndef RPC_HPP -#define RPC_HPP - -class Rpc { - public: - // The PROTOCOL version we are using - static uint16_t VERSION; - // The oldest version we will talk to - static uint16_t OLDEST_GOOD_VERSION; - // RPC identifiers (0-255) - typedef enum { - PING = 0, - PONG = 1, - FIND_PEERS = 2, - FOUND_PEERS = 3, - STORE = 4 - } rpc_t; - - Rpc(Peer* peer) - : peer(peer) {}; - - void find_peers(const Sha1& sha1); - void parse(const void* data, size_t size); - void ping(void); - void store(const Sha1& sha1); - - private: - void found_peers(const Sha1& sha1); - void pong(uint32_t ptime); - - Peer* peer; - basic_string<uchar_t> data; -}; - -#endif // RPC_HPP diff --git a/apps/enclave/src/sam.cpp b/apps/enclave/src/sam.cpp deleted file mode 100644 index 052748f465e6b23f0eb945ae73a13ccbf21f7596..0000000000000000000000000000000000000000 --- a/apps/enclave/src/sam.cpp +++ /dev/null @@ -1,249 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - */ - -#include "platform.hpp" -#include "rpc.hpp" -#include "sam.hpp" - -extern "C" { - /* - * Assorted callbacks required by LibSAM - ugly, but it works - */ - static void dgramback(sam_pubkey_t dest, void* data, size_t size); - static void diedback(void); - static void logback(char* str); - static void namingback(char* name, sam_pubkey_t pubkey, samerr_t result); -} - -/* - * Prevents more than one Sam object from existing in the program at a time - * (LibSAM limitation) - */ -bool Sam::exists = false; - -Sam::Sam(const string& samhost, uint16_t samport, const string& destname, - uint_t tunneldepth) -{ - // Only allow one Sam object to exist at a time - assert(!exists); - exists = true; - - // hook up callbacks - sam_dgramback = &dgramback; - sam_diedback = &diedback; - sam_logback = &logback; - sam_namingback = &namingback; - - // we haven't connected to SAM yet - set_connected(false); - - // now try to connect to SAM - connect(samhost.c_str(), samport, destname.c_str(), tunneldepth); -} - -Sam::~Sam(void) -{ - delete peers; // this must be before set_connected(false)! - if (is_connected()) { - sam_close(); - set_connected(false); - } - exists = false; -} - -/* - * Connects to the SAM host - * - * samhost - host that SAM is running on (hostname or IP address) - * samport - port number that SAM is running own - * destname - the destination name of this program - * tunneldepth - how long the tunnels should be - */ -void Sam::connect(const char* samhost, uint16_t samport, const char* destname, - uint_t tunneldepth) -{ - assert(!is_connected()); - LMINOR << "Connecting to SAM as '" << destname << "'\n"; - samerr_t rc = sam_connect(samhost, samport, destname, SAM_DGRAM, tunneldepth); - if (rc == SAM_OK) - set_connected(true); - else - throw Sam_error(rc); -} - -/* - * Loads peer references from disk - * Note: this can only be called after my_dest has been set - */ -void Sam::load_peers(void) -{ - peers = new Peers(config->get_cproperty("references")); -} - -/* - * Converts `name' to a base 64 destination - * - * name - name to lookup - */ -void Sam::naming_lookup(const string& name) const -{ - assert(is_connected()); - sam_naming_lookup(name.c_str()); -} - -/* - * Parses an incoming datagram - * - * dest - source destination address - * data - datagram payload - * size - size of `data' - */ -void Sam::parse_dgram(const string& dest, void* data, size_t size) -{ - assert(is_connected()); - Peer* peer = peers->new_peer(dest); - Rpc rpc(peer); - rpc.parse(data, size); - rpc.ping(); - free(data); -} - -/* - * Checks the SAM connection for incoming commands and invokes callbacks - */ -void Sam::read_buffer(void) -{ - assert(is_connected()); - sam_read_buffer(); -} - -/* - * Sends a datagram to a destination - * - * dest - destination to send to - * data - data to send - * size - size of `data' - */ -void Sam::send_dgram(const string& dest, uchar_t *data, size_t size) -{ - assert(is_connected()); - samerr_t rc = sam_dgram_send(dest.c_str(), data, size); - assert(rc == SAM_OK); // i.e. not SAM_TOO_BIG -} - -/* - * Sets the connection status - * - * connected - true for connected, false for disconnected - */ -void Sam::set_connected(bool connected) -{ - if (!connected) - my_dest = ""; - this->connected = connected; -} - -/* - * Sets my destination address - * - * pubkey - the base 64 destination - */ -void Sam::set_my_dest(const sam_pubkey_t pubkey) -{ - my_dest = pubkey; - my_sha1 = Sha1(my_dest); -} - -/* - * Checks whether the destination specified is of a valid base 64 syntax - * - * Returns: true if it is valid, false if it isn't - */ -bool Sam::valid_dest(const string& dest) -{ - if (dest.size() != 516) - return false; - if (dest.substr(512, 4) == "AAAA") // Note this AAAA signifies a null - return true; // certificate and doesn't actually have - else // any bearing on validity, but we'll - return false; // keep this check here for now anyway -} - -/* - * * * * Callbacks * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Unfortunately these aren't part of the "Sam" object because they are function - * pointers to _C_ functions. As a hack, we just have them call the global Sam - * object. - */ - -/* - * Callback: A datagram was received - */ -static void dgramback(sam_pubkey_t dest, void* data, size_t size) -{ - sam->parse_dgram(dest, data, size); -} - -/* - * Callback: The connection to SAM has failed - */ -static void diedback(void) -{ - LERROR << "Connection to SAM lost!\n"; - sam->set_connected(false); - throw Sam_error(SAM_SOCKET_ERROR); -} - -/* - * Callback: A log message has been sent from LibSAM - */ -static void logback(char* str) -{ - LINFO << "LibSAM: " << str << '\n'; -} - -/* - * Callback: A naming lookup has completed - */ -static void namingback(char* name, sam_pubkey_t pubkey, samerr_t result) -{ - Sam_error res(result); - if (res.code() == SAM_OK) { - if (strcmp(name, "ME") == 0) { - sam->set_my_dest(pubkey); - sam->load_peers(); - } else { - assert(false); - } - } else { - LERROR << "Naming look failed for '" << name << "': " << res.what() - << '\n'; - } -} diff --git a/apps/enclave/src/sam.hpp b/apps/enclave/src/sam.hpp deleted file mode 100644 index 87b74ec78043354a0b0c2a9dd3eadc8b1d0556da..0000000000000000000000000000000000000000 --- a/apps/enclave/src/sam.hpp +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - */ - -#ifndef SAM_HPP -#define SAM_HPP - -class Sam { - public: - Sam(const string& samhost, uint16_t samport, const string& destname, - uint_t tunneldepth); - ~Sam(void); - - const string& get_my_dest(void) const { return my_dest; } - const Sha1& get_my_sha1(void) const { return my_sha1; } - void naming_lookup(const string& name = "ME") const; - void read_buffer(void); - void send_dgram(const string& dest, uchar_t *data, size_t size); - bool valid_dest(const string& dest); - - Peers* peers; - - //callback-private: - void load_peers(void); - void parse_dgram(const string& dest, void* data, size_t size); - void set_connected(bool connected); - void set_my_dest(const sam_pubkey_t pubkey); - - private: - void connect(const char* samhost, uint16_t samport, - const char* destname, uint_t tunneldepth); - bool is_connected(void) const { return connected; } - - bool connected; - static bool exists; - string my_dest; - Sha1 my_sha1; -}; - -#endif // SAM_HPP diff --git a/apps/enclave/src/sam_error.hpp b/apps/enclave/src/sam_error.hpp deleted file mode 100644 index af596ad9b9c96b8617ac27edb3dfefebe762f48e..0000000000000000000000000000000000000000 --- a/apps/enclave/src/sam_error.hpp +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - */ - -#ifndef SAM_ERROR_HPP -#define SAM_ERROR_HPP - -class Sam_error { - public: - Sam_error(samerr_t error) - : errcode(error) {} - - samerr_t code(void) const { return errcode; } - const char* what(void) const { return sam_strerror(errcode); } - - private: - const samerr_t errcode; -}; - -#endif // SAM_ERROR_HPP diff --git a/apps/enclave/src/sha1.cpp b/apps/enclave/src/sha1.cpp deleted file mode 100644 index db20ce19b2c8b630b1ab71584aa5d4aff39fcc4b..0000000000000000000000000000000000000000 --- a/apps/enclave/src/sha1.cpp +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - */ - -#include "platform.hpp" -#include "sha1.hpp" - -Sha1::Sha1(void) -{ - b64hashed = "No value!"; - memset(binhashed, 0, sizeof binhashed); -} - -Sha1::Sha1(const string& data) -{ - /* Hash it */ - hash_state md; - sha1_init(&md); - int rc = sha1_process(&md, reinterpret_cast<const uchar_t*>(data.c_str()), - data.size()); - assert(rc == CRYPT_OK); - rc = sha1_done(&md, binhashed); - assert(rc == CRYPT_OK); - b64(); -} - -/* - * Initialises the Sha1 object from a binary hash - */ -Sha1::Sha1(const uchar_t binary[SHA1BIN_LEN]) -{ - memcpy(binhashed, binary, sizeof binhashed); - b64(); -} - -/* - * Base 64 the binary hash - */ -void Sha1::b64(void) -{ - ulong_t outlen = 29; - char tmp[outlen]; - // b64 FIXME: replace + with ~, and / with - to be like freenet - int rc = base64_encode(binhashed, sizeof binhashed, reinterpret_cast<uchar_t*>(tmp), &outlen); - assert(rc == CRYPT_OK); - b64hashed = tmp; -} - -/* - * Compares two Sha1s, returning true if the this one is less than the right one - */ -bool Sha1::operator<(const Sha1& rhs) const -{ - Bigint lhsnum(binhashed, SHA1BIN_LEN); - Bigint rhsnum(rhs.binhash(), SHA1BIN_LEN); - if (lhsnum < rhsnum) - return true; - else - return false; -} - -/* - * Assigns a value from another Sha1 to this one - */ -Sha1& Sha1::operator=(const Sha1& rhs) -{ - if (this != &rhs) { // check for self-assignment: a = a - b64hashed = rhs.b64hash(); - memcpy(binhashed, rhs.binhash(), sizeof binhashed); - } - return *this; -} - -/* - * Compares Sha1s for equality - */ -bool Sha1::operator==(const Sha1& rhs) const -{ - if (memcmp(binhashed, rhs.binhash(), sizeof binhashed) == 0) - return true; - else - return false; -} - -/* - * Xors this Sha1 with another, and stores the result in a Bigint - * - * rhs - sha1 to xor this one with - * result - will be filled with the result - */ -void Sha1::x_or(const Sha1& rhs, Bigint& result) const -{ - Bigint lhsnum(binhashed, SHA1BIN_LEN); - Bigint rhsnum(rhs.binhash(), SHA1BIN_LEN); - lhsnum.x_or(rhsnum, result); -} diff --git a/apps/enclave/src/sha1.hpp b/apps/enclave/src/sha1.hpp deleted file mode 100644 index 32076f9410277c9cc8294b791056e97036b8933a..0000000000000000000000000000000000000000 --- a/apps/enclave/src/sha1.hpp +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2004, Matthew P. Cashdollar <mpc@innographx.com> - * 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 the author nor the names of any 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 OWNER - * 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. - */ - -#ifndef SHA1_HPP -#define SHA1_HPP - -class Sha1 { - public: - static const size_t SHA1BIN_LEN = 20; - - Sha1(void); - Sha1(const string& data); - Sha1(const uchar_t binary[SHA1BIN_LEN]); - - const string& b64hash(void) const { return b64hashed; } - const uchar_t* binhash(void) const { return binhashed; } - bool operator<(const Sha1& rhs) const; - Sha1& operator=(const Sha1& rhs); - bool operator==(const Sha1& rhs) const; - void x_or(const Sha1& rhs, Bigint& result) const; - - private: - void b64(void); - - string b64hashed; // base 64 of the hash - uchar_t binhashed[SHA1BIN_LEN]; // non-NUL terminated binary hash -}; - -#endif // SHA1_HPP