Added interactive interface
This commit is contained in:
parent
2b0002d7cf
commit
9c5e820c5f
112
src/main/java/Main/Interactive.java
Normal file
112
src/main/java/Main/Interactive.java
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
package Main;
|
||||||
|
|
||||||
|
import javax.swing.plaf.synth.SynthUI;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.Reader;
|
||||||
|
import java.io.Writer;
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
public class Interactive {
|
||||||
|
ProtocolManager protocolManager;
|
||||||
|
|
||||||
|
public Interactive(Reader in, Writer out) {
|
||||||
|
this.protocolManager = new ProtocolManager(in, out);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void beginSenderInteractive(){
|
||||||
|
System.out.print("You are Alice. Type the message you wish to send to Bob: ");
|
||||||
|
|
||||||
|
Scanner scanner = new Scanner(System.in);
|
||||||
|
String message = scanner.nextLine();
|
||||||
|
|
||||||
|
System.out.printf("Your message is %s.\n", message);
|
||||||
|
System.out.println("Ciphering...");
|
||||||
|
|
||||||
|
Commitment commitment = new Commitment(message);
|
||||||
|
byte[] sequenceA = commitment.getSequenceA();
|
||||||
|
byte[] sequenceB = commitment.getSequenceB();
|
||||||
|
byte[] hash = commitment.getHash();
|
||||||
|
|
||||||
|
try {
|
||||||
|
System.out.println("Sending sequence A");
|
||||||
|
protocolManager.sendMessage(sequenceA);
|
||||||
|
|
||||||
|
System.out.println("Sending hash");
|
||||||
|
protocolManager.sendMessage(hash);
|
||||||
|
|
||||||
|
System.out.print("Do you want to try cheating on Bob? [Y/n] ");
|
||||||
|
String choice = scanner.nextLine();
|
||||||
|
if(choice.equals("n")) {
|
||||||
|
System.out.println("You decide not to try to decieve Bob.");
|
||||||
|
} else {
|
||||||
|
System.out.print("Type a new message: ");
|
||||||
|
message = scanner.nextLine();
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("Sending sequence B");
|
||||||
|
protocolManager.sendMessage(sequenceB);
|
||||||
|
|
||||||
|
System.out.println("Sending message");
|
||||||
|
protocolManager.sendMessage(message);
|
||||||
|
|
||||||
|
try {
|
||||||
|
Thread.sleep(2000);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
} catch (IOException exception) {
|
||||||
|
exception.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void beginRecieverInteractive(){
|
||||||
|
System.out.println("You are Bob. Alice wishes you to send you a message.");
|
||||||
|
System.out.println("Waiting for Alice...");
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
System.out.println("Alice has ciphered a message for you. You'll get it once Alice chooses to do so.");
|
||||||
|
System.out.println("She send you a sequence A and hash of the ciphered message.");
|
||||||
|
|
||||||
|
byte[] sequenceA = protocolManager.getMessageBytes();
|
||||||
|
System.out.println("Sequence A is: " + Utils.bytesToHex(sequenceA));
|
||||||
|
|
||||||
|
byte[] hash = protocolManager.getMessageBytes();
|
||||||
|
System.out.println("Hash is: " + Utils.bytesToHex(hash));
|
||||||
|
|
||||||
|
Commitment commitment = new Commitment(sequenceA, hash);
|
||||||
|
|
||||||
|
System.out.println("Waiting for Alice to uncover the message...");
|
||||||
|
byte[] sequenceB = protocolManager.getMessageBytes();
|
||||||
|
|
||||||
|
System.out.println("Alice has sent you sequence B and her message");
|
||||||
|
|
||||||
|
System.out.println("Sequence B is: " + Utils.bytesToHex(sequenceB));
|
||||||
|
|
||||||
|
String message = protocolManager.getMessageStr();
|
||||||
|
System.out.println("Alice's message is: " + message);
|
||||||
|
|
||||||
|
commitment.setSequenceB(sequenceB);
|
||||||
|
commitment.setMessage(message);
|
||||||
|
|
||||||
|
System.out.println("Checking whether Alice has changed her message...");
|
||||||
|
boolean isHashCorrect = commitment.checkHash();
|
||||||
|
|
||||||
|
if(isHashCorrect)
|
||||||
|
System.out.println("Alice didn't decieve you!");
|
||||||
|
else
|
||||||
|
System.out.println("Alice decieved you! The message has been changed!");
|
||||||
|
|
||||||
|
} catch (IOException exception) {
|
||||||
|
exception.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void beginLoopAs(boolean isHost){
|
||||||
|
// Host (the one who starts the app first) is Alice - ciphers the message.
|
||||||
|
if(isHost)
|
||||||
|
beginSenderInteractive();
|
||||||
|
else
|
||||||
|
beginRecieverInteractive();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user