1 package civitas.crypto.parameters;
2
3 import org.springframework.beans.factory.annotation.Autowired;
4 import org.springframework.stereotype.Controller;
5
6 import civitas.crypto.Constants;
7 import civitas.crypto.CryptoBase;
8 import civitas.util.CivitasBigInteger;
9
10 @Controller
11 public class GenerateSafePrime implements Constants {
12
13 @Autowired
14 CryptoBase cryptoBase;
15
16 public PrimePair apply(final int length) {
17 CivitasBigInteger possibleP;
18 CivitasBigInteger possibleQ;
19 do {
20 possibleQ = cryptoBase.obtainProbablePrime(length);
21 possibleP = possibleQ.multiply(TWO).add(ONE);
22 } while (!possibleP.isProbablePrime(CERTAINTY));
23 return new PrimePair(possibleP, possibleQ);
24 }
25 }