]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
mka: Support 256-bit CAK in SAK derivation
authorJouni Malinen <j@w1.fi>
Wed, 26 Dec 2018 10:20:57 +0000 (12:20 +0200)
committerJouni Malinen <j@w1.fi>
Wed, 26 Dec 2018 14:42:26 +0000 (16:42 +0200)
Pass the configured CAK length to SAK derivation instead of using
hardcoded 128-bit length.

Signed-off-by: Jouni Malinen <j@w1.fi>
src/pae/ieee802_1x_kay.c
src/pae/ieee802_1x_key.c
src/pae/ieee802_1x_key.h

index 3b4c79b0f206144fae8d6bc3b84fe0740df6d595..74b2c843b2f47799f594543c8b1ae44583c3bd9d 100644 (file)
@@ -2082,9 +2082,10 @@ ieee802_1x_kay_generate_new_sak(struct ieee802_1x_mka_participant *participant)
        os_memcpy(context + ctx_offset, &kay->dist_kn, sizeof(kay->dist_kn));
 
        if (key_len == 16 || key_len == 32) {
-               if (ieee802_1x_sak_128bits_aes_cmac(participant->cak.key,
-                                                   context, ctx_len,
-                                                   key, key_len)) {
+               if (ieee802_1x_sak_aes_cmac(participant->cak.key,
+                                           participant->cak.len,
+                                           context, ctx_len,
+                                           key, key_len)) {
                        wpa_printf(MSG_ERROR, "KaY: Failed to generate SAK");
                        goto fail;
                }
index e5c76df108be6ead308c62bbace132dccabc4c79..2d6d033396d9fb220798b055a4a0f6d6b0e184c4 100644 (file)
@@ -187,14 +187,14 @@ int ieee802_1x_icv_128bits_aes_cmac(const u8 *ick, const u8 *msg,
 
 
 /**
- * ieee802_1x_sak_128bits_aes_cmac
+ * ieee802_1x_sak_aes_cmac
  *
  * IEEE Std 802.1X-2010, 9.8.1
  * SAK = KDF(Key, Label, KS-nonce | MI-value list | KN, SAKLength)
  */
-int ieee802_1x_sak_128bits_aes_cmac(const u8 *cak, const u8 *ctx,
-                                   size_t ctx_bytes, u8 *sak, size_t sak_bytes)
+int ieee802_1x_sak_aes_cmac(const u8 *cak, size_t cak_bytes, const u8 *ctx,
+                           size_t ctx_bytes, u8 *sak, size_t sak_bytes)
 {
-       return aes_kdf(cak, 128, "IEEE8021 SAK", ctx, ctx_bytes * 8,
+       return aes_kdf(cak, cak_bytes * 8, "IEEE8021 SAK", ctx, ctx_bytes * 8,
                       sak_bytes * 8, sak);
 }
index 20730d5a4a65ac5d205fac2f047b9b63dd1d9f9d..1e464c4513da4d9f30f21c4720327211dbe57848 100644 (file)
@@ -20,8 +20,7 @@ int ieee802_1x_ick_128bits_aes_cmac(const u8 *cak, const u8 *ckn,
                                    size_t ckn_bytes, u8 *ick);
 int ieee802_1x_icv_128bits_aes_cmac(const u8 *ick, const u8 *msg,
                                    size_t msg_bytes, u8 *icv);
-int ieee802_1x_sak_128bits_aes_cmac(const u8 *cak, const u8 *ctx,
-                                   size_t ctx_bytes, u8 *sak,
-                                   size_t sak_bytes);
+int ieee802_1x_sak_aes_cmac(const u8 *cak, size_t cak_bytes, const u8 *ctx,
+                           size_t ctx_bytes, u8 *sak, size_t sak_bytes);
 
 #endif /* IEEE802_1X_KEY_H */