The handshake protocol is responsible for the ciphersuite negotiation, the initial key exchange, and the authentication of the two peers. This is fully controlled by the application layer, thus your program has to set up the required parameters. The main handshake function is gnutls_handshake. In the next paragraphs we elaborate on the handshake protocol, i.e., the ciphersuite negotiation.
|• TLS Cipher Suites||TLS session parameters.|
|• Authentication||TLS authentication.|
|• Client Authentication||Requesting a certificate from the client.|
|• Resuming Sessions||Reusing previously established keys.|