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()
143 struct eap_fast_pac *pac; in eap_fast_add_pac() local
153 pac = os_zalloc(sizeof(*pac)); in eap_fast_add_pac()
154 if (pac == NULL) in eap_fast_add_pac()
157 pac->pac_type = entry->pac_type; in eap_fast_add_pac()
158 os_memcpy(pac->pac_key, entry->pac_key, EAP_FAST_PAC_KEY_LEN); in eap_fast_add_pac()
159 if (eap_fast_copy_buf(&pac->pac_opaque, &pac->pac_opaque_len, in eap_fast_add_pac()
161 eap_fast_copy_buf(&pac->pac_info, &pac->pac_info_len, in eap_fast_add_pac()
163 eap_fast_copy_buf(&pac->a_id, &pac->a_id_len, in eap_fast_add_pac()
165 eap_fast_copy_buf(&pac->i_id, &pac->i_id_len, in eap_fast_add_pac()
167 eap_fast_copy_buf(&pac->a_id_info, &pac->a_id_info_len, in eap_fast_add_pac()
169 eap_fast_free_pac(pac); in eap_fast_add_pac()
173 pac->next = *pac_root; in eap_fast_add_pac()
174 *pac_root = pac; in eap_fast_add_pac()
299 static const char * eap_fast_parse_start(struct eap_fast_pac **pac) in eap_fast_parse_start() argument
301 if (*pac) in eap_fast_parse_start()
304 *pac = os_zalloc(sizeof(struct eap_fast_pac)); in eap_fast_parse_start()
305 if (*pac == NULL) in eap_fast_parse_start()
307 (*pac)->pac_type = PAC_TYPE_TUNNEL_PAC; in eap_fast_parse_start()
313 struct eap_fast_pac **pac) in eap_fast_parse_end()
315 if (*pac == NULL) in eap_fast_parse_end()
321 end->next = *pac; in eap_fast_parse_end()
323 *pac_root = *pac; in eap_fast_parse_end()
325 *pac = NULL; in eap_fast_parse_end()
330 static const char * eap_fast_parse_pac_type(struct eap_fast_pac *pac, in eap_fast_parse_pac_type() argument
335 pac->pac_type = atoi(pos); in eap_fast_parse_pac_type()
336 if (pac->pac_type != PAC_TYPE_TUNNEL_PAC && in eap_fast_parse_pac_type()
337 pac->pac_type != PAC_TYPE_USER_AUTHORIZATION && in eap_fast_parse_pac_type()
338 pac->pac_type != PAC_TYPE_MACHINE_AUTHENTICATION) in eap_fast_parse_pac_type()
345 static const char * eap_fast_parse_pac_key(struct eap_fast_pac *pac, char *pos) in eap_fast_parse_pac_key() argument
356 os_memcpy(pac->pac_key, key, EAP_FAST_PAC_KEY_LEN); in eap_fast_parse_pac_key()
363 static const char * eap_fast_parse_pac_opaque(struct eap_fast_pac *pac, in eap_fast_parse_pac_opaque() argument
366 os_free(pac->pac_opaque); in eap_fast_parse_pac_opaque()
367 pac->pac_opaque = eap_fast_parse_hex(pos, &pac->pac_opaque_len); in eap_fast_parse_pac_opaque()
368 if (pac->pac_opaque == NULL) in eap_fast_parse_pac_opaque()
374 static const char * eap_fast_parse_a_id(struct eap_fast_pac *pac, char *pos) in eap_fast_parse_a_id() argument
376 os_free(pac->a_id); in eap_fast_parse_a_id()
377 pac->a_id = eap_fast_parse_hex(pos, &pac->a_id_len); in eap_fast_parse_a_id()
378 if (pac->a_id == NULL) in eap_fast_parse_a_id()
384 static const char * eap_fast_parse_i_id(struct eap_fast_pac *pac, char *pos) in eap_fast_parse_i_id() argument
386 os_free(pac->i_id); in eap_fast_parse_i_id()
387 pac->i_id = eap_fast_parse_hex(pos, &pac->i_id_len); in eap_fast_parse_i_id()
388 if (pac->i_id == NULL) in eap_fast_parse_i_id()
394 static const char * eap_fast_parse_a_id_info(struct eap_fast_pac *pac, in eap_fast_parse_a_id_info() argument
397 os_free(pac->a_id_info); in eap_fast_parse_a_id_info()
398 pac->a_id_info = eap_fast_parse_hex(pos, &pac->a_id_info_len); in eap_fast_parse_a_id_info()
399 if (pac->a_id_info == NULL) in eap_fast_parse_a_id_info()
416 struct eap_fast_pac *pac = NULL; in eap_fast_load_pac() local
437 err = eap_fast_parse_start(&pac); in eap_fast_load_pac()
439 err = eap_fast_parse_end(pac_root, &pac); in eap_fast_load_pac()
441 } else if (!pac) in eap_fast_load_pac()
444 err = eap_fast_parse_pac_type(pac, pos); in eap_fast_load_pac()
446 err = eap_fast_parse_pac_key(pac, pos); in eap_fast_load_pac()
448 err = eap_fast_parse_pac_opaque(pac, pos); in eap_fast_load_pac()
450 err = eap_fast_parse_a_id(pac, pos); in eap_fast_load_pac()
452 err = eap_fast_parse_i_id(pac, pos); in eap_fast_load_pac()
454 err = eap_fast_parse_a_id_info(pac, pos); in eap_fast_load_pac()
457 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_malloc(len); in eap_fast_pac_get_a_id()
723 if (pac->a_id == NULL) in eap_fast_pac_get_a_id()
725 os_memcpy(pac->a_id, pos, len); in eap_fast_pac_get_a_id()
726 pac->a_id_len = len; in eap_fast_pac_get_a_id()
730 os_free(pac->a_id_info); in eap_fast_pac_get_a_id()
731 pac->a_id_info = os_malloc(len); in eap_fast_pac_get_a_id()
732 if (pac->a_id_info == NULL) in eap_fast_pac_get_a_id()
734 os_memcpy(pac->a_id_info, pos, len); in eap_fast_pac_get_a_id()
735 pac->a_id_info_len = len; in eap_fast_pac_get_a_id()
756 struct eap_fast_pac *pac, *prev; in eap_fast_load_pac_bin() local
798 pac = prev = 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_malloc(pac->pac_opaque_len); in eap_fast_load_pac_bin()
821 if (pac->pac_opaque == NULL) in eap_fast_load_pac_bin()
823 os_memcpy(pac->pac_opaque, pos, pac->pac_opaque_len); in eap_fast_load_pac_bin()
824 pos += pac->pac_opaque_len; in eap_fast_load_pac_bin()
831 pac->pac_info_len = val; in eap_fast_load_pac_bin()
832 pac->pac_info = os_malloc(pac->pac_info_len); in eap_fast_load_pac_bin()
833 if (pac->pac_info == NULL) in eap_fast_load_pac_bin()
835 os_memcpy(pac->pac_info, pos, pac->pac_info_len); in eap_fast_load_pac_bin()
836 pos += pac->pac_info_len; in eap_fast_load_pac_bin()
837 eap_fast_pac_get_a_id(pac); in eap_fast_load_pac_bin()
841 prev->next = pac; in eap_fast_load_pac_bin()
843 *pac_root = pac; in eap_fast_load_pac_bin()
844 prev = pac; in eap_fast_load_pac_bin()
860 if (pac) in eap_fast_load_pac_bin()
861 eap_fast_free_pac(pac); in eap_fast_load_pac_bin()
877 struct eap_fast_pac *pac; in eap_fast_save_pac_bin() local
881 pac = pac_root; in eap_fast_save_pac_bin()
882 while (pac) { in eap_fast_save_pac_bin()
883 if (pac->pac_opaque_len > 65535 || in eap_fast_save_pac_bin()
884 pac->pac_info_len > 65535) in eap_fast_save_pac_bin()
886 len += 2 + EAP_FAST_PAC_KEY_LEN + 2 + pac->pac_opaque_len + in eap_fast_save_pac_bin()
887 2 + pac->pac_info_len; in eap_fast_save_pac_bin()
888 pac = pac->next; in eap_fast_save_pac_bin()
901 pac = pac_root; in eap_fast_save_pac_bin()
902 while (pac) { in eap_fast_save_pac_bin()
903 WPA_PUT_BE16(pos, pac->pac_type); in eap_fast_save_pac_bin()
905 os_memcpy(pos, pac->pac_key, EAP_FAST_PAC_KEY_LEN); in eap_fast_save_pac_bin()
907 WPA_PUT_BE16(pos, pac->pac_opaque_len); in eap_fast_save_pac_bin()
909 os_memcpy(pos, pac->pac_opaque, pac->pac_opaque_len); in eap_fast_save_pac_bin()
910 pos += pac->pac_opaque_len; in eap_fast_save_pac_bin()
911 WPA_PUT_BE16(pos, pac->pac_info_len); in eap_fast_save_pac_bin()
913 os_memcpy(pos, pac->pac_info, pac->pac_info_len); in eap_fast_save_pac_bin()
914 pos += pac->pac_info_len; in eap_fast_save_pac_bin()
916 pac = pac->next; in eap_fast_save_pac_bin()