enforce block signer == author field in PoA (#5808)

This commit is contained in:
Robert Habermeier
2017-06-12 11:54:34 +02:00
committed by Nikolay Volf
parent 75ac263961
commit edea41d35e
3 changed files with 9 additions and 2 deletions

View File

@@ -69,6 +69,10 @@ fn verify_external(header: &Header, validators: &ValidatorSet) -> Result<(), Err
let sig = UntrustedRlp::new(&header.seal()[0]).as_val::<H520>()?;
let signer = public_to_address(&recover(&sig.into(), &header.bare_hash())?);
if *header.author() != signer {
return Err(EngineError::NotAuthorized(*header.author()).into())
}
match validators.contains(header.parent_hash(), &signer) {
false => Err(BlockError::InvalidSeal.into()),
true => Ok(())