Skip to content

Commit

Permalink
[fix] #93 py3 f*cking up strings
Browse files Browse the repository at this point in the history
  • Loading branch information
stef committed Jan 31, 2020
1 parent 6fe5899 commit 06fb17f
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 0 deletions.
3 changes: 3 additions & 0 deletions pysodium/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -500,20 +500,23 @@ def crypto_auth_verify(h, m, k):
__check(sodium.crypto_auth_verify(h, m, ctypes.c_ulonglong(len(m)), k))

# crypto_generichash(unsigned char *out, size_t outlen, const unsigned char *in, unsigned long long inlen, const unsigned char *key, size_t keylen)
@encode_strings
def crypto_generichash(m, k=b'', outlen=crypto_generichash_BYTES):
buf = ctypes.create_string_buffer(outlen)
__check(sodium.crypto_generichash(buf, ctypes.c_size_t(outlen), m, ctypes.c_ulonglong(len(m)), k, ctypes.c_size_t(len(k))))
return buf.raw


# crypto_generichash_init(crypto_generichash_state *state, const unsigned char *key, const size_t keylen, const size_t outlen);
@encode_strings
def crypto_generichash_init(outlen=crypto_generichash_BYTES, k=b''):
state = ctypes.create_string_buffer(crypto_generichash_STATEBYTES)
__check(sodium.crypto_generichash_init(ctypes.byref(state), k, ctypes.c_size_t(len(k)), ctypes.c_size_t(outlen)))
return state


# crypto_generichash_update(crypto_generichash_state *state, const unsigned char *in, unsigned long long inlen);
@encode_strings
def crypto_generichash_update(state, m):
if len(state) != crypto_generichash_STATEBYTES: raise ValueError("invalid state")
__check(sodium.crypto_generichash_update(ctypes.byref(state), m, ctypes.c_ulonglong(len(m))))
Expand Down
3 changes: 3 additions & 0 deletions test/test_pysodium.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,9 @@ def test_crypto_generichash(self):
self.assertEqual(r, r1)
self.assertEqual(r6, r61)

self.assertNotEqual(pysodium.crypto_generichash( 'salt0'), pysodium.crypto_generichash( 'salt1'))
self.assertNotEqual(pysodium.crypto_generichash(b'salt0'), pysodium.crypto_generichash(b'salt1'))

def test_crypto_box_pk_from_sk(self):
pk1, sk = pysodium.crypto_box_keypair()
pk2 = pysodium.crypto_scalarmult_curve25519_base(sk)
Expand Down

0 comments on commit 06fb17f

Please sign in to comment.