Add support for CCMP-256 and GCMP-256 ciphers
authorJoerg Werner <schreibubi@gmail.com>
Fri, 19 Aug 2022 09:06:22 +0000 (11:06 +0200)
committerHauke Mehrtens <hauke@hauke-m.de>
Sat, 20 Aug 2022 15:59:11 +0000 (17:59 +0200)
Signed-off-by: Joerg Werner <schreibubi@gmail.com>
include/iwinfo.h
iwinfo_cli.c
iwinfo_lib.c
iwinfo_lua.c
iwinfo_nl80211.c
iwinfo_utils.c

index e9b7451af037e997933c46f6a30a75b6af7504f9..576632d7cce2d5dbac1c7e9c0fdceab59e1318c3 100644 (file)
 #define IWINFO_BAND_6        (1 << 2)
 #define IWINFO_BAND_60       (1 << 3)
 
-#define IWINFO_CIPHER_NONE   (1 << 0)
-#define IWINFO_CIPHER_WEP40  (1 << 1)
-#define IWINFO_CIPHER_TKIP   (1 << 2)
-#define IWINFO_CIPHER_WRAP   (1 << 3)
-#define IWINFO_CIPHER_CCMP   (1 << 4)
-#define IWINFO_CIPHER_WEP104 (1 << 5)
-#define IWINFO_CIPHER_AESOCB (1 << 6)
-#define IWINFO_CIPHER_CKIP   (1 << 7)
-#define IWINFO_CIPHER_GCMP   (1 << 8)
-#define IWINFO_CIPHER_COUNT  9
+#define IWINFO_CIPHER_NONE    (1 << 0)
+#define IWINFO_CIPHER_WEP40   (1 << 1)
+#define IWINFO_CIPHER_TKIP    (1 << 2)
+#define IWINFO_CIPHER_WRAP    (1 << 3)
+#define IWINFO_CIPHER_CCMP    (1 << 4)
+#define IWINFO_CIPHER_WEP104  (1 << 5)
+#define IWINFO_CIPHER_AESOCB  (1 << 6)
+#define IWINFO_CIPHER_CKIP    (1 << 7)
+#define IWINFO_CIPHER_GCMP    (1 << 8)
+#define IWINFO_CIPHER_CCMP256 (1 << 9)
+#define IWINFO_CIPHER_GCMP256 (1 << 10)
+#define IWINFO_CIPHER_COUNT  11
 
 #define IWINFO_KMGMT_NONE    (1 << 0)
 #define IWINFO_KMGMT_8021x   (1 << 1)
index 456c67a2a5812015636b35b589385f4fa2219cb3..dca86cf6c48ca8f01ea955d60d485a8c75e76b71 100644 (file)
@@ -158,9 +158,15 @@ static char * format_enc_ciphers(int ciphers)
        if (ciphers & IWINFO_CIPHER_CCMP)
                pos += sprintf(pos, "CCMP, ");
 
+       if (ciphers & IWINFO_CIPHER_CCMP256)
+               pos += sprintf(pos, "CCMP-256, ");
+
        if (ciphers & IWINFO_CIPHER_GCMP)
                pos += sprintf(pos, "GCMP, ");
 
+       if (ciphers & IWINFO_CIPHER_GCMP256)
+               pos += sprintf(pos, "GCMP-256, ");
+
        if (ciphers & IWINFO_CIPHER_WRAP)
                pos += sprintf(pos, "WRAP, ");
 
index 118fe58d16b5d06f0ed3f831920b60da912370a2..3364cfcecbf0068383f622c85f64e87bef2f205e 100644 (file)
@@ -31,6 +31,9 @@ const char *IWINFO_CIPHER_NAMES[] = {
        "WEP104",
        "AES-OCB",
        "CKIP",
+       "GCMP",
+       "CCMP-256",
+       "GCMP-256",
 };
 
 const char *IWINFO_KMGMT_NAMES[] = {
index e49e454d3a81e12a58e5bb546b8ad63ecc59be3b..a2fe9d18ffbfe630fe3b3a5e2c3409e39d10c72c 100644 (file)
@@ -61,9 +61,15 @@ static char * iwinfo_crypto_print_ciphers(int ciphers)
        if (ciphers & IWINFO_CIPHER_CCMP)
                pos += sprintf(pos, "CCMP, ");
 
+       if (ciphers & IWINFO_CIPHER_CCMP256)
+               pos += sprintf(pos, "CCMP-256, ");
+
        if (ciphers & IWINFO_CIPHER_GCMP)
                pos += sprintf(pos, "GCMP, ");
 
+       if (ciphers & IWINFO_CIPHER_GCMP256)
+               pos += sprintf(pos, "GCMP-256, ");
+
        if (ciphers & IWINFO_CIPHER_WRAP)
                pos += sprintf(pos, "WRAP, ");
 
index adb8c45f8fac4a2486010d987ef47a4922b671f4..30da6808168237bce86397eecae5aec3f606cfb1 100644 (file)
@@ -1708,12 +1708,14 @@ static struct {
        const char *match;
        int cipher;
 } wpa_cipher_strings[] = {
-       { "WEP-104", IWINFO_CIPHER_WEP104 },
-       { "WEP-40",  IWINFO_CIPHER_WEP40 },
-       { "NONE",    IWINFO_CIPHER_NONE },
-       { "TKIP",    IWINFO_CIPHER_TKIP },
-       { "CCMP",    IWINFO_CIPHER_CCMP },
-       { "GCMP",    IWINFO_CIPHER_GCMP }
+       { "WEP-104", IWINFO_CIPHER_WEP104  },
+       { "WEP-40",  IWINFO_CIPHER_WEP40   },
+       { "NONE",    IWINFO_CIPHER_NONE    },
+       { "TKIP",    IWINFO_CIPHER_TKIP    },
+       { "CCMP-256",IWINFO_CIPHER_CCMP256 },
+       { "CCMP",    IWINFO_CIPHER_CCMP    },
+       { "GCMP-256",IWINFO_CIPHER_GCMP256 },
+       { "GCMP",    IWINFO_CIPHER_GCMP    }
 };
 
 static void parse_wpa_ciphers(const char *str, uint16_t *ciphers)
index d071997b4bebd1d1139262988b5f449f24a6797e..f5eb398d991954185c5a48ec1a90d44d052ef36d 100644 (file)
@@ -316,10 +316,16 @@ static void iwinfo_parse_rsn_cipher(uint8_t idx, uint16_t *ciphers)
                        *ciphers |= IWINFO_CIPHER_GCMP;
                        break;
 
+               case 9:
+                       *ciphers |= IWINFO_CIPHER_GCMP256;
+                       break;
+
+               case 10:
+                       *ciphers |= IWINFO_CIPHER_CCMP256;
+                       break;
+
                case 6:  /* AES-128-CMAC */
                case 7:  /* No group addressed */
-               case 9:  /* GCMP-256 */
-               case 10: /* CCMP-256 */
                case 11: /* BIP-GMAC-128 */
                case 12: /* BIP-GMAC-256 */
                case 13: /* BIP-CMAC-256 */