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 }