diff --git a/nacl/__init__.py b/nacl/__init__.py index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..eca463aa3560c34d68d3e6ea6ee4edc24dc7a990 100644 --- a/nacl/__init__.py +++ b/nacl/__init__.py @@ -0,0 +1 @@ +from . import hash diff --git a/nacl/hash.py b/nacl/hash.py new file mode 100644 index 0000000000000000000000000000000000000000..9ebe0cfca3e4a63ed23f560a97b38b7b3a4329e7 --- /dev/null +++ b/nacl/hash.py @@ -0,0 +1,26 @@ +import binascii + +from . import nacl +from .exceptions import CryptoError + + +def sha256(message, binary=False): + digest = nacl.ffi.new("unsigned char[]", nacl.lib.crypto_hash_sha256_BYTES) + if not nacl.lib.crypto_hash_sha256(digest, message, len(message)): + raise CryptoError("Hashing failed") + digest = nacl.ffi.string(digest) + + if binary: + return digest + return binascii.hexlify(digest).decode("ascii") + + +def sha512(message, binary=False): + digest = nacl.ffi.new("unsigned char[]", nacl.lib.crypto_hash_sha512_BYTES) + if not nacl.lib.crypto_hash_sha512(digest, message, len(message)): + raise CryptoError("Hashing failed") + digest = nacl.ffi.string(digest) + + if binary: + return digest + return binascii.hexlify(digest).decode("ascii")