Skip to content

Commit

Permalink
One-shot mode tests
Browse files Browse the repository at this point in the history
  • Loading branch information
str4d committed Feb 28, 2016
1 parent 566c055 commit 0b39aae
Showing 1 changed file with 88 additions and 1 deletion.
89 changes: 88 additions & 1 deletion test/net/i2p/crypto/eddsa/EdDSAEngineTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,6 @@ public void testSignResetsForReuse() throws Exception {

@Test
public void testVerifyResetsForReuse() throws Exception {
//Signature sgr = Signature.getInstance("EdDSA", "I2P");
Signature sgr = new EdDSAEngine(MessageDigest.getInstance("SHA-512"));

EdDSAPublicKeySpec pubKey = new EdDSAPublicKeySpec(TEST_PK,
Expand All @@ -124,4 +123,92 @@ public void testVerifyResetsForReuse() throws Exception {
sgr.update(TEST_MSG);
assertThat("Second verify failed", sgr.verify(TEST_MSG_SIG), is(true));
}

@Test
public void testSignOneShotMode() throws Exception {
Signature sgr = new EdDSAEngine(MessageDigest.getInstance("SHA-512"));
EdDSAParameterSpec spec = EdDSANamedCurveTable.getByName("ed25519-sha-512");

EdDSAPrivateKeySpec privKey = new EdDSAPrivateKeySpec(TEST_SEED, spec);
PrivateKey sKey = new EdDSAPrivateKey(privKey);
sgr.initSign(sKey);
sgr.setParameter(EdDSAEngine.ONE_SHOT_MODE);

sgr.update(TEST_MSG);

assertThat("One-shot mode sign failed", sgr.sign(), is(equalTo(TEST_MSG_SIG)));
}

@Test
public void testVerifyOneShotMode() throws Exception {
Signature sgr = new EdDSAEngine(MessageDigest.getInstance("SHA-512"));

EdDSAPublicKeySpec pubKey = new EdDSAPublicKeySpec(TEST_PK,
EdDSANamedCurveTable.getByName("ed25519-sha-512"));
PublicKey vKey = new EdDSAPublicKey(pubKey);
sgr.initVerify(vKey);
sgr.setParameter(EdDSAEngine.ONE_SHOT_MODE);

sgr.update(TEST_MSG);

assertThat("One-shot mode verify failed", sgr.verify(TEST_MSG_SIG), is(true));
}

@Test
public void testSignOneShotModeMultipleUpdates() throws Exception {
Signature sgr = new EdDSAEngine(MessageDigest.getInstance("SHA-512"));
EdDSAParameterSpec spec = EdDSANamedCurveTable.getByName("ed25519-sha-512");

EdDSAPrivateKeySpec privKey = new EdDSAPrivateKeySpec(TEST_SEED, spec);
PrivateKey sKey = new EdDSAPrivateKey(privKey);
sgr.initSign(sKey);
sgr.setParameter(EdDSAEngine.ONE_SHOT_MODE);

sgr.update(TEST_MSG);

exception.expect(SignatureException.class);
exception.expectMessage("update() already called");
sgr.update(TEST_MSG);
}

@Test
public void testVerifyOneShotModeMultipleUpdates() throws Exception {
Signature sgr = new EdDSAEngine(MessageDigest.getInstance("SHA-512"));

EdDSAPublicKeySpec pubKey = new EdDSAPublicKeySpec(TEST_PK,
EdDSANamedCurveTable.getByName("ed25519-sha-512"));
PublicKey vKey = new EdDSAPublicKey(pubKey);
sgr.initVerify(vKey);
sgr.setParameter(EdDSAEngine.ONE_SHOT_MODE);

sgr.update(TEST_MSG);

exception.expect(SignatureException.class);
exception.expectMessage("update() already called");
sgr.update(TEST_MSG);
}

@Test
public void testSignOneShot() throws Exception {
EdDSAEngine sgr = new EdDSAEngine(MessageDigest.getInstance("SHA-512"));
EdDSAParameterSpec spec = EdDSANamedCurveTable.getByName("ed25519-sha-512");

EdDSAPrivateKeySpec privKey = new EdDSAPrivateKeySpec(TEST_SEED, spec);
PrivateKey sKey = new EdDSAPrivateKey(privKey);
sgr.initSign(sKey);

assertThat("signOneShot() failed", sgr.signOneShot(TEST_MSG), is(equalTo(TEST_MSG_SIG)));
}

@Test
public void testVerifyOneShot() throws Exception {
EdDSAEngine sgr = new EdDSAEngine(MessageDigest.getInstance("SHA-512"));

EdDSAPublicKeySpec pubKey = new EdDSAPublicKeySpec(TEST_PK,
EdDSANamedCurveTable.getByName("ed25519-sha-512"));
PublicKey vKey = new EdDSAPublicKey(pubKey);
sgr.initVerify(vKey);

assertThat("verifyOneShot() failed", sgr.verifyOneShot(TEST_MSG, TEST_MSG_SIG), is(true));
}
}

0 comments on commit 0b39aae

Please sign in to comment.