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.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  }