  This white paper demonstrates how the assurance, reliability, and security of
an existing professional-grade, open-source embedded TCP/IP stack
implementation written in the C programming language is significantly enhanced
by adopting the SPARK technology. A multifaceted approach achieves this.
Firstly, the TCP layer's C code is being replaced with formally verified SPARK,
a subset of the Ada programming language supported by formal verification
tools. Then the lower layers, still written in C and on which the TCP layer
depends, are modeled using SPARK contracts and validated using symbolic
execution with KLEE. Finally, formal contracts for the upper layers are defined
to call the TCP layer. The work allowed the detection and correction of two
bugs in the TCP layer. In an increasingly connected world, where Cyber Security
is of paramount importance, the powerful approach detailed in this work can be
applied to any existing critical C library to harden their reliability and
security significantly.
