/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.geofence.core.model.util;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import java.security.GeneralSecurityException;
import java.util.Properties;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
/**
*
* @author ETj <etj at geo-solutions.it>
*/
public class PwEncoderTest {
public PwEncoderTest() {
}
@BeforeClass
public static void setUpClass() throws Exception {
}
@AfterClass
public static void tearDownClass() throws Exception {
}
@Test
public void testEncode() {
testString("test");
testString("topolino");
testString("");
}
@Test
public void cannotDecodePwWithCustomKey() throws Exception {
Properties originalProperties = System.getProperties();
Properties properties = new Properties();
properties.putAll(originalProperties);
System.setProperties(properties);
properties.setProperty("GEOFENCE_PWENCODER_KEY", "mycustomkeyforencrypting");
String encoded = PwEncoder.encode("test");
System.out.println(encoded);
String defaultKey = "installation dependant key needed";
byte[] bytes = defaultKey.substring(0, 16).getBytes();
SecretKeySpec keySpec = new SecretKeySpec(bytes, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, keySpec);
try {
cipher.doFinal(Base64.decodeBase64(encoded));
fail();
} catch (GeneralSecurityException e) {
}
System.setProperties(originalProperties);
}
public void testString(String test) {
String enc = PwEncoder.encode(test);
System.out.println("ENC --> " + enc);
String dec = PwEncoder.decode(enc);
System.out.println("DEC --> " + dec);
assertEquals(test, dec);
}
}