mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-17 05:09:53 +01:00
Switched to 256-bit ECDSA. Modified some tests because two signatures
over the same data are not necessarily identical. Key generation is fast again - should I be worried? ;-)
This commit is contained in:
@@ -13,12 +13,13 @@ import net.sf.briar.api.crypto.KeyParser;
|
|||||||
|
|
||||||
import org.bouncycastle.jce.provider.BouncyCastleProvider;
|
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 PROVIDER = "BC";
|
||||||
private static final String DIGEST_ALGO = "SHA-256";
|
private static final String DIGEST_ALGO = "SHA-256";
|
||||||
private static final String KEY_PAIR_ALGO = "RSA";
|
private static final String KEY_PAIR_ALGO = "ECDSA";
|
||||||
private static final String SIGNATURE_ALGO = "SHA256withRSA";
|
private static final int KEY_PAIR_KEYSIZE = 256;
|
||||||
|
private static final String SIGNATURE_ALGO = "ECDSA";
|
||||||
|
|
||||||
private final KeyParser keyParser;
|
private final KeyParser keyParser;
|
||||||
private final KeyPairGenerator keyPairGenerator;
|
private final KeyPairGenerator keyPairGenerator;
|
||||||
@@ -29,6 +30,7 @@ public class CryptoComponentImpl implements CryptoComponent {
|
|||||||
keyParser = new KeyParserImpl(KEY_PAIR_ALGO, PROVIDER);
|
keyParser = new KeyParserImpl(KEY_PAIR_ALGO, PROVIDER);
|
||||||
keyPairGenerator = KeyPairGenerator.getInstance(KEY_PAIR_ALGO,
|
keyPairGenerator = KeyPairGenerator.getInstance(KEY_PAIR_ALGO,
|
||||||
PROVIDER);
|
PROVIDER);
|
||||||
|
keyPairGenerator.initialize(KEY_PAIR_KEYSIZE);
|
||||||
} catch(NoSuchAlgorithmException impossible) {
|
} catch(NoSuchAlgorithmException impossible) {
|
||||||
throw new RuntimeException(impossible);
|
throw new RuntimeException(impossible);
|
||||||
} catch(NoSuchProviderException impossible) {
|
} catch(NoSuchProviderException impossible) {
|
||||||
|
|||||||
@@ -37,14 +37,13 @@ public class ConsumersTest extends TestCase {
|
|||||||
signature.initSign(keyPair.getPrivate());
|
signature.initSign(keyPair.getPrivate());
|
||||||
signature.update(data);
|
signature.update(data);
|
||||||
byte[] sig = signature.sign();
|
byte[] sig = signature.sign();
|
||||||
// Check that feeding a SigningConsumer generates the same signature
|
// Check that a SigningConsumer fed with the same data verifies the sig
|
||||||
signature.initSign(keyPair.getPrivate());
|
signature.initVerify(keyPair.getPublic());
|
||||||
SigningConsumer sc = new SigningConsumer(signature);
|
SigningConsumer sc = new SigningConsumer(signature);
|
||||||
sc.write(data[0]);
|
sc.write(data[0]);
|
||||||
sc.write(data, 1, data.length - 2);
|
sc.write(data, 1, data.length - 2);
|
||||||
sc.write(data[data.length - 1]);
|
sc.write(data[data.length - 1]);
|
||||||
byte[] sig1 = signature.sign();
|
assertTrue(signature.verify(sig));
|
||||||
assertTrue(Arrays.equals(sig, sig1));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
@@ -54,11 +54,10 @@ public class SigningDigestingOutputStreamTest extends TestCase {
|
|||||||
byte[] digest = messageDigest.digest();
|
byte[] digest = messageDigest.digest();
|
||||||
// Check that the output matches the input
|
// Check that the output matches the input
|
||||||
assertTrue(Arrays.equals(input, out.toByteArray()));
|
assertTrue(Arrays.equals(input, out.toByteArray()));
|
||||||
// Check that the signature matches a signature over the first 256 bytes
|
// Verify the signature over the first 256 bytes
|
||||||
signature.initSign(keyPair.getPrivate());
|
signature.initVerify(keyPair.getPublic());
|
||||||
signature.update(input, 0, 256);
|
signature.update(input, 0, 256);
|
||||||
byte[] directSig = signature.sign();
|
assertTrue(signature.verify(sig));
|
||||||
assertTrue(Arrays.equals(directSig, sig));
|
|
||||||
// Check that the digest matches a digest over all but the last 256
|
// Check that the digest matches a digest over all but the last 256
|
||||||
// bytes
|
// bytes
|
||||||
messageDigest.reset();
|
messageDigest.reset();
|
||||||
|
|||||||
Reference in New Issue
Block a user