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