Skip to content
This repository has been archived by the owner on Dec 8, 2022. It is now read-only.

Commit

Permalink
fixed a few things, like...
Browse files Browse the repository at this point in the history
  • Loading branch information
duartegithub committed May 1, 2020
1 parent 7c4ad70 commit 584cdb3
Show file tree
Hide file tree
Showing 7 changed files with 59 additions and 26 deletions.
1 change: 1 addition & 0 deletions Client/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

</dependencies>

<build>
Expand Down
22 changes: 14 additions & 8 deletions Client/src/main/java/sec/project/client/Client.java
Original file line number Diff line number Diff line change
Expand Up @@ -171,14 +171,14 @@ public void execute() {
readResponse.getAnnounces().toString() + readResponse.getRid()) && this.rid == readResponse.getRid()){

boolean valid = true;
for(Triplet<Integer,String,byte[]> announce : readResponse.getAnnounces()){
for(Triplet<Integer, String, byte[]> announce : readResponse.getAnnounces()){
if(!(AsymmetricCrypto.validateDigitalSignature(announce.getValue2(),toReadClientPublicKey,
announce.getValue1() + announce.getValue0()))){
valid = false;
}
}

if(valid){
if(valid && readResponse.getAnnounces().size() != 0){
readResponses.add(readResponse);
}

Expand All @@ -190,19 +190,25 @@ public void execute() {

int version = 0;
ReadView mostUpdated = null;
for(ReadView x : readResponses){
int localVersion = x.getAnnounces().get(x.getAnnounces().size() - 1).getValue0();

if (localVersion > version) {
version = localVersion;
mostUpdated = x;
for(ReadView readView : readResponses){
int receivedVersion = readView.getAnnounces().get(readView.getAnnounces().size() - 1).getValue0();

if (receivedVersion > version) {
version = receivedVersion;
mostUpdated = readView;
}
}

readResponses = new ArrayList<>();

for(Triplet<Integer, String, byte[]> announce : mostUpdated.getAnnounces()){
System.out.println(announce.getValue1());

String originalMessage = announce.getValue1();
String originalText = originalMessage.substring(0, originalMessage.indexOf("|"));
String originalRefs = originalMessage.substring(originalMessage.indexOf("|")+1, originalMessage.length());

System.out.println("\nAnnouncement id: "+ announce.getValue0() + "\n message: " + originalText + "\n references: " + originalRefs);
}

break;
Expand Down
21 changes: 8 additions & 13 deletions Server/src/main/java/sec/project/server/Announcement.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,15 @@
public class Announcement implements Serializable {
private int id;
private ArrayList<Integer> references;
private String info;
private int wts;
private byte[] signature;

// this is <wts, message, signature>
private Triplet<Integer, String , byte[]> triplet;

public Announcement(int number, String message, int wts, byte[] signature, Triplet<Integer, String, byte[]> triplet){
this.info = message;
public Announcement(int number, Triplet<Integer, String, byte[]> triplet){
this.id = number;
this.wts = wts;
this.signature = signature;
this.triplet = triplet;
this.references = new ArrayList<>();
String message = triplet.getValue1();
String [] ref = message.substring(message.indexOf("|")+1, message.length()).split(" ");

for(int i=1; i<ref.length; i++){
Expand All @@ -29,13 +26,16 @@ public Announcement(int number, String message, int wts, byte[] signature, Tripl
}
}

public Announcement(int number, String message, String clientNumber){}

public String printAnnouncement(){
String ref = "";
for(int i=0; i<this.references.size(); i++){
ref += this.references.get(i) + " ";
}

return "\nAnnouncement id: "+ this.id + "\n message: " + this.info + "\n references: " + ref;

return "\nAnnouncement id: "+ this.id + "\n message: " + this.triplet.getValue1().substring(0, this.triplet.getValue1().indexOf("|")) + "\n references: " + ref;
}

public ArrayList<Integer> getReferences() {
Expand All @@ -45,11 +45,6 @@ public ArrayList<Integer> getReferences() {
public int getId() {
return this.id;
}
public int getWts() { return wts; }
public Triplet<Integer, String, byte[]> getTriplet() { return triplet; }
public String getInfo() {
return this.info;
}
public byte[] getSignature() { return this.signature; }

}
4 changes: 2 additions & 2 deletions Server/src/main/java/sec/project/server/ClientLibrary.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ public ClientLibrary(String clientNumber, PublicKey clientPublicKey){
this.oneNRegularRegister = new OneNRegularRegister(this);
}

public synchronized void addAnnouncement(String message, int wts, byte[] signature, Triplet<Integer, String, byte[]> triplet){
Announcement announcement = new Announcement(announcements.size() + 1, message, wts, signature, triplet);
public synchronized void addAnnouncement(Triplet<Integer, String, byte[]> triplet){
Announcement announcement = new Announcement(announcements.size() + 1, triplet);
this.announcements.add(announcement);
incrementSeqNumber();
System.out.println("\nOn client" + clientNumber + "'s board:"+ announcement.printAnnouncement());
Expand Down
25 changes: 23 additions & 2 deletions Server/src/main/java/sec/project/server/OneNRegularRegister.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,14 @@
import javax.crypto.BadPaddingException;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.PublicKey;
import java.util.ArrayList;

public class OneNRegularRegister {
public class OneNRegularRegister implements Serializable {

private Triplet <Integer, String, byte[]> valueTriplet;
private ArrayList<Object> readList;
Expand All @@ -39,7 +40,7 @@ public String write(int wts, String value, byte[] signature) throws NoSuchPaddin
value + wts) && wts > this.wts){

this.valueTriplet = new Triplet<>(wts, value, signature);
this.clientLibrary.addAnnouncement(value, wts, signature, this.valueTriplet);
this.clientLibrary.addAnnouncement(this.valueTriplet);
this.wts = wts;
}

Expand All @@ -57,4 +58,24 @@ public ArrayList<Triplet<Integer, String, byte[]>> read(int number, int rid, byt
return null;
}

public ArrayList<Object> getReadList() {
return this.readList;
}

public ClientLibrary getClientLibrary() {
return this.clientLibrary;
}

public int getRid() {
return this.rid;
}

public int getWts() {
return this.wts;
}

public Triplet<Integer, String, byte[]> getValueTriplet() {
return this.valueTriplet;
}

}
4 changes: 3 additions & 1 deletion notes.txt
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
In our project we will not indicate an explicit value of f, f is infered from the number of replicas in a byzantine context. Therefore, for 4, 5 or 6 replicas, f=1, for 7, 8 or 9 replicas, f=2, and so on...
In our project we will not indicate an explicit value of f, f is infered from the number of replicas in a byzantine context. Therefore, for 4, 5 or 6 replicas, f=1, for 7, 8 or 9 replicas, f=2, and so on...

The sequence number is no longer needed for duplication check due to the use of wts and ack
8 changes: 8 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,14 @@
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.javatuples/javatuples -->
<dependency>
<groupId>org.javatuples</groupId>
<artifactId>javatuples</artifactId>
<version>1.2</version>
</dependency>


</dependencies>

<build>
Expand Down

0 comments on commit 584cdb3

Please sign in to comment.