mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Refactoring to support ALF-9510, ALF-8702
ALF-8702: Solr-Repository SSL Communications (see solr/source/solr/instance/HowToSetUpSolr.txt ALF-9510: Initial checkin git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@30005 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -18,12 +18,15 @@
|
||||
*/
|
||||
package org.alfresco.encryption;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.security.Key;
|
||||
import java.security.KeyStore;
|
||||
import java.security.UnrecoverableKeyException;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
@@ -55,21 +58,71 @@ public class KeyStoreKeyProviderTest extends TestCase
|
||||
/* package */ static KeystoreKeyProvider getTestKeyStoreProvider()
|
||||
{
|
||||
Map<String, String> passwords = new HashMap<String, String>(5);
|
||||
passwords.put(KeystoreKeyProvider.KEY_KEYSTORE_PASSWORD, "ksPwd2");
|
||||
passwords.put(AlfrescoKeyStore.KEY_KEYSTORE_PASSWORD, "ksPwd2");
|
||||
passwords.put(ALIAS_ONE, "aliasPwd1");
|
||||
passwords.put(ALIAS_TWO, "aliasPwd2");
|
||||
KeystoreKeyProvider ks = new KeystoreKeyProvider(
|
||||
FILE_TWO,
|
||||
getKeyStoreLoader(),
|
||||
"SunJCE",
|
||||
"JCEKS",
|
||||
passwords);
|
||||
return ks;
|
||||
KeyStoreParameters encryptionParameters = new KeyStoreParameters("JCEKS", "SunJCE", null, FILE_TWO);
|
||||
KeystoreKeyProvider keyProvider = new KeystoreKeyProvider(encryptionParameters, getKeyStoreLoader(passwords));
|
||||
// FILE_TWO,
|
||||
// getKeyStoreLoader(),
|
||||
// "SunJCE",
|
||||
// "JCEKS",
|
||||
// passwords);
|
||||
return keyProvider;
|
||||
}
|
||||
|
||||
/* package */ static KeystoreKeyProvider getTestKeyStoreProvider(String keyStoreLocation, Map<String, String> passwords)
|
||||
{
|
||||
// Map<String, String> passwords = new HashMap<String, String>(5);
|
||||
// passwords.put(KeyStoreManager.KEY_KEYSTORE_PASSWORD, "ksPwd2");
|
||||
// passwords.put(ALIAS_ONE, "aliasPwd1");
|
||||
// passwords.put(ALIAS_TWO, "aliasPwd2");
|
||||
KeyStoreParameters encryptionParameters = new KeyStoreParameters("JCEKS", "SunJCE", null, keyStoreLocation);
|
||||
KeystoreKeyProvider keyProvider = new KeystoreKeyProvider(encryptionParameters, getKeyStoreLoader(passwords));
|
||||
// FILE_TWO,
|
||||
// getKeyStoreLoader(),
|
||||
// "SunJCE",
|
||||
// "JCEKS",
|
||||
// passwords);
|
||||
return keyProvider;
|
||||
}
|
||||
|
||||
protected static KeyResourceLoader getKeyStoreLoader()
|
||||
private static class TestKeyResourceLoader extends SpringKeyResourceLoader
|
||||
{
|
||||
return new SpringKeyResourceLoader();
|
||||
private Properties props;
|
||||
|
||||
TestKeyResourceLoader(Map<String, String> passwords)
|
||||
{
|
||||
StringBuilder aliases = new StringBuilder();
|
||||
props = new Properties();
|
||||
|
||||
int i = 0;
|
||||
for(Map.Entry<String, String> password : passwords.entrySet())
|
||||
{
|
||||
props.put(password.getKey() + ".password", password.getValue());
|
||||
|
||||
aliases.append(password.getKey());
|
||||
if(i < passwords.size() - 1)
|
||||
{
|
||||
aliases.append(",");
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
props.put("aliases", aliases.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Properties loadKeyMetaData(String keyMetaDataFileLocation)
|
||||
throws IOException, FileNotFoundException
|
||||
{
|
||||
return props;
|
||||
}
|
||||
}
|
||||
|
||||
protected static KeyResourceLoader getKeyStoreLoader(Map<String, String> passwords)
|
||||
{
|
||||
return new TestKeyResourceLoader(passwords);
|
||||
}
|
||||
|
||||
public void setUp() throws Exception
|
||||
@@ -78,24 +131,28 @@ public class KeyStoreKeyProviderTest extends TestCase
|
||||
|
||||
public void testNoKeyStorePasswords() throws Exception
|
||||
{
|
||||
KeystoreKeyProvider keyProvider = new KeystoreKeyProvider(
|
||||
FILE_ONE,
|
||||
getKeyStoreLoader(),
|
||||
"SunJCE",
|
||||
"JCEKS",
|
||||
Collections.<String,String>emptyMap());
|
||||
KeystoreKeyProvider keyProvider = getTestKeyStoreProvider(FILE_ONE, Collections.<String,String>emptyMap());
|
||||
|
||||
// KeystoreKeyProvider keyProvider = new KeystoreKeyProvider(
|
||||
// FILE_ONE,
|
||||
// getKeyStoreLoader(),
|
||||
// "SunJCE",
|
||||
// "JCEKS",
|
||||
// Collections.<String,String>emptyMap());
|
||||
// This has succeeded because we have not attempted to access it
|
||||
assertNull("Should be no keys available", keyProvider.getKey(ALIAS_ONE));
|
||||
}
|
||||
|
||||
public void testKeyStoreWithOnlyAliasPasswords() throws Exception
|
||||
{
|
||||
KeystoreKeyProvider keyProvider = new KeystoreKeyProvider(
|
||||
FILE_TWO,
|
||||
getKeyStoreLoader(),
|
||||
"SunJCE",
|
||||
"JCEKS",
|
||||
Collections.singletonMap(ALIAS_ONE, "aliasPwd1"));
|
||||
KeystoreKeyProvider keyProvider = getTestKeyStoreProvider(FILE_ONE, Collections.singletonMap(ALIAS_ONE, "aliasPwd1"));
|
||||
|
||||
// KeystoreKeyProvider keyProvider = new KeystoreKeyProvider(
|
||||
// FILE_TWO,
|
||||
// getKeyStoreLoader(),
|
||||
// "SunJCE",
|
||||
// "JCEKS",
|
||||
// Collections.singletonMap(ALIAS_ONE, "aliasPwd1"));
|
||||
// This has succeeded because we have not attempted to access it
|
||||
assertNotNull("Should be able to key alias with same password", keyProvider.getKey(ALIAS_ONE));
|
||||
}
|
||||
@@ -104,12 +161,14 @@ public class KeyStoreKeyProviderTest extends TestCase
|
||||
{
|
||||
try
|
||||
{
|
||||
new KeystoreKeyProvider(
|
||||
FILE_ONE,
|
||||
getKeyStoreLoader(),
|
||||
"SunJCE",
|
||||
"JCEKS",
|
||||
Collections.singletonMap(ALIAS_ONE, "password_fail"));
|
||||
getTestKeyStoreProvider(FILE_ONE, Collections.singletonMap(ALIAS_ONE, "password_fail"));
|
||||
|
||||
// new KeystoreKeyProvider(
|
||||
// FILE_ONE,
|
||||
// getKeyStoreLoader(),
|
||||
// "SunJCE",
|
||||
// "JCEKS",
|
||||
// Collections.singletonMap(ALIAS_ONE, "password_fail"));
|
||||
fail("Expect to fail because password is incorrect");
|
||||
}
|
||||
catch (AlfrescoRuntimeException e)
|
||||
@@ -123,12 +182,13 @@ public class KeyStoreKeyProviderTest extends TestCase
|
||||
{
|
||||
try
|
||||
{
|
||||
new KeystoreKeyProvider(
|
||||
FILE_TWO,
|
||||
getKeyStoreLoader(),
|
||||
"SunJCE",
|
||||
"JCEKS",
|
||||
Collections.singletonMap(ALIAS_TWO, "password_fail"));
|
||||
getTestKeyStoreProvider(FILE_TWO, Collections.singletonMap(ALIAS_TWO, "password_fail"));
|
||||
// new KeystoreKeyProvider(
|
||||
// FILE_TWO,
|
||||
// getKeyStoreLoader(),
|
||||
// "SunJCE",
|
||||
// "JCEKS",
|
||||
// Collections.singletonMap(ALIAS_TWO, "password_fail"));
|
||||
fail("Expect to fail because password is incorrect");
|
||||
}
|
||||
catch (AlfrescoRuntimeException e)
|
||||
@@ -140,12 +200,14 @@ public class KeyStoreKeyProviderTest extends TestCase
|
||||
|
||||
public void testAliasWithCorrectPassword_One() throws Exception
|
||||
{
|
||||
KeystoreKeyProvider ks = new KeystoreKeyProvider(
|
||||
FILE_ONE,
|
||||
getKeyStoreLoader(),
|
||||
"SunJCE",
|
||||
"JCEKS",
|
||||
Collections.singletonMap(ALIAS_ONE, "aliasPwd1"));
|
||||
KeystoreKeyProvider ks = getTestKeyStoreProvider(FILE_ONE, Collections.singletonMap(ALIAS_ONE, "aliasPwd1"));
|
||||
|
||||
// KeystoreKeyProvider ks = new KeystoreKeyProvider(
|
||||
// FILE_ONE,
|
||||
// getKeyStoreLoader(),
|
||||
// "SunJCE",
|
||||
// "JCEKS",
|
||||
// Collections.singletonMap(ALIAS_ONE, "aliasPwd1"));
|
||||
Key keyOne = ks.getKey(ALIAS_ONE);
|
||||
assertNotNull(keyOne);
|
||||
}
|
||||
@@ -155,12 +217,16 @@ public class KeyStoreKeyProviderTest extends TestCase
|
||||
Map<String, String> passwords = new HashMap<String, String>(5);
|
||||
passwords.put(ALIAS_ONE, "aliasPwd1");
|
||||
passwords.put(ALIAS_TWO, "aliasPwd2");
|
||||
KeystoreKeyProvider ks = new KeystoreKeyProvider(
|
||||
FILE_TWO,
|
||||
getKeyStoreLoader(),
|
||||
"SunJCE",
|
||||
"JCEKS",
|
||||
passwords);
|
||||
|
||||
KeystoreKeyProvider ks = getTestKeyStoreProvider(FILE_TWO, passwords);
|
||||
|
||||
// KeystoreKeyProvider ks = new KeystoreKeyProvider(
|
||||
// FILE_TWO,
|
||||
// getKeyStoreLoader(),
|
||||
// "SunJCE",
|
||||
// "JCEKS",
|
||||
// passwords);
|
||||
|
||||
assertNotNull(ks.getKey(ALIAS_ONE));
|
||||
assertNotNull(ks.getKey(ALIAS_TWO));
|
||||
}
|
||||
@@ -171,12 +237,14 @@ public class KeyStoreKeyProviderTest extends TestCase
|
||||
passwords.put(ALIAS_ONE, "aliasPwd1");
|
||||
passwords.put(ALIAS_TWO, "aliasPwd2");
|
||||
passwords.put(ALIAS_THREE, "aliasPwd3");
|
||||
KeystoreKeyProvider ks = new KeystoreKeyProvider(
|
||||
FILE_THREE,
|
||||
getKeyStoreLoader(),
|
||||
"SunJCE",
|
||||
"JCEKS",
|
||||
passwords);
|
||||
KeystoreKeyProvider ks = getTestKeyStoreProvider(FILE_THREE, passwords);
|
||||
|
||||
// KeystoreKeyProvider ks = new KeystoreKeyProvider(
|
||||
// FILE_THREE,
|
||||
// getKeyStoreLoader(),
|
||||
// "SunJCE",
|
||||
// "JCEKS",
|
||||
// passwords);
|
||||
assertNotNull(ks.getKey(ALIAS_ONE));
|
||||
assertNotNull(ks.getKey(ALIAS_TWO));
|
||||
assertNull(ks.getKey(ALIAS_THREE));
|
||||
|
Reference in New Issue
Block a user