diff --git a/briar-core/src/org/briarproject/crypto/Sec1KeyParser.java b/briar-core/src/org/briarproject/crypto/Sec1KeyParser.java
index e64de28aaa0e9aafdfd78c2495c14897f60f3c03..0446c6a523c3243bb5ccf848636f28e09e9a8b9b 100644
--- a/briar-core/src/org/briarproject/crypto/Sec1KeyParser.java
+++ b/briar-core/src/org/briarproject/crypto/Sec1KeyParser.java
@@ -9,6 +9,7 @@ import org.briarproject.api.crypto.PublicKey;
 import org.spongycastle.crypto.params.ECDomainParameters;
 import org.spongycastle.crypto.params.ECPrivateKeyParameters;
 import org.spongycastle.crypto.params.ECPublicKeyParameters;
+import org.spongycastle.math.ec.ECCurve;
 import org.spongycastle.math.ec.ECPoint;
 
 /**
@@ -50,13 +51,14 @@ class Sec1KeyParser implements KeyParser {
 		BigInteger y = new BigInteger(1, yBytes); // Positive signum
 		if(y.compareTo(modulus) >= 0) throw new GeneralSecurityException();
 		// Verify that y^2 == x^3 + ax + b (mod p)
-		BigInteger a = params.getCurve().getA().toBigInteger();
-		BigInteger b = params.getCurve().getB().toBigInteger();
+		ECCurve curve = params.getCurve();
+		BigInteger a = curve.getA().toBigInteger();
+		BigInteger b = curve.getB().toBigInteger();
 		BigInteger lhs = y.multiply(y).mod(modulus);
 		BigInteger rhs = x.multiply(x).add(a).multiply(x).add(b).mod(modulus);
 		if(!lhs.equals(rhs)) throw new GeneralSecurityException();
 		// We know the point (x, y) is on the curve, so we can create the point
-		ECPoint pub = params.getCurve().createPoint(x, y);
+		ECPoint pub = curve.createPoint(x, y).normalize();
 		// Verify that the point (x, y) is not the point at infinity
 		if(pub.isInfinity()) throw new GeneralSecurityException();
 		// Verify that the point (x, y) times n is the point at infinity
diff --git a/briar-core/src/org/briarproject/crypto/Sec1PublicKey.java b/briar-core/src/org/briarproject/crypto/Sec1PublicKey.java
index 290f35ce19bf1a85d2877ddaa4c10b2f89dfde86..95523c79b85a77c5b594ca519243368898a85a09 100644
--- a/briar-core/src/org/briarproject/crypto/Sec1PublicKey.java
+++ b/briar-core/src/org/briarproject/crypto/Sec1PublicKey.java
@@ -1,8 +1,8 @@
 package org.briarproject.crypto;
 
 import org.briarproject.api.crypto.PublicKey;
-
 import org.spongycastle.crypto.params.ECPublicKeyParameters;
+import org.spongycastle.math.ec.ECPoint;
 
 /**
  * An elliptic curve public key that uses the encoding defined in "SEC 1:
@@ -23,9 +23,10 @@ class Sec1PublicKey implements PublicKey {
 	public byte[] getEncoded() {
 		byte[] encodedKey = new byte[publicKeyBytes];
 		encodedKey[0] = 4;
-		byte[] x = key.getQ().getAffineXCoord().toBigInteger().toByteArray();
+		ECPoint pub = key.getQ().normalize();
+		byte[] x = pub.getAffineXCoord().toBigInteger().toByteArray();
 		Sec1Utils.convertToFixedLength(x, encodedKey, 1, bytesPerInt);
-		byte[] y = key.getQ().getAffineYCoord().toBigInteger().toByteArray();
+		byte[] y = pub.getAffineYCoord().toBigInteger().toByteArray();
 		Sec1Utils.convertToFixedLength(y, encodedKey, 1 + bytesPerInt,
 				bytesPerInt);
 		return encodedKey;