FreeRTOS-Kernel/FreeRTOS-Plus/Source/WolfSSL/wrapper/python/wolfcrypt
TakayukiMatsuo 94aa31c3cb
Update wolfSSL to the latest version(v.4.4.0) (#186)
* deleted old version wolfSSL before updating

* updated wolfSSL to the latest version(v4.4.0)

* updated wolfSSL to the latest version(v4.4.0)

* added macros for timing resistance

Co-authored-by: RichardBarry <3073890+RichardBarry@users.noreply.github.com>
Co-authored-by: Ming Yue <mingyue86010@gmail.com>
2020-08-07 15:58:14 -07:00
..
docs Update wolfSSL to the latest version(v.4.4.0) (#186) 2020-08-07 15:58:14 -07:00
test Update wolfSSL to the latest version(v.4.4.0) (#186) 2020-08-07 15:58:14 -07:00
wolfcrypt Update wolfSSL to the latest version(v.4.4.0) (#186) 2020-08-07 15:58:14 -07:00
.gitignore Update wolfSSL to the latest version(v.4.4.0) (#186) 2020-08-07 15:58:14 -07:00
include.am Update wolfSSL to the latest version(v.4.4.0) (#186) 2020-08-07 15:58:14 -07:00
LICENSING.rst Update wolfSSL to the latest version(v.4.4.0) (#186) 2020-08-07 15:58:14 -07:00
MANIFEST.in Update wolfSSL to the latest version(v.4.4.0) (#186) 2020-08-07 15:58:14 -07:00
README.rst Update wolfSSL to the latest version(v.4.4.0) (#186) 2020-08-07 15:58:14 -07:00
requirements-testing.txt Update wolfSSL to the latest version(v.4.4.0) (#186) 2020-08-07 15:58:14 -07:00
setup.py Update wolfSSL to the latest version(v.4.4.0) (#186) 2020-08-07 15:58:14 -07:00
tox.ini Update wolfSSL to the latest version(v.4.4.0) (#186) 2020-08-07 15:58:14 -07:00


wolfcrypt: the wolfSSL Crypto Engine
====================================

**wolfCrypt Python**, a.k.a. ``wolfcrypt`` is a Python library that encapsulates
**wolfSSL's wolfCrypt API**.

`wolfCrypt <https://wolfssl.com/wolfSSL/Products-wolfcrypt.html>`_ is a
lightweight, portable, C-language-based crypto library
targeted at IoT, embedded, and RTOS environments primarily because of its size,
speed, and feature set. It works seamlessly in desktop, enterprise, and cloud
environments as well. It is the crypto engine behind `wolfSSl's embedded ssl
library <https://wolfssl.com/wolfSSL/Products-wolfssl.html>`_.


Installation
------------

In order to use ``wolfcrypt``, first you'll need to install ``wolfssl`` C
embedded ssl library.

Installing ``wolfssl`` :
~~~~~~~~~~~~~~~~~~~~~~~~

**Mac OSX**

.. code-block:: console

    brew install wolfssl

or

.. code-block:: console

    git clone https://github.com/wolfssl/wolfssl.git
    cd wolfssl/
    ./autogen.sh
    ./configure --enable-sha512
    make
    sudo make install


**Ubuntu**

.. code-block:: console

    sudo apt-get update
    sudo apt-get install -y git autoconf libtool

    git clone https://github.com/wolfssl/wolfssl.git
    cd wolfssl/
    ./autogen.sh
    ./configure --enable-sha512
    make
    sudo make install

    sudo ldconfig

**CentOS**

.. code-block:: console

    sudo rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-6.noarch.rpm
    sudo yum update
    sudo yum install -y git autoconf libtool

    git clone git@github.com:wolfssl/wolfssl.git
    cd wolfssl
    ./autogen.sh
    ./configure --enable-sha512
    make
    sudo make install

    echo /usr/local/lib > wolfssl.conf
    sudo mv wolfssl.conf /etc/ld.so.conf
    sudo ldconfig


Installing ``wolfcrypt`` :
~~~~~~~~~~~~~~~~~~~~~~~~~~

**Mac OSX**

.. code-block:: console

    sudo -H pip install wolfcrypt


**Ubuntu**

.. code-block:: console

    sudo apt-get install -y python-dev python3-dev python-pip libffi-dev
    sudo -H pip install wolfcrypt


**CentOS**

.. code-block:: console

    sudo yum install -y python-devel python3-devel python-pip libffi-devel
    sudo -H pip install wolfcrypt


Testing ``wolfcrypt`` :
~~~~~~~~~~~~~~~~~~~~~~~

.. code-block:: console

    python -c "from wolfcrypt.hashes import Sha; print Sha().hexdigest()"

expected output: **da39a3ee5e6b4b0d3255bfef95601890afd80709**


Testing ``wolfcrypt``'s source code with ``tox`` :
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

To run the unit tests in the source code, you'll need ``tox`` and a few other
requirements. The source code relies at 'WOLFSSL_DIR/wrapper/python/wolfcrypt'
where WOLFSSL_DIR is the path of ``wolfssl``'s source code.

1. Make sure that the testing requirements are installed:

.. code-block:: console

    $ sudo -H pip install -r requirements-testing.txt


2. Run ``tox``:

.. code-block:: console

    $ tox
    ...
    _________________________________ summary _________________________________
    py27: commands succeeded
    SKIPPED: py34: InterpreterNotFound: python3.4
    py35: commands succeeded
    congratulations :)

Note: the test is performed using multiple versions of python. If you are
missing a version the test will be skipped with an **InterpreterNotFound
error**.