· 6 years ago · Jul 09, 2019, 11:18 AM
1public class KeyService {
2
3 private final KeyRepository keyRepository;
4
5 public void generateSymmetric(String alias) {
6 KeyGenerator generator = KeyGenerator.getInstance("AES");
7 generator.init(256);
8 this.keyRepository.store(alias, generator.generateKey());
9 }
10
11 public SecretKey exportSymmetric(String alias) {
12 return this.keyRepository.load(alias);
13 }
14
15 public void generateAsymmetric(String alias) {
16 KeyGenerator generator = KeyGenerator.getInstance("RSA");
17 generator.init(2048);
18 this.keyRepository.store(alias, generator.generateKeyPair());
19 }
20
21 public KeyPair exportAsymmetric(String alias) {
22 PrivateKey privateKey = this.keyRepository.load(alias);
23 KeyFactory factory KeyFactory.getInstance("RSA");
24 RSAPrivateCrtKeySpec privateSpec = factory.getKeySpec(privateKey, RSAPrivateCrtKeySpec.class);
25 PublicKey publicKey = factory.generatePublic(new RSAPublicKeySpec(privateSpec.getModulus(), privateSpec.getPublicExponent()));
26 return new KeyPair(publicKey, privateKey);
27 }
28}