-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEnvelope.java
More file actions
153 lines (123 loc) · 3.52 KB
/
Envelope.java
File metadata and controls
153 lines (123 loc) · 3.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.UUID;
enum EnvelopeType {
envrv,
envcs,
envvs,
envcm,
envch,
envpr,
envvt
}
public class Envelope {
private EnvelopeType envType;
private Node sentBy;
private Node receivedBy;
private String envId;
private String sign;
private String hashOfPrevEnvelope;
private String EncryptedContent;
private String testcase;
public Envelope(EnvelopeType envType, Node sentBy, Node receivedBy) {
this.envType = envType;
this.sentBy = sentBy;
this.receivedBy = receivedBy;
this.envId = generateEnvId();
}
public String getHashOfPrevEnvelope() {
return hashOfPrevEnvelope;
}
public void setHashOfPrevEnvelope(String hashOfPrevEnvelope) {
this.hashOfPrevEnvelope = hashOfPrevEnvelope;
}
public EnvelopeType getEnvType() {
return envType;
}
public void setEnvType(EnvelopeType envType) {
this.envType = envType;
}
public Node getSentBy() {
return sentBy;
}
public void setSentBy(Node sentBy) {
this.sentBy = sentBy;
}
public Node getReceivedBy() {
return receivedBy;
}
public void setReceivedBy(Node receivedBy) {
this.receivedBy = receivedBy;
}
public String getEnvId() {
return envId;
}
public void setEnvId(String envId) {
this.envId = envId;
}
private static String generateEnvId() {
UUID uuid = UUID.randomUUID();
return uuid.toString();
}
public String getSign() {
return sign;
}
public void setSign(String sign) {
this.sign = sign;
}
@Override
public String toString() {
// Assuming receivedBy might be null and you want to include its nodeId if it's
// not null.
String receivedById = (this.receivedBy != null) ? this.receivedBy.getNodeId() : "";
return this.envType.toString() + this.sentBy.getNodeId() + receivedById;
}
public String getEncryptedContent() {
return EncryptedContent;
}
public void setEncryptedContent(String encryptedContent) {
EncryptedContent = encryptedContent;
}
private String rootr;
private int numL;
private ArrayList<String> csL;
public String getRootr() {
return rootr;
}
public void setRootr(String rootr) {
this.rootr = rootr;
}
public int getNumL() {
return numL;
}
public void setNumL(int numL) {
this.numL = numL;
}
public ArrayList<String> getCsL() {
return csL;
}
public void setCsL(ArrayList<String> csL) {
this.csL = csL;
}
public String calculateHash() {
try {
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hash = digest.digest(this.getEncryptedContent().getBytes(StandardCharsets.UTF_8));
return bytesToHex(hash);
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException("Cannot find SHA-256 algorithm", e);
}
}
private String bytesToHex(byte[] bytes) {
StringBuilder hexString = new StringBuilder();
for (byte b : bytes) {
String hex = Integer.toHexString(0xff & b);
if (hex.length() == 1)
hexString.append('0');
hexString.append(hex);
}
return hexString.toString();
}
}