Skip to content

warner/pynacl-seanlynch

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PyNaCl: A Python Wrapper for NaCl

Overview

This is a simple wrapper for the NaCl cryptographic library (not Google's NativeClient).

Features

PyNaCl currently wraps the following NaCl functions:

  • crypto_hash_sha256
  • crypto_hash_sha512
  • crypto_randombytes

And the following groups of functions (if not otherwise specified by the suffix, it just wraps the default primitive):

  • crypto_scalarmult_curve25519
  • crypto_box
  • crypto_sign
  • crypto_secretbox
  • crypto_stream
  • crypto_auth
  • crypto_onetimeauth

API

The API is a very straightforward translation of NaCl's C API. Any function that returns an error code will raise ValueError if it returns anything but zero. Output arguments are returned, with keypair functions returning 2-tuples and everything else returning strings. The wrapper handles all padding, so you can just ignore that part of NaCl's documentation.

Eventually I'll translate the documentation over, but for now look at test.py and the NaCl documentation.

Installation

First, download NaCl. NaCl does not build with the -fPIC flag and therefore you must modify a file:

cd <location of extracted NaCl>
sed -i "s/$/ -fPIC/" okcompilers/c*

If you want the build status output printed to screen, you may also do:

sed -i "s/exec 2\?>.*//" do

You can then build NaCl with:

./do

Once NaCl is successfully built, you can clone pynacl and run:

export NACL_DIR=<location of extracted nacl directory>
python setup.py build
sudo python setup.py install

Testing

To run the tests, just run the script "test.py" in the distribution directory.

License

PyNaCl is released under version 2.0 of the Apache license.

To do

  • Convert to a package so I can add Python code
  • Implement a higher-level API
  • Implement fromseed versions of other key generation functions

Releases

No releases published

Packages

No packages published

Languages

  • Assembly 81.9%
  • C 15.4%
  • C++ 1.4%
  • Other 1.3%