· 9 years ago · Oct 09, 2016, 03:34 PM
1public static void main(String[] args) throws Exception {
2
3 String fileWithKeyStore = "test.keystore";
4 KeyStore keyStore = JKSTest.createKeyStore(fileWithKeyStore, "pwdForKeyStoreFile");
5
6 storeKeyInKeyStore(keyStore, fileWithKeyStore);
7 // retriveKeyFromKeyStore(keyStore);
8
9}
10
11public static void storeKeyInKeyStore(KeyStore keyStore, String fileWithKeyStore) throws Exception {
12
13 System.out.println(keyStore.getType()); // JCEKS
14
15 /** Storing in key value format like map but with password */
16 SecretKey secretKey = KeyGenerator.getInstance("AES").generateKey(); // JWT-Key
17
18 keyStore.setEntry("map_key", new KeyStore.SecretKeyEntry(secretKey),
19 new PasswordProtection("pwdForMapEntry".toCharArray()));
20
21 keyStore.store(new FileOutputStream(fileWithKeyStore), "pwdForStoringFile".toCharArray());
22 System.out.println("Stored Key:t" + secretKey);
23
24}
25
26public static void retriveKeyFromKeyStore(KeyStore keyStore)
27 throws NoSuchAlgorithmException, UnrecoverableEntryException, KeyStoreException {
28
29 KeyStore.Entry entry = keyStore.getEntry("map_key", new PasswordProtection("pwdForMapEntry".toCharArray()));
30 SecretKey keyFound = ((KeyStore.SecretKeyEntry) entry).getSecretKey();
31 System.out.println("Found Key:t" + keyFound);
32
33}
34
35
36public static KeyStore createKeyStore(String fileName, String pw) throws Exception {
37 File file = new File(fileName);
38
39 final KeyStore keyStore = KeyStore.getInstance("JCEKS");
40 if (file.exists()) {
41 // .keystore file already exists => load it
42 keyStore.load(new FileInputStream(file), pw.toCharArray());
43 System.out.println("Existing .keystore file loaded!"+file.getAbsolutePath());
44 } else {
45 // .keystore file not created yet => create it
46 keyStore.load(null, null);
47 keyStore.store(new FileOutputStream(fileName), pw.toCharArray());
48 System.out.println("New .keystore file created!");
49 }
50
51 return keyStore;
52}