]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
python:samba: add a generic arcfour_encrypt() helper function
authorStefan Metzmacher <metze@samba.org>
Thu, 28 Jan 2016 12:52:44 +0000 (13:52 +0100)
committerStefan Metzmacher <metze@samba.org>
Wed, 3 Feb 2016 07:33:11 +0000 (08:33 +0100)
This works with Crypto.Cipher.ARC4 (from python*-crypto) and
fallback to M2Crypto.RC4.RC4 (from [python*-]m2crypto).

BUG: https://bugzilla.samba.org/show_bug.cgi?id=11699

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Alexander Bokovoy <ab@samba.org>
python/samba/__init__.py

index 59b6ebf5e618ecdb11e24a1449dc5a7017792116..7cfbc4c10889f5cca8663c1630fd5dc4d35ee6c3 100644 (file)
@@ -370,6 +370,22 @@ def string_to_byte_array(string):
 
     return blob
 
+def arcfour_encrypt(key, data):
+    try:
+        from Crypto.Cipher import ARC4
+        c = ARC4.new(key)
+        return c.encrypt(data)
+    except ImportError as e:
+        pass
+    try:
+        from M2Crypto.RC4 import RC4
+        c = RC4(key)
+        return c.update(data)
+    except ImportError as e:
+        pass
+    raise Exception("arcfour_encrypt() requires " +
+                    "python*-crypto or python*-m2crypto or m2crypto")
+
 import _glue
 version = _glue.version
 interface_ips = _glue.interface_ips