diff options
author | Florian Dold <florian.dold@gmail.com> | 2013-10-29 08:04:48 +0000 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2013-10-29 08:04:48 +0000 |
commit | 5b136df25429cec4939acd2bfedab59966af0789 (patch) | |
tree | 83b82ea9fb31c14042e8878c313b7a45ec5bd3c8 /src/main/java/org | |
parent | fe38228c28c292460913459651695591a5f45469 (diff) | |
download | gnunet-java-5b136df25429cec4939acd2bfedab59966af0789.tar.gz gnunet-java-5b136df25429cec4939acd2bfedab59966af0789.zip |
-fix #3076
Diffstat (limited to 'src/main/java/org')
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; | |||
31 | import org.gnunet.mesh.MeshRunabout; | 31 | import org.gnunet.mesh.MeshRunabout; |
32 | import org.gnunet.mesh.TunnelEndHandler; | 32 | import org.gnunet.mesh.TunnelEndHandler; |
33 | import org.gnunet.testbed.CompressedConfig; | 33 | import org.gnunet.testbed.CompressedConfig; |
34 | import org.gnunet.util.AbsoluteTime; | ||
34 | import org.gnunet.util.Configuration; | 35 | import org.gnunet.util.Configuration; |
35 | import org.gnunet.util.PeerIdentity; | 36 | import org.gnunet.util.PeerIdentity; |
36 | import org.gnunet.util.Program; | 37 | import 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; | |||
32 | import org.gnunet.mesh.MeshRunabout; | 32 | import org.gnunet.mesh.MeshRunabout; |
33 | import org.gnunet.testbed.CompressedConfig; | 33 | import org.gnunet.testbed.CompressedConfig; |
34 | import org.gnunet.util.*; | 34 | import org.gnunet.util.*; |
35 | import org.gnunet.util.crypto.EcdsaPublicKey; | 35 | import org.gnunet.util.crypto.*; |
36 | import org.gnunet.util.crypto.EddsaSignature; | ||
37 | import org.gnunet.voting.messages.*; | 36 | import org.gnunet.voting.messages.*; |
38 | import org.slf4j.Logger; | 37 | import org.slf4j.Logger; |
39 | import org.slf4j.LoggerFactory; | 38 | import 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; | |||
27 | import org.gnunet.util.AbsoluteTimeMessage; | 27 | import org.gnunet.util.AbsoluteTimeMessage; |
28 | import org.gnunet.util.GnunetMessage; | 28 | import org.gnunet.util.GnunetMessage; |
29 | import org.gnunet.util.crypto.EcdsaSignedMessage; | 29 | import org.gnunet.util.crypto.EcdsaSignedMessage; |
30 | import org.gnunet.util.crypto.EddsaSignedMessage; | ||
30 | 31 | ||
31 | @UnionCase(42010) | 32 | @UnionCase(42010) |
32 | public class SubmitFailureMessage implements GnunetMessage.Body { | 33 | public 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 | } |