Lines Matching refs:pac

50 void eap_fast_free_pac(struct eap_fast_pac *pac)  in eap_fast_free_pac()  argument
52 os_free(pac->pac_opaque); in eap_fast_free_pac()
53 os_free(pac->pac_info); in eap_fast_free_pac()
54 os_free(pac->a_id); in eap_fast_free_pac()
55 os_free(pac->i_id); in eap_fast_free_pac()
56 os_free(pac->a_id_info); in eap_fast_free_pac()
57 os_free(pac); in eap_fast_free_pac()
73 struct eap_fast_pac *pac = pac_root; in eap_fast_get_pac() local
75 while (pac) { in eap_fast_get_pac()
76 if (pac->pac_type == pac_type && pac->a_id_len == a_id_len && in eap_fast_get_pac()
77 os_memcmp(pac->a_id, a_id, a_id_len) == 0) { in eap_fast_get_pac()
78 return pac; in eap_fast_get_pac()
80 pac = pac->next; in eap_fast_get_pac()
90 struct eap_fast_pac *pac, *prev; in eap_fast_remove_pac() local
92 pac = *pac_root; in eap_fast_remove_pac()
95 while (pac) { in eap_fast_remove_pac()
96 if (pac->pac_type == pac_type && pac->a_id_len == a_id_len && in eap_fast_remove_pac()
97 os_memcmp(pac->a_id, a_id, a_id_len) == 0) { in eap_fast_remove_pac()
99 *pac_root = pac->next; in eap_fast_remove_pac()
101 prev->next = pac->next; in eap_fast_remove_pac()
102 if (*pac_current == pac) in eap_fast_remove_pac()
104 eap_fast_free_pac(pac); in eap_fast_remove_pac()
107 prev = pac; in eap_fast_remove_pac()
108 pac = pac->next; in eap_fast_remove_pac()
142 struct eap_fast_pac *pac; in eap_fast_add_pac() local
152 pac = os_zalloc(sizeof(*pac)); in eap_fast_add_pac()
153 if (pac == NULL) in eap_fast_add_pac()
156 pac->pac_type = entry->pac_type; in eap_fast_add_pac()
157 os_memcpy(pac->pac_key, entry->pac_key, EAP_FAST_PAC_KEY_LEN); in eap_fast_add_pac()
158 if (eap_fast_copy_buf(&pac->pac_opaque, &pac->pac_opaque_len, in eap_fast_add_pac()
160 eap_fast_copy_buf(&pac->pac_info, &pac->pac_info_len, in eap_fast_add_pac()
162 eap_fast_copy_buf(&pac->a_id, &pac->a_id_len, in eap_fast_add_pac()
164 eap_fast_copy_buf(&pac->i_id, &pac->i_id_len, in eap_fast_add_pac()
166 eap_fast_copy_buf(&pac->a_id_info, &pac->a_id_info_len, in eap_fast_add_pac()
168 eap_fast_free_pac(pac); in eap_fast_add_pac()
172 pac->next = *pac_root; in eap_fast_add_pac()
173 *pac_root = pac; in eap_fast_add_pac()
298 static const char * eap_fast_parse_start(struct eap_fast_pac **pac) in eap_fast_parse_start() argument
300 if (*pac) in eap_fast_parse_start()
303 *pac = os_zalloc(sizeof(struct eap_fast_pac)); in eap_fast_parse_start()
304 if (*pac == NULL) in eap_fast_parse_start()
306 (*pac)->pac_type = PAC_TYPE_TUNNEL_PAC; in eap_fast_parse_start()
312 struct eap_fast_pac **pac) in eap_fast_parse_end()
314 if (*pac == NULL) in eap_fast_parse_end()
320 end->next = *pac; in eap_fast_parse_end()
322 *pac_root = *pac; in eap_fast_parse_end()
324 *pac = NULL; in eap_fast_parse_end()
329 static const char * eap_fast_parse_pac_type(struct eap_fast_pac *pac, in eap_fast_parse_pac_type() argument
334 pac->pac_type = atoi(pos); in eap_fast_parse_pac_type()
335 if (pac->pac_type != PAC_TYPE_TUNNEL_PAC && in eap_fast_parse_pac_type()
336 pac->pac_type != PAC_TYPE_USER_AUTHORIZATION && in eap_fast_parse_pac_type()
337 pac->pac_type != PAC_TYPE_MACHINE_AUTHENTICATION) in eap_fast_parse_pac_type()
344 static const char * eap_fast_parse_pac_key(struct eap_fast_pac *pac, char *pos) in eap_fast_parse_pac_key() argument
355 os_memcpy(pac->pac_key, key, EAP_FAST_PAC_KEY_LEN); in eap_fast_parse_pac_key()
362 static const char * eap_fast_parse_pac_opaque(struct eap_fast_pac *pac, in eap_fast_parse_pac_opaque() argument
365 os_free(pac->pac_opaque); in eap_fast_parse_pac_opaque()
366 pac->pac_opaque = eap_fast_parse_hex(pos, &pac->pac_opaque_len); in eap_fast_parse_pac_opaque()
367 if (pac->pac_opaque == NULL) in eap_fast_parse_pac_opaque()
373 static const char * eap_fast_parse_a_id(struct eap_fast_pac *pac, char *pos) in eap_fast_parse_a_id() argument
375 os_free(pac->a_id); in eap_fast_parse_a_id()
376 pac->a_id = eap_fast_parse_hex(pos, &pac->a_id_len); in eap_fast_parse_a_id()
377 if (pac->a_id == NULL) in eap_fast_parse_a_id()
383 static const char * eap_fast_parse_i_id(struct eap_fast_pac *pac, char *pos) in eap_fast_parse_i_id() argument
385 os_free(pac->i_id); in eap_fast_parse_i_id()
386 pac->i_id = eap_fast_parse_hex(pos, &pac->i_id_len); in eap_fast_parse_i_id()
387 if (pac->i_id == NULL) in eap_fast_parse_i_id()
393 static const char * eap_fast_parse_a_id_info(struct eap_fast_pac *pac, in eap_fast_parse_a_id_info() argument
396 os_free(pac->a_id_info); in eap_fast_parse_a_id_info()
397 pac->a_id_info = eap_fast_parse_hex(pos, &pac->a_id_info_len); in eap_fast_parse_a_id_info()
398 if (pac->a_id_info == NULL) in eap_fast_parse_a_id_info()
415 struct eap_fast_pac *pac = NULL; in eap_fast_load_pac() local
436 err = eap_fast_parse_start(&pac); in eap_fast_load_pac()
438 err = eap_fast_parse_end(pac_root, &pac); in eap_fast_load_pac()
440 } else if (!pac) in eap_fast_load_pac()
443 err = eap_fast_parse_pac_type(pac, pos); in eap_fast_load_pac()
445 err = eap_fast_parse_pac_key(pac, pos); in eap_fast_load_pac()
447 err = eap_fast_parse_pac_opaque(pac, pos); in eap_fast_load_pac()
449 err = eap_fast_parse_a_id(pac, pos); in eap_fast_load_pac()
451 err = eap_fast_parse_i_id(pac, pos); in eap_fast_load_pac()
453 err = eap_fast_parse_a_id_info(pac, pos); in eap_fast_load_pac()
456 if (pac) { in eap_fast_load_pac()
459 eap_fast_free_pac(pac); in eap_fast_load_pac()
574 static int eap_fast_add_pac_data(struct eap_fast_pac *pac, char **buf, in eap_fast_add_pac_data() argument
580 "START\nPAC-Type=%d\n", pac->pac_type); in eap_fast_add_pac_data()
586 pac->pac_key, EAP_FAST_PAC_KEY_LEN, 0); in eap_fast_add_pac_data()
588 pac->pac_opaque, pac->pac_opaque_len, 0); in eap_fast_add_pac_data()
590 pac->pac_info, pac->pac_info_len, 0); in eap_fast_add_pac_data()
592 pac->a_id, pac->a_id_len, 0); in eap_fast_add_pac_data()
594 pac->i_id, pac->i_id_len, 1); in eap_fast_add_pac_data()
596 pac->a_id_info, pac->a_id_info_len, 1); in eap_fast_add_pac_data()
621 struct eap_fast_pac *pac; in eap_fast_save_pac() local
641 pac = pac_root; in eap_fast_save_pac()
642 while (pac) { in eap_fast_save_pac()
643 if (eap_fast_add_pac_data(pac, &buf, &pos, &buf_len)) { in eap_fast_save_pac()
648 pac = pac->next; in eap_fast_save_pac()
672 struct eap_fast_pac *pac, *prev; in eap_fast_pac_list_truncate() local
675 pac = pac_root; in eap_fast_pac_list_truncate()
679 while (pac) { in eap_fast_pac_list_truncate()
683 prev = pac; in eap_fast_pac_list_truncate()
684 pac = pac->next; in eap_fast_pac_list_truncate()
693 while (pac) { in eap_fast_pac_list_truncate()
694 prev = pac; in eap_fast_pac_list_truncate()
695 pac = pac->next; in eap_fast_pac_list_truncate()
704 static void eap_fast_pac_get_a_id(struct eap_fast_pac *pac) in eap_fast_pac_get_a_id() argument
709 pos = pac->pac_info; in eap_fast_pac_get_a_id()
710 end = pos + pac->pac_info_len; in eap_fast_pac_get_a_id()
721 os_free(pac->a_id); in eap_fast_pac_get_a_id()
722 pac->a_id = os_memdup(pos, len); in eap_fast_pac_get_a_id()
723 if (pac->a_id == NULL) in eap_fast_pac_get_a_id()
725 pac->a_id_len = len; in eap_fast_pac_get_a_id()
729 os_free(pac->a_id_info); in eap_fast_pac_get_a_id()
730 pac->a_id_info = os_memdup(pos, len); in eap_fast_pac_get_a_id()
731 if (pac->a_id_info == NULL) in eap_fast_pac_get_a_id()
733 pac->a_id_info_len = len; in eap_fast_pac_get_a_id()
754 struct eap_fast_pac *pac, *prev; in eap_fast_load_pac_bin() local
796 pac = prev = NULL; in eap_fast_load_pac_bin()
803 pac = NULL; in eap_fast_load_pac_bin()
807 pac = os_zalloc(sizeof(*pac)); in eap_fast_load_pac_bin()
808 if (pac == NULL) in eap_fast_load_pac_bin()
811 pac->pac_type = WPA_GET_BE16(pos); in eap_fast_load_pac_bin()
813 os_memcpy(pac->pac_key, pos, EAP_FAST_PAC_KEY_LEN); in eap_fast_load_pac_bin()
819 pac->pac_opaque_len = val; in eap_fast_load_pac_bin()
820 pac->pac_opaque = os_memdup(pos, pac->pac_opaque_len); in eap_fast_load_pac_bin()
821 if (pac->pac_opaque == NULL) in eap_fast_load_pac_bin()
823 pos += pac->pac_opaque_len; in eap_fast_load_pac_bin()
830 pac->pac_info_len = val; in eap_fast_load_pac_bin()
831 pac->pac_info = os_memdup(pos, pac->pac_info_len); in eap_fast_load_pac_bin()
832 if (pac->pac_info == NULL) in eap_fast_load_pac_bin()
834 pos += pac->pac_info_len; in eap_fast_load_pac_bin()
835 eap_fast_pac_get_a_id(pac); in eap_fast_load_pac_bin()
839 prev->next = pac; in eap_fast_load_pac_bin()
841 *pac_root = pac; in eap_fast_load_pac_bin()
842 prev = pac; in eap_fast_load_pac_bin()
858 if (pac) in eap_fast_load_pac_bin()
859 eap_fast_free_pac(pac); in eap_fast_load_pac_bin()
875 struct eap_fast_pac *pac; in eap_fast_save_pac_bin() local
879 pac = pac_root; in eap_fast_save_pac_bin()
880 while (pac) { in eap_fast_save_pac_bin()
881 if (pac->pac_opaque_len > 65535 || in eap_fast_save_pac_bin()
882 pac->pac_info_len > 65535) in eap_fast_save_pac_bin()
884 len += 2 + EAP_FAST_PAC_KEY_LEN + 2 + pac->pac_opaque_len + in eap_fast_save_pac_bin()
885 2 + pac->pac_info_len; in eap_fast_save_pac_bin()
886 pac = pac->next; in eap_fast_save_pac_bin()
899 pac = pac_root; in eap_fast_save_pac_bin()
900 while (pac) { in eap_fast_save_pac_bin()
901 WPA_PUT_BE16(pos, pac->pac_type); in eap_fast_save_pac_bin()
903 os_memcpy(pos, pac->pac_key, EAP_FAST_PAC_KEY_LEN); in eap_fast_save_pac_bin()
905 WPA_PUT_BE16(pos, pac->pac_opaque_len); in eap_fast_save_pac_bin()
907 os_memcpy(pos, pac->pac_opaque, pac->pac_opaque_len); in eap_fast_save_pac_bin()
908 pos += pac->pac_opaque_len; in eap_fast_save_pac_bin()
909 WPA_PUT_BE16(pos, pac->pac_info_len); in eap_fast_save_pac_bin()
911 os_memcpy(pos, pac->pac_info, pac->pac_info_len); in eap_fast_save_pac_bin()
912 pos += pac->pac_info_len; in eap_fast_save_pac_bin()
914 pac = pac->next; in eap_fast_save_pac_bin()