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 }