tests/krb5: Add classes for testing invalid checksums
authorJoseph Sutton <josephsutton@catalyst.net.nz>
Mon, 20 Sep 2021 03:10:35 +0000 (15:10 +1200)
committerAndrew Bartlett <abartlet@samba.org>
Thu, 23 Sep 2021 19:28:44 +0000 (19:28 +0000)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=14642

Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Autobuild-User(master): Andrew Bartlett <abartlet@samba.org>
Autobuild-Date(master): Thu Sep 23 19:28:44 UTC 2021 on sn-devel-184

python/samba/tests/krb5/raw_testcase.py

index cadf2b50dc90605914d4d38117fc252ef26b3c1d..579d52b3e9282c12f2b494df0b92af4ab89bccab 100644 (file)
@@ -303,6 +303,29 @@ class RodcPacEncryptionKey(Krb5EncryptionKey):
                                 cksum)
 
 
+class ZeroedChecksumKey(Krb5EncryptionKey):
+    def make_checksum(self, usage, plaintext, ctype=None):
+        return self.make_zeroed_checksum(ctype)
+
+
+class WrongLengthChecksumKey(Krb5EncryptionKey):
+    def __init__(self, key, kvno, length):
+        super().__init__(key, kvno)
+
+        self._length = length
+
+    def make_checksum(self, usage, plaintext, ctype=None):
+        checksum = super().make_checksum(usage, plaintext, ctype)
+
+        diff = self._length - len(checksum)
+        if diff > 0:
+            checksum += bytes(diff)
+        elif diff < 0:
+            checksum = checksum[:self._length]
+
+        return checksum
+
+
 class KerberosCredentials(Credentials):
 
     fast_supported_bits = (security.KERB_ENCTYPE_FAST_SUPPORTED |