Attestation is a means of verifying integrity of software running on a (remote) device. It is realized as a challenge response protocol allowing a trusted verifier to obtain an authentic and timely report about the state of a potentially infected device called prover. Static attestation schemes verify the integrity of the program at load-time typically by measuring cryptographic hash of the binary code. However, this do not capture the program’s behavior at runtime. Hence, runtime attacks such as return-oriented programming (ROP) attacks can’t be detected by static attestation. To detect runtime attacks, an attestation should capture and report dynamic state of the program. The main challenge of runtime attestation is how to efficiently transfer and verify dynamic state of the program. This research tackles the challenge by means of control-flow attestation allowing a verifier to detect control-flow deviations launched via code injection, code reuse or non-control data attacks.