summaryrefslogtreecommitdiff
path: root/pycryptopp/test/test_from_Nikratio.py
blob: a991415c8d264443b0c95c72b2fc0caba7626f9f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import unittest

# This was reported as triggering a "Use of uninitialised value of
# size 4" under valgrind by Nikratio in pycryptopp-0.5.17 and Crypto++
# 5.6.0. See http://tahoe-lafs.org/trac/pycryptopp/ticket/67

class T(unittest.TestCase):
    def test_t(self):
        import hmac
        import pycryptopp
        try:
            import hashlib
        except ImportError:
            # Oh nevermind.
            return
        import struct

        def encrypt(buf, passphrase, nonce):

            key = hashlib.sha256(passphrase + nonce).digest()
            cipher = pycryptopp.cipher.aes.AES(key)
            hmac_ = hmac.new(key, digestmod=hashlib.sha256)

            hmac_.update(buf)
            buf = cipher.process(buf)
            hash_ = cipher.process(hmac_.digest())

            return ''.join(
                            (struct.pack('<B', len(nonce)),
                            nonce, hash_, buf))

        encrypt('foobar', 'passphrase', 'nonce')