Package org.jgroups.protocols

Source Code of org.jgroups.protocols.ENCRYPT14KeystoreTest

/*
* 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;
    }


    }
}
TOP

Related Classes of org.jgroups.protocols.ENCRYPT14KeystoreTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.