1 19 20 package com.sslexplorer.security; 21 22 import static org.junit.Assert.assertTrue; 23 import static org.junit.Assert.assertEquals; 24 25 import org.junit.After; 26 import org.junit.Before; 27 import org.junit.BeforeClass; 28 import org.junit.Test; 29 30 import com.sslexplorer.boot.Util; 31 import com.sslexplorer.testcontainer.AbstractTest; 32 33 35 public class PublicKeyStoreTest extends AbstractTest { 36 37 static PublicKeyStore publicKeyStore; 38 39 final static String USERNAME = "test1"; 40 final static String TEXT_TO_ENCRYPT = "{}-_=a:,123whydocatshavealltheflaps098!\"$5"; 41 final static String PASSPHRASE = "asecret"; 42 final static String NEW_PASSPHRASE = "aNotherSecret"; 43 44 45 @BeforeClass 46 public static void oneTimeSetUp() throws Exception { 47 setUp(""); 48 publicKeyStore = PublicKeyStore.getInstance(); 49 } 50 51 @Before 52 @After 53 public void intialize() throws Exception { 54 publicKeyStore.removeKeys(USERNAME); 55 } 56 57 @Test 58 public void newKey() throws Exception { 59 publicKeyStore.verifyPrivateKey(USERNAME, PASSPHRASE.toCharArray()); 60 assertTrue("Key creation", publicKeyStore.hasLoadedKey(USERNAME)); 61 } 62 63 @Test 64 public void encryptStuff() throws Exception { 65 publicKeyStore.verifyPrivateKey(USERNAME, PASSPHRASE.toCharArray()); 66 assertTrue("Key creation", publicKeyStore.hasLoadedKey(USERNAME)); 67 String encrypted = publicKeyStore.encryptText(TEXT_TO_ENCRYPT, USERNAME); 68 String decrypted = publicKeyStore.decryptText(encrypted, USERNAME); 69 assertEquals("Encrypt and decrypted", TEXT_TO_ENCRYPT, decrypted); 70 } 71 72 @Test 73 public void changePassphrase() throws Exception { 74 publicKeyStore.verifyPrivateKey(USERNAME, PASSPHRASE.toCharArray()); 75 assertTrue("Key creation", publicKeyStore.hasLoadedKey(USERNAME)); 76 publicKeyStore.changePrivateKeyPassphrase(USERNAME, PASSPHRASE, NEW_PASSPHRASE); 77 String encrypted = publicKeyStore.encryptText(TEXT_TO_ENCRYPT, USERNAME); 78 String decrypted = publicKeyStore.decryptText(encrypted, USERNAME); 79 assertEquals("Encrypt and decrypted", TEXT_TO_ENCRYPT, decrypted); 80 } 81 82 @Test 83 public void passwordChangeRequired() throws Exception { 84 publicKeyStore.verifyPrivateKey(USERNAME, PASSPHRASE.toCharArray()); 85 assertTrue("Key creation", publicKeyStore.hasLoadedKey(USERNAME)); 86 publicKeyStore.changePrivateKeyPassphrase(USERNAME, PASSPHRASE, NEW_PASSPHRASE); 87 publicKeyStore.removeCachedKeys(USERNAME); 88 try { 90 publicKeyStore.verifyPrivateKey(USERNAME, PASSPHRASE.toCharArray()); 91 assertTrue("Verification should have thrown a UpdatePrivateKeyPassphraseException but didn't", false); 92 } 93 catch(UpdatePrivateKeyPassphraseException upkp) { 94 publicKeyStore.verifyPrivateKey(USERNAME, NEW_PASSPHRASE.toCharArray()); 96 String encrypted = publicKeyStore.encryptText(TEXT_TO_ENCRYPT, USERNAME); 97 String decrypted = publicKeyStore.decryptText(encrypted, USERNAME); 98 assertEquals("Encrypt and decrypted", TEXT_TO_ENCRYPT, decrypted); 99 } 100 } 101 102 @Test 103 public void passwordPrompt() throws Exception { 104 publicKeyStore.verifyPrivateKey(USERNAME, PASSPHRASE.toCharArray()); 105 assertTrue("Key creation", publicKeyStore.hasLoadedKey(USERNAME)); 106 publicKeyStore.changePrivateKeyPassphrase(USERNAME, PASSPHRASE, NEW_PASSPHRASE); 107 publicKeyStore.removeCachedKeys(USERNAME); 108 109 try { 111 publicKeyStore.verifyPrivateKey(USERNAME, null); 112 assertTrue("Verification should have thrown a PromptForPasswordException but didn't", false); 113 } 114 catch(PromptForPasswordException pfpe) { 115 publicKeyStore.verifyPrivateKey(USERNAME, NEW_PASSPHRASE.toCharArray()); 116 String encrypted = publicKeyStore.encryptText(TEXT_TO_ENCRYPT, USERNAME); 118 String decrypted = publicKeyStore.decryptText(encrypted, USERNAME); 119 assertEquals("Encrypt and decrypted", TEXT_TO_ENCRYPT, decrypted); 120 } 121 } 122 123 @Test 124 public void failEncrypt() throws Exception { 125 try { 126 publicKeyStore.encryptText(TEXT_TO_ENCRYPT, USERNAME); 127 assertTrue("Verification should have thrown a FatalKeyException but didn't", false); 128 } 129 catch(FatalKeyException fke) { 130 } 132 } 133 } 134 | Popular Tags |