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