View Javadoc
1   package civitas.crypto.messagedigest.tests;
2   
3   import static org.mockito.ArgumentMatchers.any;
4   import static org.mockito.Mockito.mock;
5   import static org.mockito.Mockito.when;
6   
7   import java.math.BigInteger;
8   import java.util.Base64;
9   import java.util.List;
10  
11  import civitas.bboard.common.tests.BBPostTestData;
12  import civitas.common.mix.capabilitymixrevelation.tests.MixCapabilityElementRevelationTestData;
13  import civitas.common.tabteller.tests.TabTellerKeyShareTestData;
14  import civitas.crypto.messagedigest.CryptoHash;
15  import civitas.crypto.petcommitment.tests.PETCommitmentTestData;
16  import civitas.crypto.proofdisclog.tests.ElGamalProofDiscLogEqualityTestData;
17  import civitas.crypto.proofdvr.tests.ElGamalProofDVRTestData;
18  import civitas.crypto.proofknowndisclog.tests.ProofKnowDiscLogTestData;
19  import civitas.crypto.proofvote.tests.ProofVoteTestData;
20  import civitas.crypto.signedciphertext.tests.ElGamalSignedCiphertextTestData;
21  import civitas.util.CivitasBigInteger;
22  
23  public class CryptoHashStub
24  		implements ElGamalProofDiscLogEqualityTestData,
25  				TabTellerKeyShareTestData,
26  				ElGamalProofDVRTestData,
27  				PETCommitmentTestData,
28  				ProofKnowDiscLogTestData,
29  				MixCapabilityElementRevelationTestData,
30  				ElGamalSignedCiphertextTestData,
31  				BBPostTestData,
32  				ProofVoteTestData {
33  
34  	public static CryptoHash stub() {
35  		CryptoHash mock = mock(CryptoHash.class);
36  		@SuppressWarnings("unchecked")
37  		List<CivitasBigInteger> any = (List<CivitasBigInteger>) any();
38  		when(mock.apply(any)).thenReturn(SOMESTRING_HASH);
39  		when(mock.apply(ELECTORAL_ROLL_CAPABILITY_SHARES_XML.getBytes()))
40  				.thenReturn(ELECTORAL_ROLL_CAPABILITY_SHARES_XML_HASH);
41  		when(mock.apply(EL_GAMAL_DISC_LOG_EQUALITY_FOR_DECOMMITMENT_FOR_HASH))
42  				.thenReturn(Base64.getDecoder().decode(EL_GAMAL_DISC_LOG_EQUALITY_FOR_DECOMMITMENT_C_BASE64));
43  		when(mock.apply(ADDITIONALENV.getBytes())).thenReturn(HASH_OF_ADDITIONALENV);
44  		when(mock.apply(PROOF_VOTE_ENVIRONMENT)).thenReturn(HASH_OF_PROOF_ENVIRONMENT);
45  		when(mock.apply((TELLER_INDEX + VOTER_NAME).getBytes())).thenReturn(VOTER_ADDITIONAL_ENV);
46  		when(mock.apply(TAB_TELLER_KEY_SHARE_XML.getBytes())).thenReturn(TAB_TELLER_KEY_SHARE_HASH);
47  		when(mock.apply(
48  						G_POW_RANDOMS0_G_EXP_FACTOR_MESSAGE_MUL_PUBKEY_POW_FACTOR_ADDITIONALENV,
49  						CIPHERTEXT_E_A,
50  						CIPHERTEXT_E_B,
51  						ADDITIONALENV_BYTES))
52  				.thenReturn(HASH_OF_G_POW_RANDOMS0_G_EXP_FACTOR_MESSAGE_MUL_PUBKEY_POW_FACTOR_ADDITIONALENV);
53  		when(mock.apply(
54  						G_POW_RANDOMS0_G_EXP_FACTOR_MESSAGE_MUL_PUBKEY_POW_FACTOR_ADDITIONALENV,
55  						CIPHERTEXT_E_A,
56  						CIPHERTEXT_E_B,
57  						null))
58  				.thenReturn(HASH_OF_G_POW_RANDOMS0_G_EXP_FACTOR_MESSAGE_MUL_PUBKEY_POW_FACTOR);
59  		when(mock.apply(
60  						G_POW_RANDOMS0_G_EXP_FACTOR_MESSAGE_MUL_PUBKEY_POW_FACTOR_ADDITIONALENV_BAD,
61  						CIPHERTEXT_E_A,
62  						CIPHERTEXT_E_B,
63  						ADDITIONALENV_BYTES))
64  				.thenReturn(BIGINT_A);
65  		when(mock.apply(
66  						G_POW_RANDOMS0_G_EXP_FACTOR_MESSAGE_MUL_PUBKEY_POW_FACTOR_BAD,
67  						CIPHERTEXT_E_A,
68  						CIPHERTEXT_E_B,
69  						null))
70  				.thenReturn(BIGINT_A);
71  		when(mock.apply(EL_GAMAL_PROOF_1_OF_L_ENV))
72  				.thenReturn(Base64.getDecoder().decode(EL_GAMAL_PROOF_1_OF_L_HASH_BASE64));
73  		when(mock.apply(EL_GAMAL_PROOF_DVR_ENV)).thenReturn(EL_GAMAL_PROOF_DVR_HASH);
74  		when(mock.apply(FAKE_PROOF_DVR_ENV)).thenReturn(FAKE_PROOF_DVR_HASH);
75  		when(mock.apply(PET_COMMITMENT_DI, PET_COMMITMENT_EI, null, null)).thenReturn(PET_COMMITMENT_HASH);
76  		when(mock.apply(EL_GAMAL_PROOF_KNOWN_DISC_LOG_V, EL_GAMAL_PROOF_KNOWN_DISC_LOG_A, null, null))
77  				.thenReturn(EL_GAMAL_PROOF_KNOWN_DISC_LOG_C);
78  		when(mock.apply(
79  						CAPABILITY_ELEMENT_RELEVATION_LEFT_NONCE,
80  						BigInteger.valueOf(CAPABILITY_ELEMENT_RELEVATION_LEFT_MAPPING)
81  								.toByteArray()))
82  				.thenReturn(CAPABILITY_ELEMENT_RELEVATION_LEFT_HASH);
83  		when(mock.apply(
84  						CAPABILITY_ELEMENT_RELEVATION_RIGHT_NONCE,
85  						BigInteger.valueOf(CAPABILITY_ELEMENT_RELEVATION_RIGHT_MAPPING)
86  								.toByteArray()))
87  				.thenReturn(CAPABILITY_ELEMENT_RELEVATION_RIGHT_HASH);
88  		when(mock.apply(
89  						EL_GAMAL_SIGNED_CIPHERTEXT_HASH1,
90  						EL_GAMAL_SIGNED_CIPHERTEXT_A,
91  						EL_GAMAL_SIGNED_CIPHERTEXT_B,
92  						ADDITIONALENV_BYTES))
93  				.thenReturn(EL_GAMAL_SIGNED_CIPHERTEXT_C);
94  		when(mock.apply(BULLETIN_BOARD_ID.getBytes(), BLOCK0_META.getBytes())).thenReturn(BLOCK0_HASH);
95  		when(mock.apply(BULLETIN_BOARD_ID.getBytes(), BLOCK1_META.getBytes())).thenReturn(BLOCK1_HASH);
96  		when(mock.apply(
97  						BBPOST.hash,
98  						BigInteger.valueOf(CURRENT_TIME).toByteArray(),
99  						BOARD_CLOSED_CONTENT_COMMITMENT_SIGNATURE.signatureBytes))
100 				.thenReturn(BOARD_CLOSED__CONTENT_COMMITMENT_SIGNATURE_HASH);
101 		when(mock.apply(
102 						new byte[0],
103 						BigInteger.valueOf(CURRENT_TIME).toByteArray(),
104 						BOARD_CLOSED_CONTENT_COMMITMENT_SIGNATURE.signatureBytes))
105 				.thenReturn(BOARD_CLOSED__CONTENT_COMMITMENT_SIGNATURE_HASH_NOPREV);
106 		when(mock.apply(SOMESTRING.getBytes())).thenReturn(SOMESTRING_HASH);
107 		return mock;
108 	}
109 }