View Javadoc
1   package civitas.crypto;
2   
3   import java.security.KeyPairGenerator;
4   import java.util.HashMap;
5   import java.util.Map;
6   
7   import org.springframework.stereotype.Service;
8   
9   @Service
10  public class GetPublicKeyGeneratorService implements Constants {
11  	private final Map<String, KeyPairGenerator> publicKeyGenerators = new HashMap<>();
12  
13  	public KeyPairGenerator apply(final int keyLength) {
14  		String genKey = String.valueOf(keyLength);
15  		KeyPairGenerator g = publicKeyGenerators.get(genKey);
16  		if (g != null) {
17  			return g;
18  		}
19  		try {
20  			g = KeyPairGenerator.getInstance(PUBLIC_KEY_ALG, PUBLIC_KEY_PROVIDER);
21  			g.initialize(keyLength);
22  			publicKeyGenerators.put(genKey, g);
23  			return g;
24  		} catch (Exception impossible) {
25  			throw new CryptoError(impossible);
26  		}
27  	}
28  }