diff --git a/components/net/sf/briar/crypto/CryptoComponentImpl.java b/components/net/sf/briar/crypto/CryptoComponentImpl.java index ab0458e96..37f25dad4 100644 --- a/components/net/sf/briar/crypto/CryptoComponentImpl.java +++ b/components/net/sf/briar/crypto/CryptoComponentImpl.java @@ -13,12 +13,13 @@ import net.sf.briar.api.crypto.KeyParser; import org.bouncycastle.jce.provider.BouncyCastleProvider; -public class CryptoComponentImpl implements CryptoComponent { +class CryptoComponentImpl implements CryptoComponent { private static final String PROVIDER = "BC"; private static final String DIGEST_ALGO = "SHA-256"; - private static final String KEY_PAIR_ALGO = "RSA"; - private static final String SIGNATURE_ALGO = "SHA256withRSA"; + private static final String KEY_PAIR_ALGO = "ECDSA"; + private static final int KEY_PAIR_KEYSIZE = 256; + private static final String SIGNATURE_ALGO = "ECDSA"; private final KeyParser keyParser; private final KeyPairGenerator keyPairGenerator; @@ -29,6 +30,7 @@ public class CryptoComponentImpl implements CryptoComponent { keyParser = new KeyParserImpl(KEY_PAIR_ALGO, PROVIDER); keyPairGenerator = KeyPairGenerator.getInstance(KEY_PAIR_ALGO, PROVIDER); + keyPairGenerator.initialize(KEY_PAIR_KEYSIZE); } catch(NoSuchAlgorithmException impossible) { throw new RuntimeException(impossible); } catch(NoSuchProviderException impossible) { diff --git a/test/net/sf/briar/protocol/ConsumersTest.java b/test/net/sf/briar/protocol/ConsumersTest.java index 22c290830..f3ef6140d 100644 --- a/test/net/sf/briar/protocol/ConsumersTest.java +++ b/test/net/sf/briar/protocol/ConsumersTest.java @@ -37,14 +37,13 @@ public class ConsumersTest extends TestCase { signature.initSign(keyPair.getPrivate()); signature.update(data); byte[] sig = signature.sign(); - // Check that feeding a SigningConsumer generates the same signature - signature.initSign(keyPair.getPrivate()); + // Check that a SigningConsumer fed with the same data verifies the sig + signature.initVerify(keyPair.getPublic()); SigningConsumer sc = new SigningConsumer(signature); sc.write(data[0]); sc.write(data, 1, data.length - 2); sc.write(data[data.length - 1]); - byte[] sig1 = signature.sign(); - assertTrue(Arrays.equals(sig, sig1)); + assertTrue(signature.verify(sig)); } @Test diff --git a/test/net/sf/briar/protocol/SigningDigestingOutputStreamTest.java b/test/net/sf/briar/protocol/SigningDigestingOutputStreamTest.java index cf58b29fc..40ea0c496 100644 --- a/test/net/sf/briar/protocol/SigningDigestingOutputStreamTest.java +++ b/test/net/sf/briar/protocol/SigningDigestingOutputStreamTest.java @@ -54,11 +54,10 @@ public class SigningDigestingOutputStreamTest extends TestCase { byte[] digest = messageDigest.digest(); // Check that the output matches the input assertTrue(Arrays.equals(input, out.toByteArray())); - // Check that the signature matches a signature over the first 256 bytes - signature.initSign(keyPair.getPrivate()); + // Verify the signature over the first 256 bytes + signature.initVerify(keyPair.getPublic()); signature.update(input, 0, 256); - byte[] directSig = signature.sign(); - assertTrue(Arrays.equals(directSig, sig)); + assertTrue(signature.verify(sig)); // Check that the digest matches a digest over all but the last 256 // bytes messageDigest.reset();