summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2020-03-23 08:53:54 +0100
committerStefan Metzmacher <metze@samba.org>2020-03-27 18:17:35 +0000
commit47385248c8e462162e01afc3d3d68b97dff3542c (patch)
tree5a5d0f74a55da8da83a4b3b7656ff78076153598 /python
parent7010a1311d193c78e9f26adeafe98458217edbca (diff)
downloadsamba-47385248c8e462162e01afc3d3d68b97dff3542c.tar.gz
python/tests/krb5: add support for Cksumtype.MD5
Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Isaac Boukris <iboukris@samba.org>
Diffstat (limited to 'python')
-rwxr-xr-xpython/samba/tests/krb5/kcrypto.py43
1 files changed, 42 insertions, 1 deletions
diff --git a/python/samba/tests/krb5/kcrypto.py b/python/samba/tests/krb5/kcrypto.py
index 0907d881b68..ed3c84fa186 100755
--- a/python/samba/tests/krb5/kcrypto.py
+++ b/python/samba/tests/krb5/kcrypto.py
@@ -526,6 +526,13 @@ class _HMACMD5(_ChecksumProfile):
super(_HMACMD5, cls).verify(key, keyusage, text, cksum)
+class _MD5(_ChecksumProfile):
+ @classmethod
+ def checksum(cls, key, keyusage, text):
+ # This is unkeyed!
+ return SIMPLE_HASH(text, hashes.MD5)
+
+
_enctype_table = {
Enctype.DES3: _DES3CBC,
Enctype.AES128: _AES128CTS,
@@ -538,7 +545,8 @@ _checksum_table = {
Cksumtype.SHA1_DES3: _SHA1DES3,
Cksumtype.SHA1_AES128: _SHA1AES128,
Cksumtype.SHA1_AES256: _SHA1AES256,
- Cksumtype.HMAC_MD5: _HMACMD5
+ Cksumtype.HMAC_MD5: _HMACMD5,
+ Cksumtype.MD5: _MD5,
}
@@ -794,6 +802,39 @@ class KcrytoTest(TestCase):
k = cf2(Enctype.RC4, k1, k2, b'a', b'b')
self.assertEqual(k.contents, kb)
+ def _test_md5_unkeyed_checksum(self, etype, usage):
+ # MD5 unkeyed checksum
+ pw = b'pwd'
+ salt = b'bytes'
+ key = string_to_key(etype, pw, salt)
+ plain = b'seventeen eighteen nineteen twenty'
+ cksum = h('9d9588cdef3a8cefc9d2c208d978f60c')
+ verify_checksum(Cksumtype.MD5, key, usage, plain, cksum)
+
+ def test_md5_unkeyed_checksum_des3_usage_40(self):
+ return self._test_md5_unkeyed_checksum(Enctype.DES3, 40)
+
+ def test_md5_unkeyed_checksum_des3_usage_50(self):
+ return self._test_md5_unkeyed_checksum(Enctype.DES3, 50)
+
+ def test_md5_unkeyed_checksum_rc4_usage_40(self):
+ return self._test_md5_unkeyed_checksum(Enctype.RC4, 40)
+
+ def test_md5_unkeyed_checksum_rc4_usage_50(self):
+ return self._test_md5_unkeyed_checksum(Enctype.RC4, 50)
+
+ def test_md5_unkeyed_checksum_aes128_usage_40(self):
+ return self._test_md5_unkeyed_checksum(Enctype.AES128, 40)
+
+ def test_md5_unkeyed_checksum_aes128_usage_50(self):
+ return self._test_md5_unkeyed_checksum(Enctype.AES128, 50)
+
+ def test_md5_unkeyed_checksum_aes256_usage_40(self):
+ return self._test_md5_unkeyed_checksum(Enctype.AES256, 40)
+
+ def test_md5_unkeyed_checksum_aes256_usage_50(self):
+ return self._test_md5_unkeyed_checksum(Enctype.AES256, 50)
+
if __name__ == "__main__":
import unittest
unittest.main()