1 22 package org.jboss.test.security.test; 23 24 import java.util.Arrays ; 25 import java.io.File ; 26 import java.io.FileWriter ; 27 import javax.management.ObjectName ; 28 import javax.crypto.spec.PBEParameterSpec; 29 import javax.crypto.spec.PBEKeySpec; 30 import javax.crypto.SecretKeyFactory; 31 import javax.crypto.SecretKey; 32 import javax.crypto.Cipher; 33 34 import org.jboss.test.JBossTestCase; 35 import org.jboss.test.JBossTestSetup; 36 import org.jboss.security.plugins.FilePassword; 37 38 import junit.extensions.TestSetup; 39 import junit.framework.Test; 40 import junit.framework.TestSuite; 41 42 43 48 public class JaasSecurityDomainUnitTestCase 49 extends JBossTestCase 50 { 51 public JaasSecurityDomainUnitTestCase(String name) 52 { 53 super(name); 54 } 55 56 public void testTmpFilePassword() throws Exception 57 { 58 ObjectName name = new ObjectName ("jboss.security:service=JaasSecurityDomain,domain=testTmpFilePassword"); 59 byte[] secret = "secret".getBytes(); 60 Object [] args = {secret}; 61 String [] sig = {secret.getClass().getName()}; 62 byte[] encode = (byte[]) super.invoke(name, "encode", args, sig); 63 assertTrue("secret != encode", Arrays.equals(secret, encode) == false); 64 65 PBEParameterSpec cipherSpec = new PBEParameterSpec("abcdefgh".getBytes(), 13); 66 PBEKeySpec keySpec = new PBEKeySpec("password1".toCharArray()); 67 SecretKeyFactory factory = SecretKeyFactory.getInstance("PBEwithMD5andDES"); 68 SecretKey cipherKey = factory.generateSecret(keySpec); 69 Cipher cipher = Cipher.getInstance("PBEwithMD5andDES"); 70 cipher.init(Cipher.DECRYPT_MODE, cipherKey, cipherSpec); 71 byte[] decode = cipher.doFinal(encode); 72 assertTrue("secret == decode", Arrays.equals(secret, decode)); 73 } 74 75 public void testFilePassword() throws Exception 76 { 77 ObjectName name = new ObjectName ("jboss.security:service=JaasSecurityDomain,domain=testFilePassword"); 78 byte[] secret = "secret".getBytes(); 79 Object [] args = {secret}; 80 String [] sig = {secret.getClass().getName()}; 81 byte[] encode = (byte[]) super.invoke(name, "encode", args, sig); 82 assertTrue("secret != encode", Arrays.equals(secret, encode) == false); 83 84 PBEParameterSpec cipherSpec = new PBEParameterSpec("abcdefgh".getBytes(), 13); 85 PBEKeySpec keySpec = new PBEKeySpec("password2".toCharArray()); 86 SecretKeyFactory factory = SecretKeyFactory.getInstance("PBEwithMD5andDES"); 87 SecretKey cipherKey = factory.generateSecret(keySpec); 88 Cipher cipher = Cipher.getInstance("PBEwithMD5andDES"); 89 cipher.init(Cipher.DECRYPT_MODE, cipherKey, cipherSpec); 90 byte[] decode = cipher.doFinal(encode); 91 assertTrue("secret == decode", Arrays.equals(secret, decode)); 92 } 93 94 public void testEncodeDecode() throws Exception 95 { 96 ObjectName name = new ObjectName ("jboss.security:service=JaasSecurityDomain,domain=encode-decode"); 97 byte[] secret = "secret".getBytes(); 98 Object [] args = {secret}; 99 String [] sig = {secret.getClass().getName()}; 100 byte[] encode = (byte[]) super.invoke(name, "encode", args, sig); 101 assertTrue("secret != encode", Arrays.equals(secret, encode) == false); 102 args = new Object []{encode}; 103 byte[] decode = (byte[]) super.invoke(name, "decode", args, sig); 104 assertTrue("secret == decode", Arrays.equals(secret, decode)); 105 } 106 public void testEncodeDecode64() throws Exception 107 { 108 ObjectName name = new ObjectName ("jboss.security:service=JaasSecurityDomain,domain=encode-decode"); 109 byte[] secret = "secret".getBytes(); 110 Object [] args = {secret}; 111 String [] sig = {secret.getClass().getName()}; 112 String encode = (String ) super.invoke(name, "encode64", args, sig); 113 Object [] args2 = {encode}; 114 String [] sig2 = {"java.lang.String"}; 115 byte[] decode = (byte[]) super.invoke(name, "decode64", args2, sig2); 116 assertTrue("secret == decode", Arrays.equals(secret, decode)); 117 } 118 119 122 public static Test suite() throws Exception 123 { 124 TestSuite suite = new TestSuite(); 125 suite.addTest(new TestSuite(JaasSecurityDomainUnitTestCase.class)); 126 127 TestSetup wrapper = new JBossTestSetup(suite) 129 { 130 File tmpPassword; 131 File password; 132 protected void setUp() throws Exception 133 { 134 super.setUp(); 135 tmpPassword = new File (System.getProperty("java.io.tmpdir"), "tmp.password"); 137 FileWriter writer = new FileWriter (tmpPassword); 138 writer.write("password1"); 139 writer.close(); 140 141 password = new File (System.getProperty("java.io.tmpdir")+ "/tst.password"); 143 String [] args2 = { 144 "12345678", "17", "password2", password.getAbsolutePath() }; 149 FilePassword.main(args2); 150 getLog().info("Created password file: "+args2[2]); 151 152 String url = getResourceURL("security/jaassecdomain-tests-service.xml"); 153 deploy(url); 154 flushAuthCache("unit-tests"); 155 } 156 protected void tearDown() throws Exception 157 { 158 tmpPassword.delete(); 159 password.delete(); 160 String url = getResourceURL("security/jaassecdomain-tests-service.xml"); 161 undeploy(url); 162 super.tearDown(); 163 164 } 165 }; 166 return wrapper; 167 } 168 169 } 170 | Popular Tags |