1 package civitas.crypto.signedciphertext;
2
3 import java.util.Base64;
4
5 import civitas.common.CommonUtil;
6 import civitas.crypto.ciphertext.ElGamalCiphertextTestData;
7 import civitas.util.CivitasBigInteger;
8 import civitas.util.CivitasBigIntegerFactory;
9
10 public interface ElGamalSignedCiphertextTestData extends ElGamalCiphertextTestData {
11
12 String EL_GAMAL_SIGNED_CIPHERTEXT_C_BASE64 = "dHKDA9V8OEUx/Z2A7TLdgbG7OdIZTbg860iANjgFJMI=";
13 CivitasBigInteger EL_GAMAL_SIGNED_CIPHERTEXT_HASH1 = BIGINT_G.modPow(RANDOMS_0, BIGINT_P);
14 CivitasBigInteger EL_GAMAL_SIGNED_CIPHERTEXT_A = BIGINT_G.modPow(FACTOR_E, BIGINT_P);
15 CivitasBigInteger EL_GAMAL_SIGNED_CIPHERTEXT_B =
16 MESSAGE_VOTE_CAPABILITY_SHARE_ENCODED.modMultiply(PUBKEY_E.modPow(FACTOR_E, BIGINT_P), BIGINT_P);
17 CivitasBigInteger EL_GAMAL_SIGNED_CIPHERTEXT_C =
18 CivitasBigIntegerFactory.obtain(Base64.getDecoder().decode(EL_GAMAL_SIGNED_CIPHERTEXT_C_BASE64));
19 CivitasBigInteger EL_GAMAL_SIGNED_CIPHERTEXT_D =
20 RANDOMS_0.modAdd(EL_GAMAL_SIGNED_CIPHERTEXT_C.modMultiply(FACTOR_E, BIGINT_Q), BIGINT_Q);
21
22 ElGamalSignedCiphertext EL_GAMAL_SIGNED_CIPHERTEXT = new ElGamalSignedCiphertext(
23 EL_GAMAL_SIGNED_CIPHERTEXT_A, EL_GAMAL_SIGNED_CIPHERTEXT_B,
24 EL_GAMAL_SIGNED_CIPHERTEXT_C, EL_GAMAL_SIGNED_CIPHERTEXT_D);
25 CivitasBigInteger HASH_OF_G_POW_RANDOMS0_G_EXP_FACTOR_MESSAGE_MUL_PUBKEY_POW_FACTOR_ADDITIONALENV =
26 CommonUtil.asBigint("dHKDA9V8OEUx/Z2A7TLdgbG7OdIZTbg860iANjgFJMI=");
27 CivitasBigInteger HASH_OF_G_POW_RANDOMS0_G_EXP_FACTOR_MESSAGE_MUL_PUBKEY_POW_FACTOR =
28 CommonUtil.asBigint("AKw6iOIfDUU0OHK6D2nQ/e40bKkVIrYwO+kUZJuwSWYt");
29
30 CivitasBigInteger RANDOMS_0_PLUS_HASH_MUL_FACTOR = RANDOMS_0.modAdd(
31 HASH_OF_G_POW_RANDOMS0_G_EXP_FACTOR_MESSAGE_MUL_PUBKEY_POW_FACTOR_ADDITIONALENV.modMultiply(
32 FACTOR_E, BIGINT_Q),
33 BIGINT_Q);
34
35 CivitasBigInteger RANDOMS_0_PLUS_HASH_MUL_FACTOR_NOENV = RANDOMS_0.modAdd(
36 HASH_OF_G_POW_RANDOMS0_G_EXP_FACTOR_MESSAGE_MUL_PUBKEY_POW_FACTOR.modMultiply(FACTOR_E, BIGINT_Q),
37 BIGINT_Q);
38
39 CivitasBigInteger G_POW_RANDOMS0_G_EXP_FACTOR_MESSAGE_MUL_PUBKEY_POW_FACTOR_ADDITIONALENV = BIGINT_G.modPow(
40 RANDOMS_0_PLUS_HASH_MUL_FACTOR.mod(BIGINT_Q), BIGINT_P)
41 .modMultiply(
42 CIPHERTEXT_E_A.modPow(
43 HASH_OF_G_POW_RANDOMS0_G_EXP_FACTOR_MESSAGE_MUL_PUBKEY_POW_FACTOR_ADDITIONALENV.modNegate(
44 BIGINT_Q),
45 BIGINT_P),
46 BIGINT_P);
47
48 CivitasBigInteger G_POW_RANDOMS0_G_EXP_FACTOR_MESSAGE_MUL_PUBKEY_POW_FACTOR_ADDITIONALENV_BAD = BIGINT_G.modPow(
49 RANDOMS_0_PLUS_HASH_MUL_FACTOR.mod(BIGINT_Q), BIGINT_P)
50 .modMultiply(CIPHERTEXT_E_A.modPow(BIGINT_C.modNegate(BIGINT_Q), BIGINT_P), BIGINT_P);
51 CivitasBigInteger G_POW_RANDOMS0_G_EXP_FACTOR_MESSAGE_MUL_PUBKEY_POW_FACTOR_BAD = BIGINT_G.modPow(
52 RANDOMS_0_PLUS_HASH_MUL_FACTOR_NOENV.mod(BIGINT_Q), BIGINT_P)
53 .modMultiply(CIPHERTEXT_E_A.modPow(BIGINT_C.modNegate(BIGINT_Q), BIGINT_P), BIGINT_P);
54
55 CivitasBigInteger G_POW_RANDOMS0_G_EXP_FACTOR_MESSAGE_MUL_PUBKEY_POW_FACTOR = BIGINT_G.modPow(
56 RANDOMS_0_PLUS_HASH_MUL_FACTOR.mod(BIGINT_Q), BIGINT_P)
57 .modMultiply(
58 CIPHERTEXT_E_A.modPow(
59 HASH_OF_G_POW_RANDOMS0_G_EXP_FACTOR_MESSAGE_MUL_PUBKEY_POW_FACTOR.modNegate(BIGINT_Q),
60 BIGINT_P),
61 BIGINT_P);
62
63 ElGamalSignedCiphertext SIGNED_CIPHERTEXT_OF_MESSAGE_WITH_FACTOR_RANDOM0_ADDITIONALENV =
64 new ElGamalSignedCiphertext(
65 CIPHERTEXT_E_A,
66 CIPHERTEXT_E_B,
67 HASH_OF_G_POW_RANDOMS0_G_EXP_FACTOR_MESSAGE_MUL_PUBKEY_POW_FACTOR_ADDITIONALENV,
68 RANDOMS_0_PLUS_HASH_MUL_FACTOR);
69
70 ElGamalSignedCiphertext SIGNED_CIPHERTEXT_OF_MESSAGE_WITH_FACTOR_RANDOM0_ADDITIONALENV_BAD =
71 new ElGamalSignedCiphertext(CIPHERTEXT_E_A, CIPHERTEXT_E_B, BIGINT_C, RANDOMS_0_PLUS_HASH_MUL_FACTOR);
72
73 ElGamalSignedCiphertext SIGNED_CIPHERTEXT_OF_MESSAGE_WITH_FACTOR_RANDOM0 = new ElGamalSignedCiphertext(
74 CIPHERTEXT_E_A,
75 CIPHERTEXT_E_B,
76 HASH_OF_G_POW_RANDOMS0_G_EXP_FACTOR_MESSAGE_MUL_PUBKEY_POW_FACTOR,
77 RANDOMS_0_PLUS_HASH_MUL_FACTOR_NOENV);
78
79 ElGamalSignedCiphertext SIGNED_CIPHERTEXT_OF_MESSAGE_WITH_FACTOR_RANDOM0_BAD =
80 new ElGamalSignedCiphertext(CIPHERTEXT_E_A, CIPHERTEXT_E_B, BIGINT_C, RANDOMS_0_PLUS_HASH_MUL_FACTOR_NOENV);
81 }