diff --git a/bluecove-2.1.0.patch b/bluecove-2.1.0.patch
deleted file mode 100644
index 956a5a34adcb324fcb96056291a9611b2f2ed55c..0000000000000000000000000000000000000000
--- a/bluecove-2.1.0.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -Bbur bluecove-2.1.0/src/main/c/intelbth/OSXStackRFCOMMServer.mm bluecove-2.1.0-briar/src/main/c/intelbth/OSXStackRFCOMMServer.mm
---- bluecove-2.1.0/src/main/c/intelbth/OSXStackRFCOMMServer.mm	2008-12-24 16:58:36.000000000 +0000
-+++ bluecove-2.1.0-briar/src/main/c/intelbth/OSXStackRFCOMMServer.mm	2011-11-08 20:54:58.000000000 +0000
-@@ -280,6 +280,10 @@
- 	    ndebug(("fail to get IOBluetoothRFCOMMChannel"));
- 	    return;
- 	}
-+	if (![rfcommChannel isIncoming]) {
-+		ndebug(("ignoring outgoing connection"));
-+		return;
-+	}
- 	if (comm->authenticate) {
- 	    IOBluetoothDevice* device = [rfcommChannel getDevice];
- 	    if (device == NULL) {
diff --git a/bluecove-2.1.1-SNAPSHOT.patch b/bluecove-2.1.1-SNAPSHOT.patch
new file mode 100644
index 0000000000000000000000000000000000000000..78cf8b10050e2c3f6ec52c9443e9476f379ce1ad
--- /dev/null
+++ b/bluecove-2.1.1-SNAPSHOT.patch
@@ -0,0 +1,63 @@
+diff -Bbur bluecove-2.1.1-SNAPSHOT/bluecove/pom.xml bluecove-2.1.1-SNAPSHOT-briar/bluecove/pom.xml
+--- bluecove-2.1.1-SNAPSHOT/bluecove/pom.xml	2013-01-04 00:43:17.961294408 +0000
++++ bluecove-2.1.1-SNAPSHOT-briar/bluecove/pom.xml	2013-01-03 23:17:37.549293571 +0000
+@@ -126,8 +126,8 @@
+             <plugin>
+                 <artifactId>maven-compiler-plugin</artifactId>
+                 <configuration>
+-                    <source>1.3</source>
+-                    <target>1.1</target>
++                    <source>1.5</source>
++                    <target>1.5</target>
+                 </configuration>
+             </plugin>
+ 
+@@ -355,7 +355,7 @@
+                 <configuration>
+                     <linkXref>true</linkXref>
+                     <minimumTokens>100</minimumTokens>
+-                    <targetJdk>1.4</targetJdk>
++                    <targetJdk>1.5</targetJdk>
+                 </configuration>
+             </plugin>
+             <plugin>
+diff -Bbur bluecove-2.1.1-SNAPSHOT/bluecove/src/main/c/intelbth/OSXStackRFCOMMServer.mm bluecove-2.1.1-SNAPSHOT-briar/bluecove/src/main/c/intelbth/OSXStackRFCOMMServer.mm
+--- bluecove-2.1.1-SNAPSHOT/bluecove/src/main/c/intelbth/OSXStackRFCOMMServer.mm	2013-01-04 00:43:17.549293781 +0000
++++ bluecove-2.1.1-SNAPSHOT-briar/bluecove/src/main/c/intelbth/OSXStackRFCOMMServer.mm	2013-01-03 23:19:02.269295705 +0000
+@@ -280,6 +280,10 @@
+ 	    ndebug(("fail to get IOBluetoothRFCOMMChannel"));
+ 	    return;
+ 	}
++        if(![rfcommChannel isIncoming]) {
++            ndebug(("ignoring outgoing connection"));
++            return;
++        }
+ 	if (comm->authenticate) {
+ 	    IOBluetoothDevice* device = [rfcommChannel getDevice];
+ 	    if (device == NULL) {
+diff -Bbur bluecove-2.1.1-SNAPSHOT/bluecove-gpl/pom.xml bluecove-2.1.1-SNAPSHOT-briar/bluecove-gpl/pom.xml
+--- bluecove-2.1.1-SNAPSHOT/bluecove-gpl/pom.xml	2013-01-04 00:43:14.509294005 +0000
++++ bluecove-2.1.1-SNAPSHOT-briar/bluecove-gpl/pom.xml	2013-01-03 23:17:52.181293751 +0000
+@@ -81,8 +81,8 @@
+             <plugin>
+                 <artifactId>maven-compiler-plugin</artifactId>
+                 <configuration>
+-                    <source>1.3</source>
+-                    <target>1.1</target>
++                    <source>1.5</source>
++                    <target>1.5</target>
+                 </configuration>
+             </plugin>
+ 
+diff -Bbur bluecove-2.1.1-SNAPSHOT/pom.xml bluecove-2.1.1-SNAPSHOT-briar/pom.xml
+--- bluecove-2.1.1-SNAPSHOT/pom.xml	2013-01-04 00:43:19.721293788 +0000
++++ bluecove-2.1.1-SNAPSHOT-briar/pom.xml	2013-01-03 23:17:18.713293930 +0000
+@@ -436,7 +436,7 @@
+                 <configuration>
+                     <linkXref>true</linkXref>
+                     <minimumTokens>100</minimumTokens>
+-                    <targetJdk>1.4</targetJdk>
++                    <targetJdk>1.5</targetJdk>
+                 </configuration>
+             </plugin>
+             <plugin>
diff --git a/briar-core/.classpath b/briar-core/.classpath
index cbf8c8d285da78cfeb2edaca323f0e4b835e4764..4638c938999f5a9d36778a0b205f412ca8a92224 100644
--- a/briar-core/.classpath
+++ b/briar-core/.classpath
@@ -4,10 +4,8 @@
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
 	<classpathentry kind="lib" path="libs/commons-io-2.0.1.jar"/>
 	<classpathentry kind="lib" path="libs/h2small-1.3.161.jar"/>
-	<classpathentry kind="lib" path="libs/jna-3.5.1.jar"/>
 	<classpathentry kind="lib" path="libs/jnotify-0.93.jar"/>
 	<classpathentry kind="lib" path="libs/jssc-0.9-briar.jar" sourcepath="libs/source/jssc-0.9-briar-source.jar"/>
-	<classpathentry kind="lib" path="libs/platform-3.5.1.jar"/>
 	<classpathentry kind="lib" path="libs/sc-light-jdk15on-1.47.0.3-SNAPSHOT.jar" sourcepath="libs/source/sc-light-jdk15on-1.47.0.3-SNAPSHOT-source.jar"/>
 	<classpathentry kind="lib" path="libs/scpkix-jdk15on-1.47.0.3-SNAPSHOT.jar" sourcepath="libs/source/scpkix-jdk15on-1.47.0.3-SNAPSHOT-source.jar"/>
 	<classpathentry kind="lib" path="libs/scprov-jdk15on-1.47.0.3-SNAPSHOT.jar" sourcepath="libs/source/scprov-jdk15on-1.47.0.3-SNAPSHOT-source.jar"/>
@@ -18,5 +16,7 @@
 	<classpathentry combineaccessrules="false" kind="src" path="/briar-api"/>
 	<classpathentry kind="lib" path="/briar-api/libs/android.jar"/>
 	<classpathentry kind="lib" path="/briar-api/libs/guice-3.0-no_aop.jar"/>
+	<classpathentry kind="lib" path="libs/jna-3.5.2-SNAPSHOT.jar"/>
+	<classpathentry kind="lib" path="libs/platform-3.5.2-SNAPSHOT.jar"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/briar-core/libs/jna-3.5.1.jar b/briar-core/libs/jna-3.5.2-SNAPSHOT.jar
similarity index 89%
rename from briar-core/libs/jna-3.5.1.jar
rename to briar-core/libs/jna-3.5.2-SNAPSHOT.jar
index 72224e03a65a0c59710d88b6bab8abe3d6ae4ba8..aaa6916525a82637c5ea6e4b9fd69ef4919bd1be 100644
Binary files a/briar-core/libs/jna-3.5.1.jar and b/briar-core/libs/jna-3.5.2-SNAPSHOT.jar differ
diff --git a/briar-core/libs/platform-3.5.1.jar b/briar-core/libs/platform-3.5.2-SNAPSHOT.jar
similarity index 86%
rename from briar-core/libs/platform-3.5.1.jar
rename to briar-core/libs/platform-3.5.2-SNAPSHOT.jar
index 0181fac8fbfc9d5bef39bf36c088bdb7adda47a8..7174352ca0ad9ff30ebfcfb4082b87f6246d8500 100644
Binary files a/briar-core/libs/platform-3.5.1.jar and b/briar-core/libs/platform-3.5.2-SNAPSHOT.jar differ
diff --git a/briar-core/libs/silvertunnel.org-netlib-0.14-briar.jar b/briar-core/libs/silvertunnel.org-netlib-0.14-briar.jar
index 4f2c568f5c72a96ade0d9d63b4d49743bd7fe057..23d3a026b847f8483645e08872c6a26defd0dac8 100644
Binary files a/briar-core/libs/silvertunnel.org-netlib-0.14-briar.jar and b/briar-core/libs/silvertunnel.org-netlib-0.14-briar.jar differ
diff --git a/jna-3.5.2-SNAPSHOT.patch b/jna-3.5.2-SNAPSHOT.patch
new file mode 100644
index 0000000000000000000000000000000000000000..199d38d4d1221290127a36a2f9179ce89f7f7adf
--- /dev/null
+++ b/jna-3.5.2-SNAPSHOT.patch
@@ -0,0 +1,12 @@
+diff -Bbur jna-3.5.2-SNAPSHOT/build.xml jna-3.5.2-SNAPSHOT-briar/build.xml
+--- jna-3.5.2-SNAPSHOT/build.xml	2013-01-04 01:15:58.845295641 +0000
++++ jna-3.5.2-SNAPSHOT-briar/build.xml	2013-01-04 01:21:15.981295059 +0000
+@@ -70,7 +70,7 @@
+   <property name="impl.version" value="${jna.version} (b${jna.build})"/>
+ 
+   <!-- Set up restrictions for w32ce, based on JavaME/CDC -->
+-  <property name="compatibility" value="1.4"/>
++  <property name="compatibility" value="1.5"/>
+   <property name="platform.compatibility" value="1.5"/>
+   <condition property="test.compatibility" value="1.4">
+     <equals arg1="${os.prefix}" arg2="w32ce-arm"/>
diff --git a/silvertunnel.org-netlib-0.14.patch b/silvertunnel.org-netlib-0.14.patch
new file mode 100644
index 0000000000000000000000000000000000000000..0c0b453c090b57bded5417cd9ef60481d9eceea9
--- /dev/null
+++ b/silvertunnel.org-netlib-0.14.patch
@@ -0,0 +1,281 @@
+Only in silvertunnel.org_netlib/lib/main: bcprov-jdk15-145.jar
+Only in silvertunnel.org-netlib-0.14-briar/lib/main: sc-light-jdk15on-1.47.0.3-SNAPSHOT.jar
+Only in silvertunnel.org-netlib-0.14-briar/lib/main: scpkix-jdk15on-1.47.0.3-SNAPSHOT.jar
+Only in silvertunnel.org-netlib-0.14-briar/lib/main: scprov-jdk15on-1.47.0.3-SNAPSHOT.jar
+diff -Bbur silvertunnel.org_netlib/src/main/java/org/silvertunnel/netlib/api/impl/SocketTimeoutInputStream.java silvertunnel.org-netlib-0.14-briar/src/main/java/org/silvertunnel/netlib/api/impl/SocketTimeoutInputStream.java
+--- silvertunnel.org_netlib/src/main/java/org/silvertunnel/netlib/api/impl/SocketTimeoutInputStream.java	2012-01-19 16:46:10.000000000 +0000
++++ silvertunnel.org-netlib-0.14-briar/src/main/java/org/silvertunnel/netlib/api/impl/SocketTimeoutInputStream.java	2012-12-18 02:51:40.167913821 +0000
+@@ -111,7 +111,7 @@
+         synchronized (this) {
+             throwLastPendingIOException();
+             if (thread != null) {
+-                throw new SocketTimeoutException();
++                throw new SocketTimeoutException(String.valueOf(timeout));
+             }
+         }
+     }
+@@ -217,7 +217,9 @@
+         }
+         notify();
+         try {
+-            wait(timeout);
++            long atomic = timeout;
++            if(atomic == 0) wait();
++            else wait(atomic);
+         } catch (InterruptedException e) {
+             // unexpected
+             Thread.currentThread().interrupt();
+@@ -231,7 +233,7 @@
+             // EOF reached
+             return false;
+         }
+-        throw new SocketTimeoutException();
++        throw new SocketTimeoutException(String.valueOf(timeout));
+     }
+ 
+     /**
+diff -Bbur silvertunnel.org_netlib/src/main/java/org/silvertunnel/netlib/layer/tor/circuit/TLSDispatcherThread.java silvertunnel.org-netlib-0.14-briar/src/main/java/org/silvertunnel/netlib/layer/tor/circuit/TLSDispatcherThread.java
+--- silvertunnel.org_netlib/src/main/java/org/silvertunnel/netlib/layer/tor/circuit/TLSDispatcherThread.java	2012-08-24 15:57:00.000000000 +0100
++++ silvertunnel.org-netlib-0.14-briar/src/main/java/org/silvertunnel/netlib/layer/tor/circuit/TLSDispatcherThread.java	2012-12-17 21:58:30.943914693 +0000
+@@ -70,13 +70,13 @@
+ 
+     public void run() {
+         boolean dispatched = false;
+-        while(!stopped) {
++        for(int i = 0; !stopped; i++) {
+             // read next data-packet
+             Cell cell = null;
+             try {
+                 cell = new Cell(sin);
+             } catch (IOException e) {
+-                log.info("TLSDispatcher.run: connection error: "+e.getMessage());
++                log.log(Level.INFO, "TLSDispatcher.run: connection error after " + i + " cells", e);
+                 stopped = true;
+                 break;
+             }
+diff -Bbur silvertunnel.org_netlib/src/main/java/org/silvertunnel/netlib/layer/tor/clientimpl/Tor.java silvertunnel.org-netlib-0.14-briar/src/main/java/org/silvertunnel/netlib/layer/tor/clientimpl/Tor.java
+--- silvertunnel.org_netlib/src/main/java/org/silvertunnel/netlib/layer/tor/clientimpl/Tor.java	2012-01-20 11:16:16.000000000 +0000
++++ silvertunnel.org-netlib-0.14-briar/src/main/java/org/silvertunnel/netlib/layer/tor/clientimpl/Tor.java	2012-11-16 18:38:24.138140251 +0000
+@@ -131,11 +131,11 @@
+ 
+ 
+     private void initLocalSystem(boolean noLocalFileSystemAccess) throws IOException {
+-        // install BC, if not already done
+-        if (Security.getProvider("BC") == null) {
+-            Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
++        // install SC, if not already done
++        if (Security.getProvider("SC") == null) {
++            Security.addProvider(new org.spongycastle.jce.provider.BouncyCastleProvider());
+             // Security.insertProviderAt(new
+-            // org.bouncycastle.jce.provider.BouncyCastleProvider(),2);
++            // org.spongycastle.jce.provider.BouncyCastleProvider(),2);
+         }
+         // logger and config
+         log.info("Tor implementation of silvertunnel.org is starting up");
+diff -Bbur silvertunnel.org_netlib/src/main/java/org/silvertunnel/netlib/layer/tor/directory/HiddenServiceProperties.java silvertunnel.org-netlib-0.14-briar/src/main/java/org/silvertunnel/netlib/layer/tor/directory/HiddenServiceProperties.java
+--- silvertunnel.org_netlib/src/main/java/org/silvertunnel/netlib/layer/tor/directory/HiddenServiceProperties.java	2011-03-25 09:56:20.000000000 +0000
++++ silvertunnel.org-netlib-0.14-briar/src/main/java/org/silvertunnel/netlib/layer/tor/directory/HiddenServiceProperties.java	2012-11-16 18:48:45.354224491 +0000
+@@ -64,7 +64,7 @@
+         minimumNumberOfIntroPoints = 3;
+         try {
+             // generates a new random key pair on every start.
+-            KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA", "BC");
++            KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA", "SC");
+             generator.initialize(1024, new SecureRandom());
+             KeyPair keypair = generator.generateKeyPair();
+             pub = (RSAPublicKey) keypair.getPublic();
+diff -Bbur silvertunnel.org_netlib/src/main/java/org/silvertunnel/netlib/layer/tor/directory/RouterImpl.java silvertunnel.org-netlib-0.14-briar/src/main/java/org/silvertunnel/netlib/layer/tor/directory/RouterImpl.java
+--- silvertunnel.org_netlib/src/main/java/org/silvertunnel/netlib/layer/tor/directory/RouterImpl.java	2012-09-02 11:58:16.000000000 +0100
++++ silvertunnel.org-netlib-0.14-briar/src/main/java/org/silvertunnel/netlib/layer/tor/directory/RouterImpl.java	2013-01-04 00:34:36.209293886 +0000
+@@ -156,7 +156,7 @@
+             PLATFORM_PATTERN = Parsing.compileRegexPattern("^platform (.*?)$");
+             PUBLISHED_PATTERN = Parsing.compileRegexPattern("^published (.*?)$");
+             UPTIME_PATTERN = Parsing.compileRegexPattern("^uptime (\\d+)");
+-            FINGERPRINT_PATTERN = Parsing.compileRegexPattern("^opt fingerprint (.*?)$");
++            FINGERPRINT_PATTERN = Parsing.compileRegexPattern("^(?:opt )?fingerprint (.*?)$");
+             CONTACT_PATTERN = Parsing.compileRegexPattern("^contact (.*?)$");
+             ROUTER_PATTERN2 = Parsing.compileRegexPattern("^bandwidth (\\d+) (\\d+) (\\d+)?");
+             ONIONKEY_PATTERN = Parsing.compileRegexPattern("^onion-key\n(.*?END RSA PUBLIC KEY......)");
+@@ -477,7 +477,7 @@
+         try {
+             fingerprint = new FingerprintImpl(Encoding.parseHex(Parsing.parseStringByRE(rd, FINGERPRINT_PATTERN, "")));
+         } catch (Exception e) {
+-                throw new TorException("Server " + nickname + " skipped as router");
++                throw new TorException("Server " + nickname + " skipped as router: " + e);
+         }
+         contact = Parsing.parseStringByRE(rd, CONTACT_PATTERN, "");
+ 
+diff -Bbur silvertunnel.org_netlib/src/main/java/org/silvertunnel/netlib/layer/tor/util/Encoding.java silvertunnel.org-netlib-0.14-briar/src/main/java/org/silvertunnel/netlib/layer/tor/util/Encoding.java
+--- silvertunnel.org_netlib/src/main/java/org/silvertunnel/netlib/layer/tor/util/Encoding.java	2012-01-19 16:46:10.000000000 +0000
++++ silvertunnel.org-netlib-0.14-briar/src/main/java/org/silvertunnel/netlib/layer/tor/util/Encoding.java	2012-11-16 18:37:17.762139243 +0000
+@@ -250,7 +250,7 @@
+ 
+     /** creates an base64-string out of a byte[] */
+     public static String toBase64(byte[] data) {
+-        return new String(org.bouncycastle.util.encoders.Base64.encode(data));
++        return new String(org.spongycastle.util.encoders.Base64.encode(data));
+     }
+ 
+     /**
+diff -Bbur silvertunnel.org_netlib/src/main/java/org/silvertunnel/netlib/layer/tor/util/Encryption.java silvertunnel.org-netlib-0.14-briar/src/main/java/org/silvertunnel/netlib/layer/tor/util/Encryption.java
+--- silvertunnel.org_netlib/src/main/java/org/silvertunnel/netlib/layer/tor/util/Encryption.java	2012-01-19 16:46:10.000000000 +0000
++++ silvertunnel.org-netlib-0.14-briar/src/main/java/org/silvertunnel/netlib/layer/tor/util/Encryption.java	2012-11-20 15:27:08.128469232 +0000
+@@ -60,21 +60,22 @@
+ 
+ import javax.crypto.Cipher;
+ 
+-import org.bouncycastle.asn1.ASN1InputStream;
+-import org.bouncycastle.asn1.ASN1OutputStream;
+-import org.bouncycastle.asn1.ASN1Sequence;
+-import org.bouncycastle.asn1.x509.RSAPublicKeyStructure;
+-import org.bouncycastle.crypto.InvalidCipherTextException;
+-import org.bouncycastle.crypto.encodings.OAEPEncoding;
+-import org.bouncycastle.crypto.encodings.PKCS1Encoding;
+-import org.bouncycastle.crypto.engines.RSAEngine;
+-import org.bouncycastle.crypto.params.RSAKeyParameters;
+-import org.bouncycastle.jce.provider.JCERSAPrivateCrtKey;
+-import org.bouncycastle.jce.provider.JCERSAPrivateKey;
+-import org.bouncycastle.jce.provider.JCERSAPublicKey;
+-import org.bouncycastle.openssl.PEMReader;
+-import org.bouncycastle.openssl.PEMWriter;
+-import org.bouncycastle.util.encoders.Base64;
++import org.spongycastle.asn1.ASN1InputStream;
++import org.spongycastle.asn1.ASN1OutputStream;
++import org.spongycastle.asn1.ASN1Sequence;
++import org.spongycastle.asn1.x509.RSAPublicKeyStructure;
++import org.spongycastle.crypto.InvalidCipherTextException;
++import org.spongycastle.crypto.encodings.OAEPEncoding;
++import org.spongycastle.crypto.encodings.PKCS1Encoding;
++import org.spongycastle.crypto.engines.RSAEngine;
++import org.spongycastle.crypto.params.RSAKeyParameters;
++import org.spongycastle.jcajce.provider.asymmetric.rsa.BCRSAPublicKey;
++import org.spongycastle.jce.provider.JCERSAPrivateCrtKey;
++import org.spongycastle.jce.provider.JCERSAPrivateKey;
++import org.spongycastle.jce.provider.JCERSAPublicKey;
++import org.spongycastle.openssl.PEMReader;
++import org.spongycastle.openssl.PEMWriter;
++import org.spongycastle.util.encoders.Base64;
+ 
+ 
+ 
+@@ -94,11 +95,11 @@
+ 
+     static {
+         try {
+-            // install BC, if not already done
+-            if (Security.getProvider("BC") == null) {
+-                Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
++            // install SC, if not already done
++            if (Security.getProvider("SC") == null) {
++                Security.addProvider(new org.spongycastle.jce.provider.BouncyCastleProvider());
+                 // Security.insertProviderAt(new
+-                // org.bouncycastle.jce.provider.BouncyCastleProvider(),2);
++                // org.spongycastle.jce.provider.BouncyCastleProvider(),2);
+             }
+         } catch (Throwable t) {
+             log.log(Level.SEVERE, "Cannot initialize class Encryption", t);
+@@ -340,11 +341,15 @@
+         try {
+             PEMReader reader = new PEMReader(new StringReader(s));
+             Object o = reader.readObject();
+-            if (!(o instanceof JCERSAPublicKey)) {
++            if (o instanceof JCERSAPublicKey) {
++                JCERSAPublicKey jceKey = (JCERSAPublicKey) o;
++                theKey = getRSAPublicKey(jceKey.getModulus(), jceKey.getPublicExponent());
++            } else if (o instanceof BCRSAPublicKey) {
++                BCRSAPublicKey bcKey = (BCRSAPublicKey) o;
++                theKey = getRSAPublicKey(bcKey.getModulus(), bcKey.getPublicExponent());
++            } else {
+                 throw new IOException("Encryption.extractPublicRSAKey: no public key found in string '" + s + "'");
+             }
+-            JCERSAPublicKey JCEKey = (JCERSAPublicKey) o;
+-            theKey = getRSAPublicKey(JCEKey.getModulus(), JCEKey.getPublicExponent());
+    
+         } catch (Exception e) {
+             log.warning("Encryption.extractPublicRSAKey: Caught exception:" + e.getMessage());
+diff -Bbur silvertunnel.org_netlib/src/main/java/org/silvertunnel/netlib/layer/tor/util/PrivateKeyHandler.java silvertunnel.org-netlib-0.14-briar/src/main/java/org/silvertunnel/netlib/layer/tor/util/PrivateKeyHandler.java
+--- silvertunnel.org_netlib/src/main/java/org/silvertunnel/netlib/layer/tor/util/PrivateKeyHandler.java	2011-03-25 09:56:22.000000000 +0000
++++ silvertunnel.org-netlib-0.14-briar/src/main/java/org/silvertunnel/netlib/layer/tor/util/PrivateKeyHandler.java	2012-11-16 18:48:53.282158910 +0000
+@@ -50,7 +50,7 @@
+      */
+     public PrivateKeyHandler() {
+         try {
+-            KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA", "BC");
++            KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA", "SC");
+             generator.initialize(1024, new SecureRandom());
+             keypair = generator.generateKeyPair();
+         } catch (Exception e) {
+@@ -78,16 +78,16 @@
+ 
+     public java.security.cert.X509Certificate[] getCertificateChain(String alias) {
+         try {
+-            org.bouncycastle.x509.X509V3CertificateGenerator generator = new org.bouncycastle.x509.X509V3CertificateGenerator();
++            org.spongycastle.x509.X509V3CertificateGenerator generator = new org.spongycastle.x509.X509V3CertificateGenerator();
+             generator.reset();
+             generator.setSerialNumber(BigInteger.valueOf(42));
+             generator.setNotBefore(new Date( System.currentTimeMillis() - 24L * 3600 * 1000));
+             generator.setNotAfter(new Date(System.currentTimeMillis() + 365L * 24 * 3600 * 1000));
+-            generator.setIssuerDN(new org.bouncycastle.asn1.x509.X509Name( "CN="+Util.MYNAME));
+-            generator.setSubjectDN(new org.bouncycastle.asn1.x509.X509Name("CN="+Util.MYNAME));
++            generator.setIssuerDN(new org.spongycastle.asn1.x509.X509Name( "CN="+Util.MYNAME));
++            generator.setSubjectDN(new org.spongycastle.asn1.x509.X509Name("CN="+Util.MYNAME));
+             generator.setPublicKey(keypair.getPublic());
+             generator.setSignatureAlgorithm("SHA1WITHRSA");
+-            java.security.cert.X509Certificate x509 = generator.generate(keypair.getPrivate(), "BC");
++            java.security.cert.X509Certificate x509 = generator.generate(keypair.getPrivate(), "SC");
+             java.security.cert.X509Certificate[] x509s = new java.security.cert.X509Certificate[2];
+             
+             // send the same certificate twice works fine with the default implementation of tor!
+diff -Bbur silvertunnel.org_netlib/src/main/java/org/silvertunnel/netlib/util/Base64.java silvertunnel.org-netlib-0.14-briar/src/main/java/org/silvertunnel/netlib/util/Base64.java
+--- silvertunnel.org_netlib/src/main/java/org/silvertunnel/netlib/util/Base64.java	2012-01-19 16:46:10.000000000 +0000
++++ silvertunnel.org-netlib-0.14-briar/src/main/java/org/silvertunnel/netlib/util/Base64.java	2012-11-16 18:37:46.506222108 +0000
+@@ -34,7 +34,7 @@
+      */
+     public static String encode(byte[] input) {
+         try {
+-            return new String(org.bouncycastle.util.encoders.Base64.encode(input), UTF8);
++            return new String(org.spongycastle.util.encoders.Base64.encode(input), UTF8);
+         } catch (Exception e) {
+             return null;
+         }
+@@ -48,7 +48,7 @@
+      */
+     public static byte[] decode(String input) {
+         try {
+-            return org.bouncycastle.util.encoders.Base64.decode(input);
++            return org.spongycastle.util.encoders.Base64.decode(input);
+         } catch (Exception e) {
+             return null;
+         }
+diff -Bbur silvertunnel.org_netlib/src/test/java/org/silvertunnel/netlib/layer/tor/directory/AuthorityKeyCertificatesLocalTest.java silvertunnel.org-netlib-0.14-briar/src/test/java/org/silvertunnel/netlib/layer/tor/directory/AuthorityKeyCertificatesLocalTest.java
+--- silvertunnel.org_netlib/src/test/java/org/silvertunnel/netlib/layer/tor/directory/AuthorityKeyCertificatesLocalTest.java	2012-01-19 16:46:08.000000000 +0000
++++ silvertunnel.org-netlib-0.14-briar/src/test/java/org/silvertunnel/netlib/layer/tor/directory/AuthorityKeyCertificatesLocalTest.java	2012-11-16 18:38:10.338141454 +0000
+@@ -53,9 +53,9 @@
+     
+     @BeforeClass
+     public static void setUpClass() throws Exception {
+-        // install BC, if not already done
+-        if(Security.getProvider("BC")==null) {
+-            Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
++        // install SC, if not already done
++        if(Security.getProvider("SC")==null) {
++            Security.addProvider(new org.spongycastle.jce.provider.BouncyCastleProvider());
+         }    
+     }
+     
+diff -Bbur silvertunnel.org_netlib/src/test/java/org/silvertunnel/netlib/layer/tor/directory/DirectoryConsensusLocalTest.java silvertunnel.org-netlib-0.14-briar/src/test/java/org/silvertunnel/netlib/layer/tor/directory/DirectoryConsensusLocalTest.java
+--- silvertunnel.org_netlib/src/test/java/org/silvertunnel/netlib/layer/tor/directory/DirectoryConsensusLocalTest.java	2012-01-19 16:46:08.000000000 +0000
++++ silvertunnel.org-netlib-0.14-briar/src/test/java/org/silvertunnel/netlib/layer/tor/directory/DirectoryConsensusLocalTest.java	2012-11-16 18:38:16.654139552 +0000
+@@ -60,9 +60,9 @@
+     
+     @BeforeClass
+     public static void setUpClass() throws Exception {
+-        // install BC, if not already done
+-        if (Security.getProvider("BC")==null) {
+-            Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
++        // install SC, if not already done
++        if (Security.getProvider("SC")==null) {
++            Security.addProvider(new org.spongycastle.jce.provider.BouncyCastleProvider());
+         }    
+     }
+