A commonly used crate for cryptography is called ring. This crate supports a number of lower-level crypto primitives, like random number generation, key exchanges, and so on. In this section, we will take key exchange as an example and see how this crate can be used in client-server applications.
A common problem in communication is that of encrypting information so that a third-party cannot decipher it. In a private key system, both the client and the server will need to agree on a key to use for this to work. Now, this key cannot be transmitted in plain text over an insecure connection. The Diffie-Hellman key exchange method defines a mechanism where two parties talking over a secure link can negotiate a key that is shared between them, but has not been transmitted over the connection. This method has a number of implementations on many platforms, including...