X-Git-Url: http://www.git.cypherpunks.ru/?p=pygost.git;a=blobdiff_plain;f=pygost%2Ftest_mgm.py;h=c84be2b682e50cef5c775eb9514be714d1ab2dc1;hp=a2c5e5e81af78ca7dbe88d39d62eb2a2790597ea;hb=ade04d6c0456bb39793e8b3547ac99aeffe8af73;hpb=21b8b8f77caa2b719748ba28d36edba9e220d2a7 diff --git a/pygost/test_mgm.py b/pygost/test_mgm.py index a2c5e5e..c84be2b 100644 --- a/pygost/test_mgm.py +++ b/pygost/test_mgm.py @@ -39,7 +39,7 @@ class TestVector(TestCase): class TestSymmetric(TestCase): - def _itself(self, mgm, bs): + def _itself(self, mgm, bs, tag_size): for _ in range(1000): nonce = nonce_prepare(urandom(bs)) ad = urandom(randint(0, 20)) @@ -47,18 +47,29 @@ class TestSymmetric(TestCase): if len(ad) + len(pt) == 0: continue ct = mgm.seal(nonce, pt, ad) + self.assertEqual(len(ct) - tag_size, len(pt)) self.assertSequenceEqual(mgm.open(nonce, ct, ad), pt) def test_magma(self): - mgm = MGM( - GOST3412Magma(urandom(KEYSIZE)).encrypt, - GOST3412Magma.blocksize, - ) - self._itself(mgm, GOST3412Magma.blocksize) + for tag_size in ( + GOST3412Magma.blocksize, + GOST3412Magma.blocksize - 2, + ): + mgm = MGM( + GOST3412Magma(urandom(KEYSIZE)).encrypt, + GOST3412Magma.blocksize, + tag_size, + ) + self._itself(mgm, GOST3412Magma.blocksize, tag_size) def test_kuznechik(self): - mgm = MGM( - GOST3412Kuznechik(urandom(KEYSIZE)).encrypt, - GOST3412Kuznechik.blocksize, - ) - self._itself(mgm, GOST3412Kuznechik.blocksize) + for tag_size in ( + GOST3412Kuznechik.blocksize, + GOST3412Kuznechik.blocksize - 2, + ): + mgm = MGM( + GOST3412Kuznechik(urandom(KEYSIZE)).encrypt, + GOST3412Kuznechik.blocksize, + tag_size, + ) + self._itself(mgm, GOST3412Kuznechik.blocksize, tag_size)