encrypt14keystoretest.java

来自「JGRoups源码」· Java 代码 · 共 471 行

JAVA
471
字号
/* * Created on 04-Jul-2004 * * To change the template for this generated file go to * Window - Preferences - Java - Code Generation - Code and Comments */package org.jgroups.protocols;import junit.framework.TestCase;import org.jgroups.Address;import org.jgroups.Event;import org.jgroups.Message;import org.jgroups.stack.Protocol;import org.jgroups.stack.ProtocolObserver;import javax.crypto.Cipher;import java.io.*;import java.security.MessageDigest;import java.util.HashMap;import java.util.Map;import java.util.Properties;/** * @author xenephon * * To change the template for this generated type comment go to * Window - Preferences - Java - Code Generation - Code and Comments */public class ENCRYPT14KeystoreTest extends TestCase {	   	public void testInitWrongKeystoreProperties()	{				Properties props = new Properties();		String defaultKeystore = "unkownKeystore.keystore";		props.put("key_store_name",defaultKeystore);		//javax.		ENCRYPT encrypt = new ENCRYPT();		encrypt.setProperties(props);		try {			encrypt.init();		} catch (Exception e){			System.out.println(e.getMessage());			assertEquals("Unable to load keystore " + defaultKeystore + " ensure file is on classpath",e.getMessage());		}			}	public void testInitKeystoreProperties()	{				Properties props = new Properties();		String defaultKeystore = "defaultStore.keystore";		props.put("key_store_name",defaultKeystore);		//javax.		ENCRYPT encrypt = new ENCRYPT();		encrypt.setProperties(props);		try {			encrypt.init();		} catch (Exception e){			System.out.println(e.getMessage());		}		assertNotNull(encrypt.getSymDecodingCipher());		assertNotNull(encrypt.getSymEncodingCipher());	}	public void testMessageDownEncode() throws Exception{		// initialise the encryption		Properties props = new Properties();		String defaultKeystore = "defaultStore.keystore";		props.put("key_store_name",defaultKeystore);		//javax.		ENCRYPT encrypt = new ENCRYPT();		encrypt.setProperties(props);		try {			encrypt.init();		} catch (Exception e){			fail(e.getMessage());		}		// use a second instance so we know we are not accidentally using internal key		Properties props2 = new Properties();		props2.put("key_store_name",defaultKeystore);//		javax.		ENCRYPT encrypt2 = new ENCRYPT();		encrypt2.setProperties(props2);		try {			encrypt2.init();		} catch (Exception e){			fail(e.getMessage());		}		MockObserver observer = new MockObserver();		encrypt.setObserver(observer);				encrypt.keyServer = true;		String messageText = "hello this is a test message";		Message msg = new Message(null,null,messageText.getBytes());				Event event = new Event(Event.MSG,msg);		encrypt.down(event);		Message sentMsg = (Message)((Event)observer.getDownMessages().get("message0")).getArg();		String encText = new String(sentMsg.getBuffer());		assertNotSame(encText,messageText);		Cipher cipher = encrypt2.getSymDecodingCipher();		byte[] decodedBytes = cipher.doFinal(sentMsg.getBuffer());		String temp = new String(decodedBytes);		System.out.println("decoded text:" + temp);		assertEquals(temp,messageText);	}			public void testMessageUpDecode() throws Exception{		// initialise the encryption		Properties props = new Properties();		String defaultKeystore = "defaultStore.keystore";		props.put("key_store_name",defaultKeystore);		//javax.		ENCRYPT encrypt = new ENCRYPT();		encrypt.setProperties(props);		try {			encrypt.init();		} catch (Exception e){			fail(e.getMessage());		}		// use a second instance so we know we are not accidentally using internal key		Properties props2 = new Properties();		props2.put("key_store_name",defaultKeystore);//		javax.		ENCRYPT encrypt2 = new ENCRYPT();		encrypt2.setProperties(props2);		try {			encrypt2.init();		} catch (Exception e){			fail(e.getMessage());		}		MockObserver observer = new MockObserver();		encrypt.setObserver(observer);				encrypt.keyServer = true;		String messageText = "hello this is a test message";		Cipher cipher = encrypt2.getSymEncodingCipher();		byte[] encodedBytes = cipher.doFinal(messageText.getBytes());		assertNotSame(new String(encodedBytes),messageText);				MessageDigest digest = MessageDigest.getInstance("MD5");		digest.reset();		digest.update(encrypt.getDesKey().getEncoded());	     		String symVersion = new String(digest.digest(), "UTF-8");				Message msg = new Message(null,null,encodedBytes);		msg.putHeader(ENCRYPT.EncryptHeader.KEY, new ENCRYPT.EncryptHeader(ENCRYPT.EncryptHeader.ENCRYPT,symVersion));		Event event = new Event(Event.MSG,msg);		encrypt.up(event);		Message rcvdMsg = (Message)((Event)observer.getUpMessages().get("message0")).getArg();		String decText = new String(rcvdMsg.getBuffer());		assertEquals(decText,messageText);	}		public void testMessageUpWrongKey() throws Exception{		// initialise the encryption		Properties props = new Properties();		String defaultKeystore = "defaultStore.keystore";		String defaultKeystore2 = "defaultStore2.keystore";		props.put("key_store_name",defaultKeystore);		//javax.		ENCRYPT encrypt = new ENCRYPT();		encrypt.setProperties(props);		try {			encrypt.init();		} catch (Exception e){			fail(e.getMessage());		}		// use a second instance so we know we are not accidentally using internal key			//		javax.		Properties props2 = new Properties();		ENCRYPT encrypt2 = new ENCRYPT();		props2.setProperty("key_store_name",defaultKeystore2);				encrypt2.setProperties(props2);		try {			encrypt2.init();		} catch (Exception e){			fail(e.getMessage());		}		MockObserver observer = new MockObserver();		encrypt.setObserver(observer);				encrypt.keyServer = true;		String messageText = "hello this is a test message";		Cipher cipher = encrypt2.getSymEncodingCipher();		byte[] encodedBytes = cipher.doFinal(messageText.getBytes());		assertNotSame(new String(encodedBytes),messageText);				MessageDigest digest = MessageDigest.getInstance("MD5");		digest.reset();		digest.update(encrypt2.getDesKey().getEncoded());	     		String symVersion = new String(digest.digest());				Message msg = new Message(null,null,encodedBytes);		msg.putHeader(ENCRYPT.EncryptHeader.KEY, new ENCRYPT.EncryptHeader(ENCRYPT.EncryptHeader.ENCRYPT,symVersion));		Event event = new Event(Event.MSG,msg);		encrypt.up(event);		assertEquals(observer.getUpMessages().size(),0);	}		public void testMessageUpNoEncryptHeader() throws Exception{		// initialise the encryption		Properties props = new Properties();		String defaultKeystore = "defaultStore.keystore";		props.put("key_store_name",defaultKeystore);		//javax.		ENCRYPT encrypt = new ENCRYPT();		encrypt.setProperties(props);		try {			encrypt.init();		} catch (Exception e){			fail(e.getMessage());		}		// use a second instance so we know we are not accidentally using internal key		Properties props2 = new Properties();		props2.put("key_store_name",defaultKeystore);//		javax.		ENCRYPT encrypt2 = new ENCRYPT();		encrypt2.setProperties(props2);		try {			encrypt2.init();		} catch (Exception e){			fail(e.getMessage());		}		MockObserver observer = new MockObserver();		encrypt.setObserver(observer);				encrypt.keyServer = true;		String messageText = "hello this is a test message";		Cipher cipher = encrypt2.getSymEncodingCipher();		byte[] encodedBytes = cipher.doFinal(messageText.getBytes());		assertNotSame(new String(encodedBytes),messageText);				Message msg = new Message(null,null,encodedBytes);		Event event = new Event(Event.MSG,msg);		encrypt.up(event);		assertEquals(observer.getUpMessages().size(),0);		}		public void testEventUpNoMessage() throws Exception{		// initialise the encryption		Properties props = new Properties();		String defaultKeystore = "defaultStore.keystore";		props.put("key_store_name",defaultKeystore);		//javax.		ENCRYPT encrypt = new ENCRYPT();		encrypt.setProperties(props);		try {			encrypt.init();		} catch (Exception e){			fail(e.getMessage());		}				MockObserver observer = new MockObserver();		encrypt.setObserver(observer);				encrypt.keyServer = true;			Event event = new Event(Event.MSG,null);		encrypt.up(event);		assertEquals(observer.getUpMessages().size(),1);		}		public void testMessageUpNoBuffer() throws Exception{		// initialise the encryption		Properties props = new Properties();		String defaultKeystore = "defaultStore.keystore";		props.put("key_store_name",defaultKeystore);		//javax.		ENCRYPT encrypt = new ENCRYPT();		encrypt.setProperties(props);		try {			encrypt.init();		} catch (Exception e){			fail(e.getMessage());		}				MockObserver observer = new MockObserver();		encrypt.setObserver(observer);				encrypt.keyServer = true;		Message msg = new Message(null,null,null);		Event event = new Event(Event.MSG,msg);		encrypt.up(event);		assertEquals(observer.getUpMessages().size(),1);		}	class MockObserver implements ProtocolObserver {		private Map upMessages = new HashMap();		private Map downMessages = new HashMap();		private int counter =0;		/* (non-Javadoc)		 * @see org.jgroups.UpHandler#up(org.jgroups.Event)		 */				private void storeUp(Event evt){			upMessages.put("message"+counter++,evt);		}				private void storeDown(Event evt){			downMessages.put("message"+counter++,evt);		}		public void up(Event evt)		{			storeUp(evt);			System.out.println("Up:"+evt.toString());					}		/* (non-Javadoc)		 * @see org.jgroups.stack.ProtocolObserver#setProtocol(org.jgroups.stack.Protocol)		 */		public void setProtocol(Protocol prot)		{		}		/* (non-Javadoc)		 * @see org.jgroups.stack.ProtocolObserver#up(org.jgroups.Event, int)		 */		public boolean up(Event evt, int num_evts)		{			System.out.println("Up:"+evt.toString());						return false;		}		/* (non-Javadoc)		 * @see org.jgroups.stack.ProtocolObserver#passUp(org.jgroups.Event)		 */		public boolean passUp(Event evt)		{			storeUp(evt);			System.out.println("PassUp:"+evt.toString());						return false;		}		/* (non-Javadoc)		 * @see org.jgroups.stack.ProtocolObserver#down(org.jgroups.Event, int)		 */		public boolean down(Event evt, int num_evts)		{			System.out.println("down:"+evt.toString());						return false;		}		/* (non-Javadoc)		 * @see org.jgroups.stack.ProtocolObserver#passDown(org.jgroups.Event)		 */		public boolean passDown(Event evt)		{			storeDown(evt);			System.out.println("passdown:"+evt.toString());						return false;		}				/**		 * @return Returns the upMessages.		 */		protected Map getUpMessages()		{			return upMessages;		}		/**		 * @param upMessages The upMessages to set.		 */		protected void setUpMessages(Map upMessages)		{			this.upMessages = upMessages;		}		/**		 * @return Returns the downMessages.		 */		protected Map getDownMessages()		{			return downMessages;		}		/**		 * @param downMessages The downMessages to set.		 */		protected void setDownMessages(Map downMessages)		{			this.downMessages = downMessages;		}	}		class MockAddress implements Address{		/* (non-Javadoc)		 * @see org.jgroups.Address#isMulticastAddress()		 */		public boolean isMulticastAddress()		{			return false;		}        public int size() {            return 0;        }        /* (non-Javadoc)		 * @see java.io.Externalizable#readExternal(java.io.ObjectInput)		 */		public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException		{		}		/* (non-Javadoc)		 * @see java.io.Externalizable#writeExternal(java.io.ObjectOutput)		 */		public void writeExternal(ObjectOutput out) throws IOException		{		}        public void writeTo(DataOutputStream out) throws IOException {            ;        }        public void readFrom(DataInputStream in) throws IOException, IllegalAccessException, InstantiationException {            ;        }		/* (non-Javadoc)		 * @see java.lang.Comparable#compareTo(java.lang.Object)		 */		public int compareTo(Object o)		{			return -1;		}    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?