public SignedElectionOptions(Value encryptedElectionOptionsValue)
	{
		// Checks whether the value object has the required fields.
		if(!encryptedElectionOptionsValue.hasChildren(ValueIdentifiers.getElectionOptions()) ||
		   !encryptedElectionOptionsValue.hasChildren(ValueIdentifiers.getSignature())) {
				throw new BadValueException();
		}
		//Get the election options children
		ValueVector electionOptionsValueVector = encryptedElectionOptionsValue.getChildren(ValueIdentifiers.getElectionOptions());
		//Get the iterator to be able to iterate over the children
		Iterator<Value> electionOptionsIterator = electionOptionsValueVector.iterator();
		ElectionOption[] options = new ElectionOption[electionOptionsValueVector.size()];
		while(electionOptionsIterator.hasNext()) {
			Value current = electionOptionsIterator.next();
			int id = current.getFirstChild(ValueIdentifiers.getId()).intValue();
			String name = current.getFirstChild(ValueIdentifiers.getName()).strValue();
			int partyId = current.getFirstChild(ValueIdentifiers.getPartyId()).intValue();
			//Create an election option with the found parameters
			options[id] = new ElectionOption(id, name, partyId);
		}
		electionOptions = Arrays.asList(options);
		
		signature = encryptedElectionOptionsValue.getFirstChild(ValueIdentifiers.getSignature()).byteArrayValue().getBytes();
	}