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