def _do_test(key_name, num_bytes, num_iterations):
     p = os.path.join(DATA_PATH, key_name)
     f = open(p, 'r')
     json_str = f.read()
     f.close()
     m0 = json.dumps(json.loads(json_str), separators=(',', ':'))
     a = Spinner.loads(json_str)
     self.assertEqual(a.num_bytes, num_bytes)
     self.assertEqual(a.num_iterations, num_iterations)
     m1 = json.dumps(json.loads(a.dumps()), separators=(',', ':'))
     self.assertEqual(m0, m1)
 def test_encdec_pre(self):
     # pre-defined key: 256 bytes, 10 iterations
     p = os.path.join(DATA_PATH, 'key_recommended.json')
     f = open(p, 'r')
     json_str = f.read()
     f.close()
     a = Spinner.loads(json_str)
     pt = bytearray(b'abcdABCD')
     ct = a.encrypt(pt)
     self.assertEqual(ct, bytearray([9, 57, 116, 178, 64, 63, 43, 131]))
     self.assertNotEqual(pt, ct)
     self.assertEqual(len(pt), len(ct))
     pt0 = a.decrypt(ct)
     self.assertEqual(pt, pt0)
    def test_proximity(self):
        # pre-defined key: 256 bytes, 10 iterations
        p = os.path.join(DATA_PATH, 'key_recommended.json')
        f = open(p, 'r')
        json_str = f.read()
        f.close()
        a = Spinner.loads(json_str)
        pt1 = bytearray(b'Test1')
        pt2 = bytearray(b'Test2')
        ct1 = a.encrypt(pt1)
        ct2 = a.encrypt(pt2)

        # check there are no common bytes
        s1 = bytearray_to_set(ct1)
        s2 = bytearray_to_set(ct2)
        num_common = len(s1.intersection(s2))
        self.assertEqual(num_common, 0)