diff options
Diffstat (limited to 'src/eap_common/eap_sim_common.c')
| -rw-r--r-- | src/eap_common/eap_sim_common.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/eap_common/eap_sim_common.c b/src/eap_common/eap_sim_common.c index 6290c35f1a6b8..1e0f80879dafd 100644 --- a/src/eap_common/eap_sim_common.c +++ b/src/eap_common/eap_sim_common.c @@ -945,10 +945,15 @@ u8 * eap_sim_parse_encr(const u8 *k_encr, const u8 *encr_data, if (decrypted == NULL) return NULL; +#ifdef TEST_FUZZ + wpa_printf(MSG_INFO, + "TEST: Skip AES-128-CBC decryption for fuzz testing"); +#else /* TEST_FUZZ */ if (aes_128_cbc_decrypt(k_encr, iv, decrypted, encr_data_len)) { os_free(decrypted); return NULL; } +#endif /* TEST_FUZZ */ wpa_hexdump(MSG_MSGDUMP, "EAP-SIM: Decrypted AT_ENCR_DATA", decrypted, encr_data_len); @@ -1203,3 +1208,19 @@ void eap_sim_report_notification(void *msg_ctx, int notification, int aka) } } } + + +int eap_sim_anonymous_username(const u8 *id, size_t id_len) +{ + static const char *anonymous_id_prefix = "anonymous@"; + size_t anonymous_id_len = os_strlen(anonymous_id_prefix); + + if (id_len > anonymous_id_len && + os_memcmp(id, anonymous_id_prefix, anonymous_id_len) == 0) + return 1; /* 'anonymous@realm' */ + + if (id_len > 1 && id[0] == '@') + return 1; /* '@realm' */ + + return 0; +} |
