View Javadoc
1   package civitas.crypto.parameters;
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.Test;
8   import org.mockito.InjectMocks;
9   
10  import civitas.common.RandomAwareTestBase;
11  import civitas.crypto.Constants;
12  import civitas.crypto.rsaprivatekey.PrivateKeyTestData;
13  
14  class GenerateSafePrimeTest extends RandomAwareTestBase
15  		implements Constants, ElGamalParametersTestData, PrivateKeyTestData {
16  
17  	@InjectMocks
18  	GenerateSafePrime generateSafePrime;
19  
20  	@Test
21  	@DisplayName("safePrime returns two primes p,q where p=2*q+1, and length of q is length ")
22  	void safePrimeTest() {
23  		PrimePair sp = generateSafePrime.apply(SAFE_KEY_LENGTH);
24  		assertTrue(sp.p.isProbablePrime(CERTAINTY));
25  		assertTrue(sp.q.isProbablePrime(CERTAINTY));
26  		assertEquals(sp.p, sp.q.multiply(TWO).add(ONE));
27  		assertEquals(SAFE_KEY_LENGTH, sp.q.bitLength());
28  	}
29  }