zephyr/samples/net/mbedtls_dtlsclient
Anas Nashif 470c5f3189 tests: remove testcase.ini files
We now use yaml files.

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2017-06-21 20:56:53 -04:00
..
src samples: net: dtls_client: Fix Coverity warning 2017-06-02 12:34:50 +03:00
Makefile
README.rst doc: fix board/sample broken links 2017-06-13 20:49:13 -04:00
prj_arduino_101.conf net: Renaming net nbuf API to net pkt API 2017-04-21 14:19:50 +03:00
prj_qemu_x86.conf net: Rename Kconfig.samples and its main option for future changes 2017-03-31 11:24:26 +02:00
sample.yaml tests: samples: convert testcase files to yaml 2017-06-21 20:56:53 -04:00

README.rst

.. _mbedtls-dtls-client-sample:

mbedTLS DTLS client
####################

Overview
********
This sample code shows a simple DTLS client using mbed TLS on top of Zephyr

Building and running
********************

Follow the steps for testing :ref:`networking_with_qemu`.

Obtain the mbed TLS code from: https://tls.mbed.org/download-archive
and put it in a well known directory on your Linux machine, this will be your
server. (We're using version 2.3.0 for this example.)

Change to that directory and compile the mbedTLS on your host machine:

.. code-block:: console

   $ tar -xvzf mbedtls-2.3.0-apache.tgz
   $ cd mbedtls-2.3.0
   $ CFLAGS="-I$PWD/configs -DMBEDTLS_CONFIG_FILE='<config-thread.h>'" make

Assign the server IP address and start the DTLS server.

.. code-block:: console

   $ sudo ip addr add 192.0.2.2/24 dev tap0
   $ ./programs/ssl/ssl_server2 dtls=1 ecjpake_pw=passwd

.. code-block:: console

   . Seeding the random number generator... ok
   . Bind on udp://*:4433/ ... ok
   . Setting up the SSL/TLS structure... ok
   . Waiting for a remote connection ...

To stop the server, use Ctrl-C and repeat the steps described in
:ref:`networking_with_qemu` every time
QEMU gets terminated, due the Network interface (tap) being restarted.

From the application directory type

.. code-block:: console

   $ make run

This will result in QEMU running with the following output:

.. code-block:: console

	. Seeding the random number generator... ok
	. Setting up the DTLS structure... ok
	. Connecting to udp 192.0.2.2:4433... ok
	. Setting up ecjpake password ... ok
	. Performing the SSL/TLS handshake... ok
	> Write to server: ok
	. Closing the connection... done

On the server side you should see this

.. code-block:: console

	. Performing the SSL/TLS handshake... hello verification requested
	. Waiting for a remote connection ... ok
	. Performing the SSL/TLS handshake... ok
	[ Protocol is DTLSv1.2 ]
	[ Ciphersuite is TLS-ECJPAKE-WITH-AES-128-CCM-8 ]
	[ Record expansion is 29 ]
	[ Maximum fragment length is 16384 ]
	< Read from client: 18 bytes read

	GET / HTTP/1.0

	> Write to client: 143 bytes written in 1 fragments


	HTTP/1.0 200 OK
	Content-Type: text/html

	<h2>mbed TLS Test Server</h2>
	<p>Successful connection using: TLS-ECJPAKE-WITH-AES-128-CCM-8</p>

	. Closing the connection... done
	. Waiting for a remote connection ... ok
	. Performing the SSL/TLS handshake... failed
	! mbedtls_ssl_handshake returned -0x7900

	. Waiting for a remote connection ...

Disregard the last handshake failed message, due the closing connection.

If the server does not receive the  messages, use a network traffic analyzer,
like Wireshark.

Reset the board.

References
**********

- https://tls.mbed.org/