View Javadoc
1   package civitas.crypto.ciphertextlist.tests;
2   
3   import static org.mockito.Mockito.mock;
4   
5   import java.util.List;
6   import java.util.stream.IntStream;
7   
8   import civitas.crypto.ciphertext.ElGamalCiphertext;
9   import civitas.crypto.ciphertext.ElGamalCiphertextish;
10  import civitas.crypto.ciphertext.tests.ElGamalCiphertextTestData;
11  import civitas.crypto.ciphertextlist.CiphertextList;
12  import civitas.crypto.signedciphertext.ElGamalSignedCiphertext;
13  import civitas.crypto.votecapabilityshare.tests.VoteCapabilityTestData;
14  import civitas.util.CivitasBigInteger;
15  import civitas.util.CivitasBigIntegerFactory;
16  
17  public interface ElGamalCiphertextListTestData extends ElGamalCiphertextTestData, VoteCapabilityTestData {
18  
19  	CiphertextList EMPTY_LIST = new CiphertextList();
20  
21  	CiphertextList CIPHERTEXTLIST_ONE_LONG = new CiphertextList(List.of(EL_GAMAL_CIPHERTEXT_ONE));
22  
23  	CiphertextList CIPHERTEXTLIST_TWO_LONG =
24  			new CiphertextList(List.of(EL_GAMAL_CIPHERTEXT_ONE, EL_GAMAL_CIPHERTEXT_TWO));
25  
26  	CiphertextList CIPHERTEXTLIST_ZEROSIZED = new CiphertextList();
27  	CiphertextList CIPHERTEXTLIST_ONEINSIDE = new CiphertextList(List.of(CIPHERTEXT_E));
28  	CiphertextList CIPHERTEXTLIST = new CiphertextList(List.of(CIPHERTEXT_E, CIPHERTEXT_EPRIME));
29  
30  	int NO_OF_WELL_KNOWN_CIPHERTEXTS = 4;
31  
32  	CiphertextList CIPHERTEXT_LIST = new CiphertextList(IntStream.range(0, NO_OF_WELL_KNOWN_CIPHERTEXTS)
33  			.mapToObj(
34  					i -> new ElGamalCiphertext(ONE, BIGINT_G.modPow(CivitasBigIntegerFactory.obtain(i + 1), BIGINT_P)))
35  			.toList());
36  	List<ElGamalSignedCiphertext> ENCRYPTED_SIGNED_VOTE_CAPABILITIES = VOTE_CAPABILITIES.stream()
37  			.map(x -> new ElGamalSignedCiphertext(
38  					mock(
39  							CivitasBigInteger.class,
40  							"ENCRYPTED_SIGNED_VOTE_CAPABILITIES_A" + VOTE_CAPABILITIES.indexOf(x)),
41  					mock(
42  							CivitasBigInteger.class,
43  							"ENCRYPTED_SIGNED_VOTE_CAPABILITIES_B" + VOTE_CAPABILITIES.indexOf(x)),
44  					mock(
45  							CivitasBigInteger.class,
46  							"ENCRYPTED_SIGNED_VOTE_CAPABILITIES_C" + VOTE_CAPABILITIES.indexOf(x)),
47  					mock(
48  							CivitasBigInteger.class,
49  							"ENCRYPTED_SIGNED_VOTE_CAPABILITIES_D" + VOTE_CAPABILITIES.indexOf(x))))
50  			.toList();
51  	List<ElGamalCiphertext> ENCRYPTED_VOTE_CAPABILITIES = ENCRYPTED_SIGNED_VOTE_CAPABILITIES.stream()
52  			.map(x -> mock(
53  					ElGamalCiphertext.class,
54  					"ENCRYPTED_VOTE_CAPABILITIES_" + ENCRYPTED_SIGNED_VOTE_CAPABILITIES.indexOf(x)))
55  			.toList();
56  	List<ElGamalCiphertext> ENCRYPTED_VOTE_CAPABILITIES_WITH_EPRIME = VOTE_CAPABILITIES.stream()
57  			.map(x -> mock(
58  					ElGamalCiphertext.class, "ENCRYPTED_VOTE_CAPABILITIES_WITH_EPRIME_" + VOTE_CAPABILITIES.indexOf(x)))
59  			.toList();
60  	ElGamalSignedCiphertext[] POSTED_CAPABILITIES =
61  			ENCRYPTED_SIGNED_VOTE_CAPABILITIES.toArray(new ElGamalSignedCiphertext[0]);
62  	ElGamalSignedCiphertext[] POSTED_CAPABILITIES_NONVERIFY = VOTE_CAPABILITIES.stream()
63  			.map(x -> mock(
64  					ElGamalSignedCiphertext.class, "POSTED_CAPABILITIES_NONVERIFY_" + VOTE_CAPABILITIES.indexOf(x)))
65  			.toList()
66  			.toArray(new ElGamalSignedCiphertext[0]);
67  
68  	List<CivitasBigInteger> DS = RANDOMS.subList(0, NO_OF_WELL_KNOWN_CIPHERTEXTS);
69  	List<CivitasBigInteger> RS = RANDOMS.subList(NO_OF_WELL_KNOWN_CIPHERTEXTS, NO_OF_WELL_KNOWN_CIPHERTEXTS * 2);
70  
71  	CivitasBigInteger SUM = DS.stream().reduce(ZERO, (a, b) -> {
72  		if (b != DS.get(MY_CHOICE.ordinal())) {
73  			return a.modAdd(b, BIGINT_Q);
74  		}
75  		return a;
76  	});
77  
78  	List<ElGamalCiphertextish> REENCRYPTED_VOTE_CAPABILITIES = ENCRYPTED_SIGNED_VOTE_CAPABILITIES.stream()
79  			.map(x -> (ElGamalCiphertextish) new ElGamalCiphertext(
80  					mock(
81  							CivitasBigInteger.class,
82  							"REENCRYPTED_VOTE_CAPABILITIES_A" + ENCRYPTED_SIGNED_VOTE_CAPABILITIES.indexOf(x)),
83  					mock(
84  							CivitasBigInteger.class,
85  							"REENCRYPTED_VOTE_CAPABILITIES_B" + ENCRYPTED_SIGNED_VOTE_CAPABILITIES.indexOf(x))))
86  			.toList();
87  
88  	List<ElGamalCiphertextish> REENCRYPTED_VOTE_CAPABILITIES_WITH_KEY_E = ENCRYPTED_SIGNED_VOTE_CAPABILITIES.stream()
89  			.map(x -> (ElGamalCiphertextish) new ElGamalCiphertext(
90  					mock(
91  							CivitasBigInteger.class,
92  							"REENCRYPTED_VOTE_CAPABILITIES_E_A" + ENCRYPTED_SIGNED_VOTE_CAPABILITIES.indexOf(x)),
93  					mock(
94  							CivitasBigInteger.class,
95  							"REENCRYPTED_VOTE_CAPABILITIES_E_B" + ENCRYPTED_SIGNED_VOTE_CAPABILITIES.indexOf(x))))
96  			.toList();
97  
98  	List<ElGamalCiphertext> PROOF_EPRIMES = List.of(
99  			new ElGamalCiphertext(
100 					mock(CivitasBigInteger.class, "eprime_a0"), mock(CivitasBigInteger.class, "eprime_b0")),
101 			new ElGamalCiphertext(
102 					mock(CivitasBigInteger.class, "eprime_a1"), mock(CivitasBigInteger.class, "eprime_b1")),
103 			new ElGamalCiphertext(
104 					mock(CivitasBigInteger.class, "eprime_a2"), mock(CivitasBigInteger.class, "eprime_b2")),
105 			new ElGamalCiphertext(
106 					mock(CivitasBigInteger.class, "eprime_a3"), mock(CivitasBigInteger.class, "eprime_b3")));
107 }