View Javadoc
1   package civitas.crypto.signature.tests;
2   
3   import static org.junit.jupiter.api.Assertions.assertFalse;
4   import static org.junit.jupiter.api.Assertions.assertTrue;
5   
6   import org.junit.jupiter.api.DisplayName;
7   import org.junit.jupiter.api.Test;
8   import org.mockito.InjectMocks;
9   
10  import civitas.common.ballotdesign.tests.BallotDesignTestData;
11  import civitas.crypto.signature.VerifyElGamalSignature;
12  import civitas.crypto.signedciphertext.tests.ElGamalSignedCiphertextTestData;
13  import io.github.magwas.konveyor.testing.TestBase;
14  
15  class VerifyElGamalSignatureTest extends TestBase implements ElGamalSignedCiphertextTestData, BallotDesignTestData {
16  	@InjectMocks
17  	VerifyElGamalSignature verifyElGamalSignature;
18  
19  	@Test
20  	@DisplayName("elGamalVerify works as expected: "
21  			+ "c == hash(g^d * a^(-c), a, b, env) %q, where c and d are used mod q, others mod p")
22  	void elGamalVerifyTest() {
23  
24  		assertTrue(verifyElGamalSignature.apply(
25  				EL_GAMAL_PARAMETERS,
26  				SIGNED_CIPHERTEXT_OF_MESSAGE_WITH_FACTOR_RANDOM0_ADDITIONALENV,
27  				ADDITIONALENV_BYTES));
28  	}
29  
30  	@Test
31  	@DisplayName("if the verification fails, false is returned")
32  	void test() {
33  
34  		assertFalse(verifyElGamalSignature.apply(
35  				EL_GAMAL_PARAMETERS,
36  				SIGNED_CIPHERTEXT_OF_MESSAGE_WITH_FACTOR_RANDOM0_ADDITIONALENV_BAD,
37  				ADDITIONALENV_BYTES));
38  	}
39  
40  	@Test
41  	@DisplayName("the version without env does the same without including env in the hash")
42  	void elGamalVerifyTest1() {
43  		assertTrue(verifyElGamalSignature.apply(EL_GAMAL_PARAMETERS, SIGNED_CIPHERTEXT_OF_MESSAGE_WITH_FACTOR_RANDOM0));
44  	}
45  
46  	@Test
47  	@DisplayName("when the version without env fails false returned")
48  	void t1() {
49  		assertFalse(verifyElGamalSignature.apply(
50  				EL_GAMAL_PARAMETERS, SIGNED_CIPHERTEXT_OF_MESSAGE_WITH_FACTOR_RANDOM0_BAD));
51  	}
52  }