From ef9c519040fa0ba83ccbecfc5358eb4d60a02f77 Mon Sep 17 00:00:00 2001
From: Pierre LALET <pierre.lalet@cea.fr>
Date: Fri, 15 Jan 2016 12:26:35 +0100
Subject: [PATCH] Fix ipsec layer to work w/ pycrypto lacking some AES modes

---
 scapy/layers/ipsec.py | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/scapy/layers/ipsec.py b/scapy/layers/ipsec.py
index 25b082e0..6004dd0f 100644
--- a/scapy/layers/ipsec.py
+++ b/scapy/layers/ipsec.py
@@ -370,16 +370,18 @@ if AES:
                                        block_size=1,
                                        iv_size=8,
                                        key_size=(16 + 4, 24 + 4, 32 + 4))
-    CRYPT_ALGOS['AES-GCM'] = CryptAlgo('AES-GCM',
-                                       cipher=AES,
-                                       mode=AES.MODE_GCM,
-                                       iv_size=8,
-                                       key_size=(16 + 4, 24 + 4, 32 + 4))
-    CRYPT_ALGOS['AES-CCM'] = CryptAlgo('AES-CCM',
-                                       cipher=AES,
-                                       mode=AES.MODE_CCM,
-                                       iv_size=8,
-                                       key_size=(16 + 4, 24 + 4, 32 + 4))
+    if hasattr(AES, "MODE_GCM"):
+        CRYPT_ALGOS['AES-GCM'] = CryptAlgo('AES-GCM',
+                                           cipher=AES,
+                                           mode=AES.MODE_GCM,
+                                           iv_size=8,
+                                           key_size=(16 + 4, 24 + 4, 32 + 4))
+    if hasattr(AES, "MODE_CCM"):
+        CRYPT_ALGOS['AES-CCM'] = CryptAlgo('AES-CCM',
+                                           cipher=AES,
+                                           mode=AES.MODE_CCM,
+                                           iv_size=8,
+                                           key_size=(16 + 4, 24 + 4, 32 + 4))
 if DES:
     CRYPT_ALGOS['DES'] = CryptAlgo('DES',
                                    cipher=DES,
-- 
GitLab