class SignedDataValidator {

  public boolean validateCommit(final SignedData<CommitPayload> msg) {
    final String msgType = "Commit";

    if (!isMessageForCurrentRoundFromValidatorAndProposalAvailable(msg, msgType)) {
      return false;
    }

    final Hash proposedBlockDigest = proposal.get().getPayload().getDigest();
    final Address commitSealCreator =
        Util.signatureToAddress(msg.getPayload().getCommitSeal(), proposedBlockDigest);

    if (!commitSealCreator.equals(msg.getAuthor())) {
      LOG.info("Invalid Commit message. Seal was not created by the message transmitter.");
      return false;
    }

    return validateDigestMatchesProposal(msg.getPayload().getDigest(), msgType);
  }

  public  SignedDataValidator(
      final Collection<Address> validators,
      final Address expectedProposer,
      final ConsensusRoundIdentifier roundIdentifier);

}