/** * Lists the keys in the jceksProvider * @param ks The KeyShell instance * @param wantMetadata True if you want metadata returned with the keys * @return The output from the "list" call * @throws Exception */ private String listKeys(KeyShell ks, boolean wantMetadata) throws Exception { int rc; outContent.reset(); final String[] listArgs = {"list", "-provider", jceksProvider }; final String[] listArgsM = {"list", "-metadata", "-provider", jceksProvider }; rc = ks.run(wantMetadata ? listArgsM : listArgs); assertEquals(0, rc); return outContent.toString(); }
/** * Lists the keys in the jceksProvider * @param ks The KeyShell instance * @param wantMetadata True if you want metadata returned with the keys * @return The output from the "list" call * @throws Exception */ private String listKeys(KeyShell ks, boolean wantMetadata) throws Exception { int rc; outContent.reset(); final String[] listArgs = {"list", "-provider", jceksProvider }; final String[] listArgsM = {"list", "-metadata", "-provider", jceksProvider }; rc = ks.run(wantMetadata ? listArgsM : listArgs); assertEquals(0, rc); return outContent.toString(); }
/** * Delete a key from the default jceksProvider * @param ks The KeyShell instance * @param keyName The key to delete * @throws Exception */ private void deleteKey(KeyShell ks, String keyName) throws Exception { int rc; outContent.reset(); final String[] delArgs = {"delete", keyName, "-f", "-provider", jceksProvider}; rc = ks.run(delArgs); assertEquals(0, rc); assertTrue(outContent.toString().contains(keyName + " has been " + "successfully deleted.")); }
/** * Delete a key from the default jceksProvider * @param ks The KeyShell instance * @param keyName The key to delete * @throws Exception */ private void deleteKey(KeyShell ks, String keyName) throws Exception { int rc; outContent.reset(); final String[] delArgs = {"delete", keyName, "-f", "-provider", jceksProvider}; rc = ks.run(delArgs); assertEquals(0, rc); assertTrue(outContent.toString().contains(keyName + " has been " + "successfully deleted.")); }
@Test public void testTransientProviderOnlyConfig() throws Exception { final String[] args1 = {"create", "key1"}; int rc = 0; KeyShell ks = new KeyShell(); Configuration config = new Configuration(); config.set(KeyProviderFactory.KEY_PROVIDER_PATH, "user:///"); ks.setConf(config); rc = ks.run(args1); assertEquals(1, rc); assertTrue(outContent.toString().contains("There are no valid " + "KeyProviders configured.")); }
@Test public void testInvalidKeySize() throws Exception { final String[] args1 = {"create", "key1", "-size", "56", "-provider", jceksProvider}; int rc = 0; KeyShell ks = new KeyShell(); ks.setConf(new Configuration()); rc = ks.run(args1); assertEquals(1, rc); assertTrue(outContent.toString().contains("key1 has not been created.")); }
@Test public void testInvalidCipher() throws Exception { final String[] args1 = {"create", "key1", "-cipher", "LJM", "-provider", jceksProvider}; int rc = 0; KeyShell ks = new KeyShell(); ks.setConf(new Configuration()); rc = ks.run(args1); assertEquals(1, rc); assertTrue(outContent.toString().contains("key1 has not been created.")); }
@Test public void testTransientProviderOnlyConfig() throws Exception { final String[] args1 = {"create", "key1"}; int rc = 0; KeyShell ks = new KeyShell(); Configuration config = new Configuration(); config.set(KeyProviderFactory.KEY_PROVIDER_PATH, "user:///"); ks.setConf(config); rc = ks.run(args1); assertEquals(1, rc); assertTrue(outContent.toString().contains("There are no valid " + "KeyProviders configured.")); }
@Test public void testInvalidCipher() throws Exception { final String[] args1 = {"create", "key1", "-cipher", "LJM", "-provider", jceksProvider}; int rc = 0; KeyShell ks = new KeyShell(); ks.setConf(new Configuration()); rc = ks.run(args1); assertEquals(1, rc); assertTrue(outContent.toString().contains("key1 has not been created.")); }
@Test public void testTransientProviderWarning() throws Exception { final String[] args1 = {"create", "key1", "-cipher", "AES", "-provider", "user:///"}; int rc = 0; KeyShell ks = new KeyShell(); ks.setConf(new Configuration()); rc = ks.run(args1); assertEquals(0, rc); assertTrue(outContent.toString().contains("WARNING: you are modifying a " + "transient provider.")); }
@Test public void testInvalidProvider() throws Exception { final String[] args1 = {"create", "key1", "-cipher", "AES", "-provider", "sdff://file/tmp/keystore.jceks"}; int rc = 0; KeyShell ks = new KeyShell(); ks.setConf(new Configuration()); rc = ks.run(args1); assertEquals(1, rc); assertTrue(outContent.toString().contains("There are no valid " + "KeyProviders configured.")); }
@Test public void testTransientProviderWarning() throws Exception { final String[] args1 = {"create", "key1", "-cipher", "AES", "-provider", "user:///"}; int rc = 0; KeyShell ks = new KeyShell(); ks.setConf(new Configuration()); rc = ks.run(args1); assertEquals(0, rc); assertTrue(outContent.toString().contains("WARNING: you are modifying a " + "transient provider.")); }
@Test public void testInvalidProvider() throws Exception { final String[] args1 = {"create", "key1", "-cipher", "AES", "-provider", "sdff://file/tmp/keystore.jceks"}; int rc = 0; KeyShell ks = new KeyShell(); ks.setConf(new Configuration()); rc = ks.run(args1); assertEquals(1, rc); assertTrue(outContent.toString().contains("There are no valid " + "KeyProviders configured.")); }
@Test public void testInvalidKeySize() throws Exception { final String[] args1 = {"create", "key1", "-size", "56", "-provider", jceksProvider}; int rc = 0; KeyShell ks = new KeyShell(); ks.setConf(new Configuration()); rc = ks.run(args1); assertEquals(1, rc); assertTrue(outContent.toString().contains("key1 has not been created.")); }
@Test public void testFullCipher() throws Exception { final String keyName = "key1"; final String[] args1 = {"create", keyName, "-cipher", "AES/CBC/pkcs5Padding", "-provider", jceksProvider}; int rc = 0; KeyShell ks = new KeyShell(); ks.setConf(new Configuration()); rc = ks.run(args1); assertEquals(0, rc); assertTrue(outContent.toString().contains(keyName + " has been " + "successfully created")); deleteKey(ks, keyName); }
@Test public void testKeySuccessfulCreationWithDescription() throws Exception { outContent.reset(); final String[] args1 = {"create", "key1", "-provider", jceksProvider, "-description", "someDescription"}; int rc = 0; KeyShell ks = new KeyShell(); ks.setConf(new Configuration()); rc = ks.run(args1); assertEquals(0, rc); assertTrue(outContent.toString().contains("key1 has been successfully " + "created")); String listOut = listKeys(ks, true); assertTrue(listOut.contains("description")); assertTrue(listOut.contains("someDescription")); }
@Test public void testKeySuccessfulCreationWithDescription() throws Exception { outContent.reset(); final String[] args1 = {"create", "key1", "-provider", jceksProvider, "-description", "someDescription"}; int rc = 0; KeyShell ks = new KeyShell(); ks.setConf(new Configuration()); rc = ks.run(args1); assertEquals(0, rc); assertTrue(outContent.toString().contains("key1 has been successfully " + "created")); String listOut = listKeys(ks, true); assertTrue(listOut.contains("description")); assertTrue(listOut.contains("someDescription")); }
@Test public void testFullCipher() throws Exception { final String keyName = "key1"; final String[] args1 = {"create", keyName, "-cipher", "AES/CBC/pkcs5Padding", "-provider", jceksProvider}; int rc = 0; KeyShell ks = new KeyShell(); ks.setConf(new Configuration()); rc = ks.run(args1); assertEquals(0, rc); assertTrue(outContent.toString().contains(keyName + " has been " + "successfully created")); deleteKey(ks, keyName); }
@Test public void testKeySuccessfulKeyLifecycle() throws Exception { int rc = 0; String keyName = "key1"; KeyShell ks = new KeyShell(); ks.setConf(new Configuration()); outContent.reset(); final String[] args1 = {"create", keyName, "-provider", jceksProvider}; rc = ks.run(args1); assertEquals(0, rc); assertTrue(outContent.toString().contains(keyName + " has been " + "successfully created")); String listOut = listKeys(ks, false); assertTrue(listOut.contains(keyName)); listOut = listKeys(ks, true); assertTrue(listOut.contains(keyName)); assertTrue(listOut.contains("description")); assertTrue(listOut.contains("created")); outContent.reset(); final String[] args2 = {"roll", keyName, "-provider", jceksProvider}; rc = ks.run(args2); assertEquals(0, rc); assertTrue(outContent.toString().contains("key1 has been successfully " + "rolled.")); deleteKey(ks, keyName); listOut = listKeys(ks, false); assertFalse(listOut, listOut.contains(keyName)); }
@Test public void testKeySuccessfulKeyLifecycle() throws Exception { int rc = 0; String keyName = "key1"; KeyShell ks = new KeyShell(); ks.setConf(new Configuration()); outContent.reset(); final String[] args1 = {"create", keyName, "-provider", jceksProvider}; rc = ks.run(args1); assertEquals(0, rc); assertTrue(outContent.toString().contains(keyName + " has been " + "successfully created")); String listOut = listKeys(ks, false); assertTrue(listOut.contains(keyName)); listOut = listKeys(ks, true); assertTrue(listOut.contains(keyName)); assertTrue(listOut.contains("description")); assertTrue(listOut.contains("created")); outContent.reset(); final String[] args2 = {"roll", keyName, "-provider", jceksProvider}; rc = ks.run(args2); assertEquals(0, rc); assertTrue(outContent.toString().contains("key1 has been successfully " + "rolled.")); deleteKey(ks, keyName); listOut = listKeys(ks, false); assertFalse(listOut, listOut.contains(keyName)); }