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.crypto.Constants;
16  import civitas.crypto.parameters.GenerateElGamalParameters;
17  import civitas.crypto.parameters.GenerateSafePrime;
18  import civitas.crypto.parameters.PrimePair;
19  import civitas.crypto.parameters.tests.ElGamalParametersTestData;
20  import civitas.crypto.rsaprivatekey.tests.PrivateKeyTestData;
21  
22  @Tag("functional")
23  @ExtendWith(SpringExtension.class)
24  @ContextConfiguration(classes = AppTestConfig.class)
25  class GenerateSafePrimeFunctionalTest implements Constants, ElGamalParametersTestData, PrivateKeyTestData {
26  
27  	@Autowired
28  	GenerateSafePrime generateSafePrimeReal;
29  
30  	@Autowired
31  	GenerateElGamalParameters generateElGamalParameters;
32  
33  	@Test
34  	@DisplayName("running it with real random generator"
35  			+ "FIXME: uses random, should make a multirun verification test but it takes ages")
36  	void safePrimeTestReal() {
37  		PrimePair sp = generateSafePrimeReal.apply(SAFE_KEY_LENGTH);
38  		assertTrue(sp.p.isProbablePrime(CERTAINTY));
39  		assertTrue(sp.q.isProbablePrime(CERTAINTY));
40  		assertEquals(sp.p, sp.q.multiply(TWO).add(ONE));
41  		assertEquals(SAFE_KEY_LENGTH, sp.q.bitLength());
42  	}
43  }