# coding: utf-8
# PyGOST -- Pure Python GOST cryptographic functions library
-# Copyright (C) 2015-2017 Sergey Matveev <stargrave@stargrave.org>
+# Copyright (C) 2015-2019 Sergey Matveev <stargrave@stargrave.org>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
from unittest import TestCase
from pygost.gost3412 import C
-from pygost.gost3412 import GOST3412Kuz
+from pygost.gost3412 import GOST3412Kuznechik
+from pygost.gost3412 import GOST3412Magma
from pygost.gost3412 import L
from pygost.gost3412 import PI
from pygost.utils import hexdec
self.assertEqual(C[7], hexdec("f6593616e6055689adfba18027aa2a08"))
def test_roundkeys(self):
- ciph = GOST3412Kuz(self.key)
+ ciph = GOST3412Kuznechik(self.key)
self.assertEqual(ciph.ks[0], hexdec("8899aabbccddeeff0011223344556677"))
self.assertEqual(ciph.ks[1], hexdec("fedcba98765432100123456789abcdef"))
self.assertEqual(ciph.ks[2], hexdec("db31485315694343228d6aef8cc78c44"))
self.assertEqual(ciph.ks[9], hexdec("72e9dd7416bcf45b755dbaa88e4a4043"))
def test_encrypt(self):
- ciph = GOST3412Kuz(self.key)
+ ciph = GOST3412Kuznechik(self.key)
self.assertEqual(ciph.encrypt(self.plaintext), self.ciphertext)
def test_decrypt(self):
- ciph = GOST3412Kuz(self.key)
+ ciph = GOST3412Kuznechik(self.key)
+ self.assertEqual(ciph.decrypt(self.ciphertext), self.plaintext)
+
+
+class MagmaTest(TestCase):
+ key = hexdec("ffeeddccbbaa99887766554433221100f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff")
+ plaintext = hexdec("fedcba9876543210")
+ ciphertext = hexdec("4ee901e5c2d8ca3d")
+
+ def test_encrypt(self):
+ ciph = GOST3412Magma(self.key)
+ self.assertEqual(ciph.encrypt(self.plaintext), self.ciphertext)
+
+ def test_decrypt(self):
+ ciph = GOST3412Magma(self.key)
self.assertEqual(ciph.decrypt(self.ciphertext), self.plaintext)