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.GenerateSchnorrPrime; 18 import civitas.crypto.parameters.PrimePair; 19 import civitas.crypto.privatekey.ElGamalPrivateKeyTestData; 20 21 @Tag("functional") 22 @ExtendWith(SpringExtension.class) 23 @ContextConfiguration(classes = AppTestConfig.class) 24 class GenerateSchnorrPrimeFunctionalTest extends RandomAwareTestBase implements ElGamalPrivateKeyTestData, Constants { 25 26 @Autowired 27 GenerateSchnorrPrime generateSchnorrPrimeReal; 28 29 @Test 30 @DisplayName("making sure that we get a correct pair using the real random generator" 31 + "FIXME: uses random, should make a multirun verification test, but it takes a lot of time") 32 void schnorrPrimeTest() { 33 PrimePair sp = generateSchnorrPrimeReal.apply(EL_GAMAL_KEY_LENGTH, EL_GAMAL_GROUP_LENGTH); 34 assertTrue(sp.p.isProbablePrime(CERTAINTY)); 35 assertTrue(sp.q.isProbablePrime(CERTAINTY)); 36 assertEquals(ZERO, sp.p.subtract(ONE).mod(sp.q)); 37 assertEquals(EL_GAMAL_GROUP_LENGTH, sp.p.bitLength()); 38 assertEquals(EL_GAMAL_KEY_LENGTH, sp.q.bitLength()); 39 } 40 }