/*
 * TestEasySendReceiveEncrypt.java
 *
 * Created on 16 November 2005, 11:13
 *
 */
import java.util.Vector;
import javax.crypto.*;
/**
 *
 * @author Nicholas O'Shea
 */
public class TestEasySendReceiveEncrypt extends KeyGenerationClass {
    public static void main(String[] args) {      
        Network net = new Network();
        A a = new A(net);
        net.register("A", a);
        B b = new B(net);
        net.register("B", b);
 
        SecretKey key = generateSharedKey();
        net.shareKey(key, "K");
        
        b.start();
        a.start();
    }
}

class A extends ComClass {
    Network net;
    
    
    public A (Network net){
        this.net = net;
    }
    
    public void  run(){
        Vector v = new Vector();
        v.add("A");
        String msg = generateMessage("this is a message");
        Vector vEnc = new Vector();
        vEnc.add(msg);
        SecretKey key = (SecretKey) keys.get("K");
        v.add(encrypt(vEnc, key, "a", "b"));
        net.send(this, "B", v);
        


    }
    
    public void processIncoming(Vector<String> v){
        switch (receivedNum) {
            case 0 :
        }
    }
    
}
class B extends ComClass {
    Network net;
    
    
    public B (Network net){
        this.net = net;
    }
    
    public void processIncoming(Vector<String> v){
        switch (receivedNum) {
            case 0 :
                assert (check(v.elementAt(0), "A"));
                assert (check(v.elementAt(1), "B"));
                String source = v.elementAt(2);
                String msgToBeDecoded = v.elementAt(3);
                SecretKey key = (SecretKey) keys.get("K");
                Vector<String> decode = decrypt(msgToBeDecoded, key, "b", "a");
                String message = decode.elementAt(0);
                
                theLogger.info(source);
                theLogger.info(msgToBeDecoded);
                theLogger.info(message);
        }
    }
    
}