aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2013-10-29 08:04:48 +0000
committerFlorian Dold <florian.dold@gmail.com>2013-10-29 08:04:48 +0000
commit5b136df25429cec4939acd2bfedab59966af0789 (patch)
tree83b82ea9fb31c14042e8878c313b7a45ec5bd3c8 /src/main/java/org
parentfe38228c28c292460913459651695591a5f45469 (diff)
downloadgnunet-java-5b136df25429cec4939acd2bfedab59966af0789.tar.gz
gnunet-java-5b136df25429cec4939acd2bfedab59966af0789.zip
-fix #3076
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/gnunet/voting/BallotTool.java6
-rw-r--r--src/main/java/org/gnunet/voting/TallyAuthorityDaemon.java18
-rw-r--r--src/main/java/org/gnunet/voting/messages/SubmitFailureMessage.java3
3 files changed, 21 insertions, 6 deletions
diff --git a/src/main/java/org/gnunet/voting/BallotTool.java b/src/main/java/org/gnunet/voting/BallotTool.java
index d47acab..7964a46 100644
--- a/src/main/java/org/gnunet/voting/BallotTool.java
+++ b/src/main/java/org/gnunet/voting/BallotTool.java
@@ -31,6 +31,7 @@ import org.gnunet.mesh.Mesh;
31import org.gnunet.mesh.MeshRunabout; 31import org.gnunet.mesh.MeshRunabout;
32import org.gnunet.mesh.TunnelEndHandler; 32import org.gnunet.mesh.TunnelEndHandler;
33import org.gnunet.testbed.CompressedConfig; 33import org.gnunet.testbed.CompressedConfig;
34import org.gnunet.util.AbsoluteTime;
34import org.gnunet.util.Configuration; 35import org.gnunet.util.Configuration;
35import org.gnunet.util.PeerIdentity; 36import org.gnunet.util.PeerIdentity;
36import org.gnunet.util.Program; 37import org.gnunet.util.Program;
@@ -188,6 +189,11 @@ public class BallotTool extends Program {
188 189
189 public void visit(SubmitFailureMessage m) { 190 public void visit(SubmitFailureMessage m) {
190 System.out.println("vote not submitted: " + m.reason); 191 System.out.println("vote not submitted: " + m.reason);
192 if (m.authorityTime != null) {
193 // FIXME: verify
194 System.out.println("authority time: " +
195 AbsoluteTime.fromNetwork(m.authorityTime.innerMessage).toFancyString());
196 }
191 tunnel.destroy(); 197 tunnel.destroy();
192 mesh.destroy(); 198 mesh.destroy();
193 } 199 }
diff --git a/src/main/java/org/gnunet/voting/TallyAuthorityDaemon.java b/src/main/java/org/gnunet/voting/TallyAuthorityDaemon.java
index 312b5a2..4736a3b 100644
--- a/src/main/java/org/gnunet/voting/TallyAuthorityDaemon.java
+++ b/src/main/java/org/gnunet/voting/TallyAuthorityDaemon.java
@@ -32,8 +32,7 @@ import org.gnunet.mesh.Mesh;
32import org.gnunet.mesh.MeshRunabout; 32import org.gnunet.mesh.MeshRunabout;
33import org.gnunet.testbed.CompressedConfig; 33import org.gnunet.testbed.CompressedConfig;
34import org.gnunet.util.*; 34import org.gnunet.util.*;
35import org.gnunet.util.crypto.EcdsaPublicKey; 35import org.gnunet.util.crypto.*;
36import org.gnunet.util.crypto.EddsaSignature;
37import org.gnunet.voting.messages.*; 36import org.gnunet.voting.messages.*;
38import org.slf4j.Logger; 37import org.slf4j.Logger;
39import org.slf4j.LoggerFactory; 38import org.slf4j.LoggerFactory;
@@ -50,6 +49,8 @@ public class TallyAuthorityDaemon extends Program {
50 49
51 public static final int MESH_PORT = 1002; 50 public static final int MESH_PORT = 1002;
52 private Mesh mesh; 51 private Mesh mesh;
52 private EddsaPrivateKey authorityPrivateKey;
53 private EddsaPublicKey authorityPublicKey;
53 54
54 public static class Vote implements Message { 55 public static class Vote implements Message {
55 @UInt32 56 @UInt32
@@ -130,6 +131,11 @@ public class TallyAuthorityDaemon extends Program {
130 } 131 }
131 } 132 }
132 133
134 private EddsaSignedMessage<AbsoluteTimeMessage> getTimeSigMessage() {
135 AbsoluteTimeMessage m = AbsoluteTime.now().asMessage();
136 return EddsaSignedMessage.signMessage(m, 0, authorityPrivateKey, authorityPublicKey);
137 }
138
133 private class TallyMeshReceiver extends MeshRunabout { 139 private class TallyMeshReceiver extends MeshRunabout {
134 public void visit(SubmitMessage m) { 140 public void visit(SubmitMessage m) {
135 logger.debug("got submit message"); 141 logger.debug("got submit message");
@@ -148,13 +154,13 @@ public class TallyAuthorityDaemon extends Program {
148 getSender().send(fm); 154 getSender().send(fm);
149 } else if (!electionState.ballot.startTime.isDue()) { 155 } else if (!electionState.ballot.startTime.isDue()) {
150 SubmitFailureMessage fm = new SubmitFailureMessage(); 156 SubmitFailureMessage fm = new SubmitFailureMessage();
151 fm.reason = "too early to submit vote (start " 157 fm.reason = "too early to submit vote";
152 + electionState.ballot.startTime.toFancyString() + ", now " 158 fm.authorityTime = getTimeSigMessage();
153 + AbsoluteTime.now().toFancyString() + ")";
154 getSender().send(fm); 159 getSender().send(fm);
155 } else if (electionState.ballot.closingTime.isDue()) { 160 } else if (electionState.ballot.closingTime.isDue()) {
156 SubmitFailureMessage fm = new SubmitFailureMessage(); 161 SubmitFailureMessage fm = new SubmitFailureMessage();
157 fm.reason = "too late to submit vote"; 162 fm.reason = "too late to submit vote";
163 fm.authorityTime = getTimeSigMessage();
158 getSender().send(fm); 164 getSender().send(fm);
159 } 165 }
160 // FIXME: check signatures of voter and CA 166 // FIXME: check signatures of voter and CA
@@ -246,6 +252,8 @@ public class TallyAuthorityDaemon extends Program {
246 252
247 public TallyAuthorityDaemon(String[] args) { 253 public TallyAuthorityDaemon(String[] args) {
248 super(args); 254 super(args);
255 authorityPrivateKey = EddsaPrivateKey.createRandom();
256 authorityPublicKey = authorityPrivateKey.getPublicKey();
249 } 257 }
250 258
251 public static void main(String[] args) { 259 public static void main(String[] args) {
diff --git a/src/main/java/org/gnunet/voting/messages/SubmitFailureMessage.java b/src/main/java/org/gnunet/voting/messages/SubmitFailureMessage.java
index 3409e2b..50751fb 100644
--- a/src/main/java/org/gnunet/voting/messages/SubmitFailureMessage.java
+++ b/src/main/java/org/gnunet/voting/messages/SubmitFailureMessage.java
@@ -27,11 +27,12 @@ import org.gnunet.construct.ZeroTerminatedString;
27import org.gnunet.util.AbsoluteTimeMessage; 27import org.gnunet.util.AbsoluteTimeMessage;
28import org.gnunet.util.GnunetMessage; 28import org.gnunet.util.GnunetMessage;
29import org.gnunet.util.crypto.EcdsaSignedMessage; 29import org.gnunet.util.crypto.EcdsaSignedMessage;
30import org.gnunet.util.crypto.EddsaSignedMessage;
30 31
31@UnionCase(42010) 32@UnionCase(42010)
32public class SubmitFailureMessage implements GnunetMessage.Body { 33public class SubmitFailureMessage implements GnunetMessage.Body {
33 @ZeroTerminatedString 34 @ZeroTerminatedString
34 public String reason; 35 public String reason;
35 @NestedMessage(optional = true) 36 @NestedMessage(optional = true)
36 public EcdsaSignedMessage<AbsoluteTimeMessage> authorityTime; 37 public EddsaSignedMessage<AbsoluteTimeMessage> authorityTime;
37} 38}