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 + -
显示快捷键?