View Javadoc
1   package civitas.crypto.petdecommitment;
2   
3   import static org.junit.jupiter.api.Assertions.assertEquals;
4   import static org.junit.jupiter.api.Assertions.assertThrows;
5   import static org.mockito.Mockito.verify;
6   
7   import org.junit.jupiter.api.DisplayName;
8   import org.junit.jupiter.api.Test;
9   import org.mockito.InjectMocks;
10  
11  import civitas.crypto.petshare.PETShareTestData;
12  import civitas.util.CivitasBigInteger;
13  import io.github.magwas.testing.TestBase;
14  
15  class ConstructPETDecommitmentTest extends TestBase implements PETDecommitmentTestData, PETShareTestData {
16  
17  	@InjectMocks
18  	ConstructPETDecommitment constructPETDecommitment;
19  
20  	@Test
21  	@DisplayName("decommitment returns a PETDecommitment "
22  			+ "d=c1.a/c2.a (mod p), " + "e=c1.b/c2.b (mod p), "
23  			+ "proof=ElGamalDiscLogEqualityProof(parameters,d,e,exponent), "
24  			+ "di = d^exponent (mod p), " + "ei = e^exponent (mod p), "
25  			+ "returns PETDecommitment(di,ei,proof)")
26  	void decommitmentTest() {
27  		CivitasBigInteger exponent = FACTOR_E;
28  
29  		CivitasBigInteger di =
30  				CIPHERTEXT_E_A.modDivide(CIPHERTEXT_EPRIME_A, BIGINT_P).modPow(exponent, BIGINT_P);
31  		CivitasBigInteger ei =
32  				CIPHERTEXT_E_B.modDivide(CIPHERTEXT_EPRIME_B, BIGINT_P).modPow(exponent, BIGINT_P);
33  
34  		PETDecommitment decommitment =
35  				constructPETDecommitment.apply(EL_GAMAL_PARAMETERS, exponent, CIPHERTEXT_E, CIPHERTEXT_EPRIME);
36  		assertEquals(di, decommitment.di());
37  		assertEquals(ei, decommitment.ei());
38  
39  		verify(constructPETDecommitment.constructElGamalDiscLogEqualityProof)
40  				.apply(
41  						EL_GAMAL_PARAMETERS,
42  						CIPHERTEXT_E_A.modDivide(CIPHERTEXT_EPRIME_A, BIGINT_P),
43  						CIPHERTEXT_E_B.modDivide(CIPHERTEXT_EPRIME_B, BIGINT_P),
44  						FACTOR_E);
45  		assertEquals(PET_DECOMMITMENT, decommitment);
46  	}
47  
48  	@Test
49  	@DisplayName("decommitment cannot be instantiated with null arguments")
50  	void decommitmentNullTest() {
51  		assertThrows(NullPointerException.class, () -> new PETDecommitment(null, null, null));
52  	}
53  }