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