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 }