Add the channel identifier to the PlaintextBallot, so it is now printed by the output device

vbdev2
Hai Brenner 2016-07-06 13:24:10 +03:00
parent 853a6b5684
commit b1a033da5e
4 changed files with 28 additions and 11 deletions

View File

@ -60,9 +60,9 @@ message BallotAnswer {
} }
message PlaintextBallot { message PlaintextBallot {
uint64 serialNumber = 1; // Ballot serial number uint64 serial_number = 1; // Ballot serial number
bytes channel_identifier = 2;
repeated BallotAnswer answers = 2; repeated BallotAnswer answers = 3;
} }
message EncryptedBallot { message EncryptedBallot {

View File

@ -1,6 +1,7 @@
package meerkat.voting.output; package meerkat.voting.output;
import com.google.protobuf.BoolValue; import com.google.protobuf.BoolValue;
import com.google.protobuf.ByteString;
import meerkat.protobuf.PollingStation.ScannedData; import meerkat.protobuf.PollingStation.ScannedData;
import meerkat.protobuf.Voting.SignedEncryptedBallot; import meerkat.protobuf.Voting.SignedEncryptedBallot;
import meerkat.rest.Constants; import meerkat.rest.Constants;
@ -10,10 +11,7 @@ import meerkat.voting.output.outputcommands.*;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import javax.ws.rs.client.Client; import javax.ws.rs.client.*;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.Response; import javax.ws.rs.core.Response;
import java.io.IOException; import java.io.IOException;
@ -25,6 +23,7 @@ import static meerkat.pollingstation.PollingStationConstants.POLLING_STATION_WEB
public class NetworkVirtualPrinter extends AsyncRunnableOutputDevice { public class NetworkVirtualPrinter extends AsyncRunnableOutputDevice {
private static final Logger logger = LoggerFactory.getLogger(NetworkVirtualPrinter.class); private static final Logger logger = LoggerFactory.getLogger(NetworkVirtualPrinter.class);
private ByteString channelIdentifier;
private SignedEncryptedBallot signedEncryptedBallot; private SignedEncryptedBallot signedEncryptedBallot;
private final WebTarget successfulPrintTarget; private final WebTarget successfulPrintTarget;
@ -35,6 +34,7 @@ public class NetworkVirtualPrinter extends AsyncRunnableOutputDevice {
client.register(ProtobufMessageBodyReader.class); client.register(ProtobufMessageBodyReader.class);
client.register(ProtobufMessageBodyWriter.class); client.register(ProtobufMessageBodyWriter.class);
successfulPrintTarget = client.target(address).path(POLLING_STATION_WEB_SCANNER_SCAN_PATH); successfulPrintTarget = client.target(address).path(POLLING_STATION_WEB_SCANNER_SCAN_PATH);
resetState();
} }
@ -46,6 +46,7 @@ public class NetworkVirtualPrinter extends AsyncRunnableOutputDevice {
*/ */
public void doCommitToBallot(CommitOutputCommand command) { public void doCommitToBallot(CommitOutputCommand command) {
logger.debug("entered method doCommitToBallot"); logger.debug("entered method doCommitToBallot");
channelIdentifier = command.getChannelIdentifierByteString();
signedEncryptedBallot = command.getSignedEncryptedBallot(); signedEncryptedBallot = command.getSignedEncryptedBallot();
command.getCallback().onSuccess(null); command.getCallback().onSuccess(null);
} }
@ -57,7 +58,7 @@ public class NetworkVirtualPrinter extends AsyncRunnableOutputDevice {
*/ */
public void doAudit(AuditOutputCommand command) { public void doAudit(AuditOutputCommand command) {
logger.debug("entered method doAudit"); logger.debug("entered method doAudit");
signedEncryptedBallot = null; resetState();
command.getCallback().onSuccess(null); command.getCallback().onSuccess(null);
} }
@ -69,7 +70,7 @@ public class NetworkVirtualPrinter extends AsyncRunnableOutputDevice {
public void doCastBallot(CastOutputCommand command) { public void doCastBallot(CastOutputCommand command) {
logger.debug("entered method doCastBallot"); logger.debug("entered method doCastBallot");
ScannedData scannedData = ScannedData.newBuilder() ScannedData scannedData = ScannedData.newBuilder()
.setChannel(null) //TODO: fill the details for the channel to be able to send here .setChannel(channelIdentifier)
.setSignedEncryptedBallot(this.signedEncryptedBallot) .setSignedEncryptedBallot(this.signedEncryptedBallot)
.build(); .build();
@ -77,6 +78,8 @@ public class NetworkVirtualPrinter extends AsyncRunnableOutputDevice {
BoolValue b = response.readEntity(BoolValue.class); BoolValue b = response.readEntity(BoolValue.class);
response.close(); response.close();
resetState();
if (b.getValue()) { if (b.getValue()) {
command.getCallback().onSuccess(null); command.getCallback().onSuccess(null);
} }
@ -92,8 +95,14 @@ public class NetworkVirtualPrinter extends AsyncRunnableOutputDevice {
*/ */
public void doCancel(CancelOutputCommand command) { public void doCancel(CancelOutputCommand command) {
logger.debug("entered method doCancel"); logger.debug("entered method doCancel");
signedEncryptedBallot = null; resetState();
command.getCallback().onSuccess(null); command.getCallback().onSuccess(null);
} }
private void resetState() {
channelIdentifier = null;
signedEncryptedBallot = null;
}
} }

View File

@ -29,7 +29,10 @@ public class SystemConsoleOutputDevice extends AsyncRunnableOutputDevice {
logger.debug("entered method doCommitToBallot"); logger.debug("entered method doCommitToBallot");
PlaintextBallot plaintextBallot = command.getPlaintext(); PlaintextBallot plaintextBallot = command.getPlaintext();
long plaintextSerialNumber = plaintextBallot.getSerialNumber(); long plaintextSerialNumber = plaintextBallot.getSerialNumber();
System.out.println("Commitment of Ballot #" + plaintextSerialNumber + " (plaintext):"); System.out.println("Commitment of Ballot #" + plaintextSerialNumber);
System.out.println("(channel): ");
System.out.println(bytesToString(command.getChannelIdentifierByteString()));
System.out.println("(plaintext): ");
System.out.println(plaintextBallot); System.out.println(plaintextBallot);
SignedEncryptedBallot signedEncryptedBallot = command.getSignedEncryptedBallot(); SignedEncryptedBallot signedEncryptedBallot = command.getSignedEncryptedBallot();
long encryptedSerialNumber = signedEncryptedBallot.getEncryptedBallot().getSerialNumber(); long encryptedSerialNumber = signedEncryptedBallot.getEncryptedBallot().getSerialNumber();

View File

@ -1,5 +1,6 @@
package meerkat.voting.output.outputcommands; package meerkat.voting.output.outputcommands;
import com.google.protobuf.ByteString;
import meerkat.protobuf.Voting.*; import meerkat.protobuf.Voting.*;
import meerkat.voting.controller.callbacks.ControllerCallback; import meerkat.voting.controller.callbacks.ControllerCallback;
@ -19,6 +20,10 @@ public class CommitOutputCommand extends OutputCommand<Void> {
this.signedEncryptedBallot = signedEncryptedBallot; this.signedEncryptedBallot = signedEncryptedBallot;
} }
public ByteString getChannelIdentifierByteString() {
return plaintextBallot.getChannelIdentifier();
}
public PlaintextBallot getPlaintext() { public PlaintextBallot getPlaintext() {
return plaintextBallot; return plaintextBallot;
} }