View Javadoc
1   package civitas.crypto.decriptionshare;
2   
3   import static org.junit.jupiter.api.Assertions.assertEquals;
4   import static org.mockito.Mockito.verify;
5   
6   import org.junit.jupiter.api.DisplayName;
7   import org.junit.jupiter.api.Test;
8   import org.mockito.InjectMocks;
9   
10  import civitas.crypto.keypairshare.ElGamalKeyPairShareTestData;
11  import civitas.util.CivitasBigInteger;
12  import io.github.magwas.testing.TestBase;
13  
14  class ConstructElGamalDecryptionShareTest extends TestBase
15  		implements ElGamalDecryptionShareTestData, ElGamalKeyPairShareTestData {
16  
17  	@InjectMocks
18  	ConstructElGamalDecryptionShare constructElGamalDecryptionShare;
19  
20  	@Test
21  	@DisplayName("constructDecryptionShare works as expected: "
22  			+ "ai:=ciphertext.a^key (mod p)"
23  			+ "proof =  ElGamalDiscLogEqualityProof(params, ciphertext.a, params.g,priv.x)")
24  	void constructDecryptionShareTest() {
25  
26  		CivitasBigInteger key = EL_GAMAL_PRIVATE_KEY_E.x();
27  		CivitasBigInteger p = EL_GAMAL_PARAMETERS.p;
28  		CivitasBigInteger c1 = CIPHERTEXT_E.a;
29  
30  		CivitasBigInteger ai = c1.modPow(key, p);
31  
32  		ElGamalDecryptionShare actual = constructElGamalDecryptionShare.apply(CIPHERTEXT_E, EL_GAMAL_KEYPAIR_SHARE);
33  		verify(constructElGamalDecryptionShare.constructElGamalDiscLogEqualityProof)
34  				.apply(EL_GAMAL_PARAMETERS, CIPHERTEXT_E.a, BIGINT_G, EL_GAMAL_PRIVATE_KEY_E.x());
35  		assertEquals(ai, actual.ai());
36  		assertEquals(EL_GAMAL_DECRYPTION_SHARE, actual);
37  	}
38  }