Chris Conlon 667b8431cc Merge pull request #683 from moisesguimaraes/wolfssl-py vor 7 Jahren
..
docs d3d7446a24 removes 3DES from docs vor 7 Jahren
test b50914f2c7 Drops 3DES and adds int wc_RsaSetRNG(RsaKey* key, WC_RNG* rng); for RSA blinding vor 8 Jahren
wolfcrypt 667b8431cc Merge pull request #683 from moisesguimaraes/wolfssl-py vor 7 Jahren
.centos-provisioner.sh 08f6d23e84 moves wolfcrypt-py implementation to wrapper/python/wolfcrypt vor 8 Jahren
.gitignore c8ae6abb43 adds context functions. vor 8 Jahren
.ubuntu-provisioner.sh 08f6d23e84 moves wolfcrypt-py implementation to wrapper/python/wolfcrypt vor 8 Jahren
LICENSING.rst 08f6d23e84 moves wolfcrypt-py implementation to wrapper/python/wolfcrypt vor 8 Jahren
MANIFEST.in 08f6d23e84 moves wolfcrypt-py implementation to wrapper/python/wolfcrypt vor 8 Jahren
README.rst 08f6d23e84 moves wolfcrypt-py implementation to wrapper/python/wolfcrypt vor 8 Jahren
Vagrantfile 08f6d23e84 moves wolfcrypt-py implementation to wrapper/python/wolfcrypt vor 8 Jahren
include.am 5f6cf282b1 fixes include.am comments vor 8 Jahren
requirements-testing.txt 08f6d23e84 moves wolfcrypt-py implementation to wrapper/python/wolfcrypt vor 8 Jahren
setup.py 08f6d23e84 moves wolfcrypt-py implementation to wrapper/python/wolfcrypt vor 8 Jahren
tox.ini 08f6d23e84 moves wolfcrypt-py implementation to wrapper/python/wolfcrypt vor 8 Jahren

README.rst



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

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

`wolfCrypt `_ 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 `_.


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