View Javadoc
1   package civitas.functionaltests;
2   
3   import static org.junit.jupiter.api.Assertions.assertEquals;
4   import static org.junit.jupiter.api.Assertions.assertTrue;
5   
6   import org.junit.jupiter.api.DisplayName;
7   import org.junit.jupiter.api.Tag;
8   import org.junit.jupiter.api.Test;
9   import org.junit.jupiter.api.extension.ExtendWith;
10  import org.springframework.beans.factory.annotation.Autowired;
11  import org.springframework.test.context.ContextConfiguration;
12  import org.springframework.test.context.junit.jupiter.SpringExtension;
13  
14  import civitas.AppTestConfig;
15  import civitas.common.RandomAwareTestBase;
16  import civitas.crypto.Constants;
17  import civitas.crypto.parameters.ElGamalParametersTestData;
18  import civitas.crypto.parameters.GenerateElGamalParameters;
19  import civitas.crypto.parameters.GenerateSafePrime;
20  import civitas.crypto.parameters.PrimePair;
21  import civitas.crypto.rsaprivatekey.PrivateKeyTestData;
22  
23  @Tag("functional")
24  @ExtendWith(SpringExtension.class)
25  @ContextConfiguration(classes = AppTestConfig.class)
26  class GenerateSafePrimeFunctionalTest extends RandomAwareTestBase
27  		implements Constants, ElGamalParametersTestData, PrivateKeyTestData {
28  
29  	@Autowired
30  	GenerateSafePrime generateSafePrimeReal;
31  
32  	@Autowired
33  	GenerateElGamalParameters generateElGamalParameters;
34  
35  	@Test
36  	@DisplayName("running it with real random generator"
37  			+ "FIXME: uses random, should make a multirun verification test but it takes ages")
38  	void safePrimeTestReal() {
39  		PrimePair sp = generateSafePrimeReal.apply(SAFE_KEY_LENGTH);
40  		assertTrue(sp.p.isProbablePrime(CERTAINTY));
41  		assertTrue(sp.q.isProbablePrime(CERTAINTY));
42  		assertEquals(sp.p, sp.q.multiply(TWO).add(ONE));
43  		assertEquals(SAFE_KEY_LENGTH, sp.q.bitLength());
44  	}
45  }