예제 #1
0
 def test_pad_requirement(self):
     key = 32 * b"x"
     for s in (b"", b"foo", b"foobarbaz"):
         with self.assertRaises(ValueError):
             cbc_encrypt(key, s, pad=False)
         with self.assertRaises(ValueError):
             cbc_decrypt(key, s, pad=False)
예제 #2
0
 def test_pad_requirement(self):
     key = 32 * b'x'
     for s in (b'', b'foo', b'foobarbaz'):
         with self.assertRaises(ValueError):
             cbc_encrypt(key, s, pad=False)
         with self.assertRaises(ValueError):
             cbc_decrypt(key, s, pad=False)
예제 #3
0
 def test_passes(self):
     iv = urandom(8)
     key = 32 * b"x"
     for pt in (b"foo", b"foobarba", b"foobarbaz", 16 * b"x"):
         ct = cbc_encrypt(key, pt, iv)
         dt = cbc_decrypt(key, ct)
         self.assertSequenceEqual(pt, dt)
예제 #4
0
 def test_passes(self):
     iv = urandom(8)
     key = 32 * b'x'
     for pt in (b'foo', b'foobarba', b'foobarbaz', 16 * b'x'):
         ct = cbc_encrypt(key, pt, iv)
         dt = cbc_decrypt(key, ct)
         self.assertEqual(pt, dt)
 def decrypt(encrypted_text, mode, key, iv):
     encrypted_data = b64decode(encrypted_text.encode('utf-8'))
     decrypted_data = None
     if mode == 'ECB':
         decrypted_data = GOST.remove_padding(
             ecb_decrypt(key, encrypted_data))
     elif mode == 'CBC':
         decrypted_data = GOST.remove_padding(
             cbc_decrypt(key, encrypted_data))
     elif mode == 'CFB':
         decrypted_data = GOST.remove_padding(
             cfb_decrypt(key, encrypted_data, bytes.fromhex(iv)))
     return decrypted_data.decode('utf-8')
예제 #6
0
 def test_meshing(self):
     pt = urandom(MESH_MAX_DATA * 3)
     key = urandom(32)
     ct = cbc_encrypt(key, pt)
     dt = cbc_decrypt(key, ct)
     self.assertSequenceEqual(pt, dt)
예제 #7
0
 def test_iv_existence_check(self):
     key = 32 * b"x"
     with self.assertRaises(ValueError):
         cbc_decrypt(key, 8 * b"x")
     iv = urandom(8)
     cbc_decrypt(key, cbc_encrypt(key, 8 * b"x", iv))