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.fail;
5   
6   import java.lang.reflect.Field;
7   
8   import org.junit.jupiter.api.DisplayName;
9   import org.junit.jupiter.api.Test;
10  import org.mockito.InjectMocks;
11  
12  import civitas.crypto.ciphertext.ElGamalCiphertext;
13  import civitas.crypto.petcommitment.CombinePETShareDecommitments;
14  import civitas.crypto.proofdisclog.VerifyElGamalProofDiscLogEquality;
15  import io.github.magwas.testing.TestBase;
16  
17  class CombinePETShareDecommitmentsTest extends TestBase implements PETDecommitmentTestData {
18  
19  	@InjectMocks
20  	CombinePETShareDecommitments combinePETShareDecommitments;
21  
22  	@Test
23  	@DisplayName("multiplies di and ei fields")
24  	void test() {
25  		ElGamalCiphertext actual = combinePETShareDecommitments.apply(PET_DECOMMITMENTS, EL_GAMAL_PARAMETERS);
26  		assertEquals(PET_DECOMMITMENT_D.modMultiply(BIGINT_A, BIGINT_P), actual.a);
27  		assertEquals(PET_DECOMMITMENT_E.modMultiply(BIGINT_B, BIGINT_P), actual.b);
28  	}
29  
30  	@Test
31  	@DisplayName("does NOT check the proofs")
32  	void test2() {
33  		Field[] fields = CombinePETShareDecommitments.class.getFields();
34  		for (Field field : fields) {
35  			if (field.getType() == VerifyElGamalProofDiscLogEquality.class) {
36  				fail();
37  			}
38  		}
39  	}
40  
41  	@Test
42  	@DisplayName("returns a ciphertext with a=ONE, b=ONE if decs is null")
43  	void test3() {
44  		assertEquals(new ElGamalCiphertext(ONE, ONE), combinePETShareDecommitments.apply(null, EL_GAMAL_PARAMETERS));
45  	}
46  
47  	@Test
48  	@DisplayName("the three parameter version uses d to multiply a of the ciphertext")
49  	void test4() {
50  		ElGamalCiphertext actual = combinePETShareDecommitments.apply(PET_DECOMMITMENTS, EL_GAMAL_PARAMETERS, TWO);
51  		assertEquals(PET_DECOMMITMENT_D.modMultiply(BIGINT_A, BIGINT_P).modMultiply(TWO, BIGINT_P), actual.a);
52  		assertEquals(PET_DECOMMITMENT_E.modMultiply(BIGINT_B, BIGINT_P), actual.b);
53  	}
54  }