A Python wrapper that encapsulates wolfSSL's wolfCrypt API.
 
 
 
Go to file
Moisés Guimarães a7e6cb2bc8 adds linux builder 2017-12-12 17:36:53 -03:00
docs moving files to wolfcrypt-py 2017-12-11 17:27:41 -03:00
requirements moving files to wolfcrypt-py 2017-12-11 17:27:41 -03:00
src/wolfcrypt moves 'lib' dir to root 2017-12-12 17:12:16 -03:00
tests moving files to wolfcrypt-py 2017-12-11 17:27:41 -03:00
.buildinfo updates docs to v0.1.9 2017-01-20 16:49:18 -02:00
.gitignore adds gitignore 2017-12-11 17:29:50 -03:00
.nojekyll updates docs to v0.1.9 2017-01-20 16:49:18 -02:00
LICENSING.rst fixes license file and adds specific build option to linux 2017-12-12 11:40:24 -03:00
MANIFEST.in moving files to wolfcrypt-py 2017-12-11 17:27:41 -03:00
Makefile adds -fpic option to CFLAGS 2017-12-11 17:48:28 -03:00
README.rst moving files to wolfcrypt-py 2017-12-11 17:27:41 -03:00
Vagrantfile moving files to wolfcrypt-py 2017-12-11 17:27:41 -03:00
build_linux_wheels.sh adds linux builder 2017-12-12 17:36:53 -03:00
build_mac_os_x_wheels.sh installing only what is necessary and leaving the upload to twine 2017-12-12 12:29:34 -03:00
setup.py moves 'lib' dir to root 2017-12-12 17:12:16 -03:00
tox.ini moving files to wolfcrypt-py 2017-12-11 17:27:41 -03:00

README.rst


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**.