diff --git a/bramble-core/src/main/java/org/briarproject/bramble/crypto/CryptoComponentImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/crypto/CryptoComponentImpl.java
index 66f845c31ddb777b2ba8f1e92dd285dd550e61d4..e92babdc038c6218508c5bdfb9e068cd5d46fda5 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/crypto/CryptoComponentImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/crypto/CryptoComponentImpl.java
@@ -483,7 +483,7 @@ class CryptoComponentImpl implements CryptoComponent {
 	}
 
 	private void updateSignature(Signature signature, String label,
-			byte[] toSign) {
+			byte[] toSign) throws GeneralSecurityException {
 		byte[] labelBytes = StringUtils.toUtf8(label);
 		byte[] length = new byte[INT_32_BYTES];
 		ByteUtils.writeUint32(labelBytes.length, length, 0);
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/crypto/EdSignature.java b/bramble-core/src/main/java/org/briarproject/bramble/crypto/EdSignature.java
index 7d3a658e61d639ee8d8b9a9edd50827aba73e1d4..081e810ffa9da32b1f20640472cd365ec0cd97c8 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/crypto/EdSignature.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/crypto/EdSignature.java
@@ -15,7 +15,6 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import java.security.GeneralSecurityException;
 import java.security.NoSuchAlgorithmException;
 import java.security.Provider;
-import java.security.SignatureException;
 
 import static net.i2p.crypto.eddsa.EdDSAEngine.SIGNATURE_ALGORITHM;
 
@@ -57,47 +56,28 @@ class EdSignature implements Signature {
 	}
 
 	@Override
-	public void update(byte b) {
-		try {
-			signature.update(b);
-		} catch (SignatureException e) {
-			throw new RuntimeException(e);
-		}
+	public void update(byte b) throws GeneralSecurityException {
+		signature.update(b);
 	}
 
 	@Override
-	public void update(byte[] b) {
-		try {
-			signature.update(b);
-		} catch (SignatureException e) {
-			throw new RuntimeException(e);
-		}
+	public void update(byte[] b) throws GeneralSecurityException {
+		signature.update(b);
 	}
 
 	@Override
-	public void update(byte[] b, int off, int len) {
-		try {
-			signature.update(b, off, len);
-		} catch (SignatureException e) {
-			throw new RuntimeException(e);
-		}
+	public void update(byte[] b, int off, int len)
+			throws GeneralSecurityException {
+		signature.update(b, off, len);
 	}
 
 	@Override
-	public byte[] sign() {
-		try {
-			return signature.sign();
-		} catch (SignatureException e) {
-			throw new RuntimeException(e);
-		}
+	public byte[] sign() throws GeneralSecurityException {
+		return signature.sign();
 	}
 
 	@Override
-	public boolean verify(byte[] sig) {
-		try {
-			return signature.verify(sig);
-		} catch (SignatureException e) {
-			throw new RuntimeException(e);
-		}
+	public boolean verify(byte[] sig) throws GeneralSecurityException {
+		return signature.verify(sig);
 	}
 }
diff --git a/bramble-core/src/main/java/org/briarproject/bramble/crypto/Signature.java b/bramble-core/src/main/java/org/briarproject/bramble/crypto/Signature.java
index f5684a7dd75e9942e538518db4b81b3e3ecf8a49..5e420ba62136a8bb2267533f38e22ff45ad4be3e 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/crypto/Signature.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/crypto/Signature.java
@@ -22,25 +22,25 @@ interface Signature {
 	/**
 	 * @see {@link java.security.Signature#update(byte)}
 	 */
-	void update(byte b);
+	void update(byte b) throws GeneralSecurityException;
 
 	/**
 	 * @see {@link java.security.Signature#update(byte[])}
 	 */
-	void update(byte[] b);
+	void update(byte[] b) throws GeneralSecurityException;
 
 	/**
 	 * @see {@link java.security.Signature#update(byte[], int, int)}
 	 */
-	void update(byte[] b, int off, int len);
+	void update(byte[] b, int off, int len) throws GeneralSecurityException;
 
 	/**
 	 * @see {@link java.security.Signature#sign()}
 	 */
-	byte[] sign();
+	byte[] sign() throws GeneralSecurityException;
 
 	/**
 	 * @see {@link java.security.Signature#verify(byte[])}
 	 */
-	boolean verify(byte[] signature);
+	boolean verify(byte[] signature) throws GeneralSecurityException;
 }