Lines Matching refs:val

36 #define clean_return(val) { retval = val; goto error_out; }
381 type val; \
385 val = calloc(1, sizeof(*val)); \
386 if (!val) \
388 retval = structure_decoder(buf, val); \
390 free(val); \
393 *valptr = val; \
398 asn1_decode_kerberos_time(asn1buf *buf, krb5_timestamp *val)
407 *val = t;
412 asn1_error_code fname(asn1buf * buf, ktype * val) \
418 *val = (ktype)n; \
422 asn1_error_code fname(asn1buf * buf, ktype * val) \
428 *val = (ktype)n; \
443 asn1_decode_seqnum(asn1buf *buf, krb5_ui_4 *val)
450 *val = (krb5_ui_4)n & 0xffffffff;
455 asn1_decode_msgtype(asn1buf *buf, krb5_msgtype *val)
463 *val = (krb5_msgtype) n;
470 asn1_decode_realm(asn1buf *buf, krb5_principal *val)
473 &((*val)->realm.length),
474 &((*val)->realm.data));
478 asn1_decode_principal_name(asn1buf *buf, krb5_principal *val)
485 get_field((*val)->type,0,asn1_decode_int32);
509 (*val)->data = array;
510 (*val)->length = size;
511 (*val)->magic = KV5M_PRINCIPAL;
521 asn1_decode_checksum(asn1buf *buf, krb5_checksum *val)
524 val->contents = NULL;
526 get_field(val->checksum_type,0,asn1_decode_cksumtype);
527 get_lenfield(val->length,val->contents,1,asn1_decode_octetstring);
529 val->magic = KV5M_CHECKSUM;
533 free(val->contents);
544 asn1_decode_encryption_key(asn1buf *buf, krb5_keyblock *val)
547 val->contents = NULL;
549 get_field(val->enctype,0,asn1_decode_enctype);
550 get_lenfield(val->length,val->contents,1,asn1_decode_octetstring);
552 val->magic = KV5M_KEYBLOCK;
556 free(val->contents);
567 asn1_decode_encrypted_data(asn1buf *buf, krb5_enc_data *val)
570 val->ciphertext.data = NULL;
572 get_field(val->enctype,0,asn1_decode_enctype);
573 opt_field(val->kvno,1,asn1_decode_kvno,0);
574 get_lenfield(val->ciphertext.length,val->ciphertext.data,2,asn1_decode_charstring);
576 val->magic = KV5M_ENC_DATA;
580 free(val->ciphertext.data);
581 val->ciphertext.data = NULL;
586 asn1_decode_krb5_flags(asn1buf *buf, krb5_flags *val)
623 *val = f;
628 asn1_decode_ticket_flags(asn1buf *buf, krb5_flags *val)
629 { return asn1_decode_krb5_flags(buf,val); }
632 asn1_decode_ap_options(asn1buf *buf, krb5_flags *val)
633 { return asn1_decode_krb5_flags(buf,val); }
636 asn1_decode_kdc_options(asn1buf *buf, krb5_flags *val)
637 { return asn1_decode_krb5_flags(buf,val); }
640 asn1_decode_transited_encoding(asn1buf *buf, krb5_transited *val)
643 val->tr_contents.data = NULL;
645 get_field(val->tr_type,0,asn1_decode_octet);
646 get_lenfield(val->tr_contents.length,val->tr_contents.data,1,asn1_decode_charstring);
648 val->magic = KV5M_TRANSITED;
652 krb5_free_data_contents(NULL, &val->tr_contents);
657 asn1_decode_enc_kdc_rep_part(asn1buf *buf, krb5_enc_kdc_rep_part *val)
660 val->session = NULL;
661 val->last_req = NULL;
662 val->server = NULL;
663 val->caddrs = NULL;
664 val->enc_padata = NULL;
666 get_field(val->session,0,asn1_decode_encryption_key_ptr);
667 get_field(val->last_req,1,asn1_decode_last_req);
668 get_field(val->nonce,2,asn1_decode_int32);
669 opt_field(val->key_exp,3,asn1_decode_kerberos_time,0);
670 get_field(val->flags,4,asn1_decode_ticket_flags);
671 get_field(val->times.authtime,5,asn1_decode_kerberos_time);
673 opt_field(val->times.starttime,6,asn1_decode_kerberos_time,val->times.authtime);
674 get_field(val->times.endtime,7,asn1_decode_kerberos_time);
675 opt_field(val->times.renew_till,8,asn1_decode_kerberos_time,0);
676 alloc_principal(val->server);
677 get_field(val->server,9,asn1_decode_realm);
678 get_field(val->server,10,asn1_decode_principal_name);
679 opt_field(val->caddrs,11,asn1_decode_host_addresses,NULL);
680 opt_field(val->enc_padata,12,asn1_decode_sequence_of_pa_data,NULL);
682 val->magic = KV5M_ENC_KDC_REP_PART;
686 krb5_free_keyblock(NULL, val->session);
687 krb5_free_last_req(NULL, val->last_req);
688 krb5_free_principal(NULL, val->server);
689 krb5_free_addresses(NULL, val->caddrs);
690 krb5_free_pa_data(NULL, val->enc_padata);
691 val->session = NULL;
692 val->last_req = NULL;
693 val->server = NULL;
694 val->caddrs = NULL;
699 asn1_decode_ticket(asn1buf *buf, krb5_ticket *val)
704 val->server = NULL;
705 val->enc_part.ciphertext.data = NULL;
706 val->enc_part2 = NULL;
711 alloc_principal(val->server);
712 get_field(val->server,1,asn1_decode_realm);
713 get_field(val->server,2,asn1_decode_principal_name);
714 get_field(val->enc_part,3,asn1_decode_encrypted_data);
716 val->magic = KV5M_TICKET;
725 krb5_free_principal(NULL, val->server);
726 krb5_free_data_contents(NULL, &val->enc_part.ciphertext);
727 val->server = NULL;
738 asn1_decode_kdc_req(asn1buf *buf, krb5_kdc_req *val)
741 val->padata = NULL;
746 get_field(val->msg_type,2,asn1_decode_msgtype);
747 opt_field(val->padata,3,asn1_decode_sequence_of_pa_data,NULL);
748 get_field(*val,4,asn1_decode_kdc_req_body);
750 val->magic = KV5M_KDC_REQ;
754 krb5_free_pa_data(NULL, val->padata);
755 val->padata = NULL;
760 asn1_decode_kdc_req_body(asn1buf *buf, krb5_kdc_req *val)
763 val->client = NULL;
764 val->server = NULL;
765 val->ktype = NULL;
766 val->addresses = NULL;
767 val->authorization_data.ciphertext.data = NULL;
768 val->unenc_authdata = NULL;
769 val->second_ticket = NULL;
773 get_field(val->kdc_options,0,asn1_decode_kdc_options);
774 if (tagnum == 1) { alloc_principal(val->client); }
775 opt_field(val->client,1,asn1_decode_principal_name,NULL);
776 alloc_principal(val->server);
777 get_field(val->server,2,asn1_decode_realm);
778 if (val->client != NULL) {
779 retval = asn1_krb5_realm_copy(val->client,val->server);
784 psave = val->server;
785 opt_field(val->server,3,asn1_decode_principal_name,NULL);
786 if (val->server == NULL) {
794 opt_field(val->from,4,asn1_decode_kerberos_time,0);
795 get_field(val->till,5,asn1_decode_kerberos_time);
796 opt_field(val->rtime,6,asn1_decode_kerberos_time,0);
797 get_field(val->nonce,7,asn1_decode_int32);
798 get_lenfield(val->nktypes,val->ktype,8,asn1_decode_sequence_of_enctype);
799 opt_field(val->addresses,9,asn1_decode_host_addresses,0);
801 get_field(val->authorization_data,10,asn1_decode_encrypted_data); }
803 val->authorization_data.magic = KV5M_ENC_DATA;
804 val->authorization_data.enctype = 0;
805 val->authorization_data.kvno = 0;
806 val->authorization_data.ciphertext.data = NULL;
807 val->authorization_data.ciphertext.length = 0;
809 opt_field(val->second_ticket,11,asn1_decode_sequence_of_ticket,NULL);
811 val->magic = KV5M_KDC_REQ;
815 krb5_free_principal(NULL, val->client);
816 krb5_free_principal(NULL, val->server);
817 free(val->ktype);
818 krb5_free_addresses(NULL, val->addresses);
819 krb5_free_data_contents(NULL, &val->authorization_data.ciphertext);
820 krb5_free_tickets(NULL, val->second_ticket);
821 val->client = NULL;
822 val->server = NULL;
823 val->ktype = NULL;
824 val->addresses = NULL;
825 val->unenc_authdata = NULL;
826 val->second_ticket = NULL;
831 asn1_decode_krb_safe_body(asn1buf *buf, krb5_safe *val)
834 val->user_data.data = NULL;
835 val->r_address = NULL;
836 val->s_address = NULL;
837 val->checksum = NULL;
839 get_lenfield(val->user_data.length,val->user_data.data,0,asn1_decode_charstring);
840 opt_field(val->timestamp,1,asn1_decode_kerberos_time,0);
841 opt_field(val->usec,2,asn1_decode_int32,0);
842 opt_field(val->seq_number,3,asn1_decode_seqnum,0);
843 get_field(val->s_address,4,asn1_decode_host_address_ptr);
845 get_field(val->r_address,5,asn1_decode_host_address_ptr);
848 val->magic = KV5M_SAFE;
852 krb5_free_data_contents(NULL, &val->user_data);
853 krb5_free_address(NULL, val->r_address);
854 krb5_free_address(NULL, val->s_address);
855 val->r_address = NULL;
856 val->s_address = NULL;
861 asn1_decode_host_address(asn1buf *buf, krb5_address *val)
864 val->contents = NULL;
866 get_field(val->addrtype,0,asn1_decode_addrtype);
867 get_lenfield(val->length,val->contents,1,asn1_decode_octetstring);
869 val->magic = KV5M_ADDRESS;
873 free(val->contents);
874 val->contents = NULL;
885 asn1_decode_kdc_rep(asn1buf *buf, krb5_kdc_rep *val)
888 val->padata = NULL;
889 val->client = NULL;
890 val->ticket = NULL;
891 val->enc_part.ciphertext.data = NULL;
892 val->enc_part2 = NULL;
897 get_field(val->msg_type,1,asn1_decode_msgtype);
898 opt_field(val->padata,2,asn1_decode_sequence_of_pa_data,NULL);
899 alloc_principal(val->client);
900 get_field(val->client,3,asn1_decode_realm);
901 get_field(val->client,4,asn1_decode_principal_name);
902 get_field(val->ticket,5,asn1_decode_ticket_ptr);
903 get_field(val->enc_part,6,asn1_decode_encrypted_data);
905 val->magic = KV5M_KDC_REP;
909 krb5_free_pa_data(NULL, val->padata);
910 krb5_free_principal(NULL, val->client);
911 krb5_free_ticket(NULL, val->ticket);
912 krb5_free_data_contents(NULL, &val->enc_part.ciphertext);
913 val->padata = NULL;
914 val->client = NULL;
915 val->ticket = NULL;
916 val->enc_part.ciphertext.data = NULL;
960 array = *val = NULL; \
977 *val = array; \
989 free_authdata_elt(void *dummy, krb5_authdata *val)
991 free(val->contents);
992 free(val);
996 asn1_decode_authorization_data(asn1buf *buf, krb5_authdata ***val)
1003 asn1_decode_authdata_elt(asn1buf *buf, krb5_authdata *val)
1006 val->contents = NULL;
1008 get_field(val->ad_type,0,asn1_decode_authdatatype);
1009 get_lenfield(val->length,val->contents,1,asn1_decode_octetstring);
1011 val->magic = KV5M_AUTHDATA;
1015 free(val->contents);
1016 val->contents = NULL;
1021 asn1_peek_authdata_elt(asn1buf *buf, krb5_authdatatype *val)
1024 *val = 0;
1026 get_field(*val, 0, asn1_decode_authdatatype);
1036 krb5_authdatatype **val)
1054 *val = array;
1068 asn1_decode_host_addresses(asn1buf *buf, krb5_address ***val)
1075 asn1_decode_sequence_of_ticket(asn1buf *buf, krb5_ticket ***val)
1081 free_cred_info(void *dummy, krb5_cred_info *val)
1083 krb5_free_keyblock(NULL, val->session);
1084 krb5_free_principal(NULL, val->client);
1085 krb5_free_principal(NULL, val->server);
1086 krb5_free_addresses(NULL, val->caddrs);
1087 free(val);
1091 asn1_decode_sequence_of_krb_cred_info(asn1buf *buf, krb5_cred_info ***val)
1098 asn1_decode_krb_cred_info(asn1buf *buf, krb5_cred_info *val)
1101 val->session = NULL;
1102 val->client = NULL;
1103 val->server = NULL;
1104 val->caddrs = NULL;
1106 get_field(val->session,0,asn1_decode_encryption_key_ptr);
1108 alloc_principal(val->client);
1109 opt_field(val->client,1,asn1_decode_realm,NULL);
1110 opt_field(val->client,2,asn1_decode_principal_name,NULL); }
1111 opt_field(val->flags,3,asn1_decode_ticket_flags,0);
1112 opt_field(val->times.authtime,4,asn1_decode_kerberos_time,0);
1113 opt_field(val->times.starttime,5,asn1_decode_kerberos_time,0);
1114 opt_field(val->times.endtime,6,asn1_decode_kerberos_time,0);
1115 opt_field(val->times.renew_till,7,asn1_decode_kerberos_time,0);
1117 alloc_principal(val->server);
1118 opt_field(val->server,8,asn1_decode_realm,NULL);
1119 opt_field(val->server,9,asn1_decode_principal_name,NULL); }
1120 opt_field(val->caddrs,10,asn1_decode_host_addresses,NULL);
1122 val->magic = KV5M_CRED_INFO;
1126 krb5_free_keyblock(NULL, val->session);
1127 krb5_free_principal(NULL, val->client);
1128 krb5_free_principal(NULL, val->server);
1129 krb5_free_addresses(NULL, val->caddrs);
1130 val->session = NULL;
1131 val->client = NULL;
1132 val->server = NULL;
1133 val->caddrs = NULL;
1144 free_pa_data(void *dummy, krb5_pa_data *val)
1146 free(val->contents);
1147 free(val);
1151 asn1_decode_sequence_of_pa_data(asn1buf *buf, krb5_pa_data ***val)
1157 asn1_decode_pa_data(asn1buf *buf, krb5_pa_data *val)
1160 val->contents = NULL;
1162 get_field(val->pa_type,1,asn1_decode_int32);
1163 get_lenfield(val->length,val->contents,2,asn1_decode_octetstring);
1165 val->magic = KV5M_PA_DATA;
1169 free(val->contents);
1170 val->contents = NULL;
1181 free_last_req_entry(void *dummy, krb5_last_req_entry *val)
1183 free(val);
1187 asn1_decode_last_req(asn1buf *buf, krb5_last_req_entry ***val)
1194 asn1_decode_last_req_entry(asn1buf *buf, krb5_last_req_entry *val)
1198 get_field(val->lr_type,0,asn1_decode_int32);
1199 get_field(val->value,1,asn1_decode_kerberos_time);
1201 val->magic = KV5M_LAST_REQ_ENTRY;
1205 if ((val->lr_type & 0xffffff80U) == 0x80) val->lr_type |= 0xffffff00U;
1220 asn1_decode_sequence_of_enctype(asn1buf *buf, int *num, krb5_enctype **val)
1238 *val = array;
1246 asn1_decode_sequence_of_checksum(asn1buf *buf, krb5_checksum ***val)
1253 free_etype_info_entry(void *dummy, krb5_etype_info_entry *val)
1255 krb5_free_data_contents(NULL, &val->s2kparams);
1256 free(val->salt);
1257 free(val);
1261 asn1_decode_etype_info2_entry(asn1buf *buf, krb5_etype_info_entry *val)
1266 val->salt = NULL;
1267 val->s2kparams.data = NULL;
1269 get_field(val->etype,0,asn1_decode_enctype);
1271 get_lenfield(val->length,salt,1,asn1_decode_generalstring);
1272 val->salt = (krb5_octet *) salt;
1275 val->length = KRB5_ETYPE_NO_SALT;
1277 get_lenfield( val->s2kparams.length, params,
1279 val->s2kparams.data = ( char *) params;
1282 val->s2kparams.length = 0;
1284 val->magic = KV5M_ETYPE_INFO_ENTRY;
1290 krb5_free_data_contents(NULL, &val->s2kparams);
1291 free(val->salt);
1292 val->salt = NULL;
1303 asn1_decode_etype_info2_entry_1_3(asn1buf *buf, krb5_etype_info_entry *val)
1308 val->salt = NULL;
1309 val->s2kparams.data = NULL;
1311 get_field(val->etype,0,asn1_decode_enctype);
1313 get_lenfield(val->length,val->salt,1,asn1_decode_octetstring);
1315 val->length = KRB5_ETYPE_NO_SALT;
1317 get_lenfield( val->s2kparams.length, params,
1319 val->s2kparams.data = ( char *) params;
1322 val->s2kparams.length = 0;
1324 val->magic = KV5M_ETYPE_INFO_ENTRY;
1328 krb5_free_data_contents(NULL, &val->s2kparams);
1330 free(val->salt);
1331 val->salt = NULL;
1343 asn1_decode_etype_info_entry(asn1buf *buf, krb5_etype_info_entry *val)
1346 val->salt = NULL;
1347 val->s2kparams.data = NULL;
1349 get_field(val->etype,0,asn1_decode_enctype);
1351 get_lenfield(val->length,val->salt,1,asn1_decode_octetstring);
1353 val->length = KRB5_ETYPE_NO_SALT;
1354 val->s2kparams.length = 0;
1357 val->magic = KV5M_ETYPE_INFO_ENTRY;
1361 free(val->salt);
1362 val->salt = NULL;
1373 asn1_decode_etype_info(asn1buf *buf, krb5_etype_info_entry ***val )
1380 decode_etype_info2_13(asn1buf *buf, krb5_etype_info_entry ***val)
1388 asn1_decode_etype_info2(asn1buf *buf, krb5_etype_info_entry ***val ,
1392 return decode_etype_info2_13(buf, val);
1401 asn1_decode_passwdsequence(asn1buf *buf, passwd_phrase_element *val)
1404 val->passwd = NULL;
1405 val->phrase = NULL;
1407 alloc_data(val->passwd);
1408 get_lenfield(val->passwd->length,val->passwd->data,
1410 val->passwd->magic = KV5M_DATA;
1411 alloc_data(val->phrase);
1412 get_lenfield(val->phrase->length,val->phrase->data,
1414 val->phrase->magic = KV5M_DATA;
1416 val->magic = KV5M_PASSWD_PHRASE_ELEMENT;
1420 krb5_free_data(NULL, val->passwd);
1421 krb5_free_data(NULL, val->phrase);
1422 val->passwd = NULL;
1423 val->phrase = NULL;
1435 passwd_phrase_element ***val)
1442 asn1_decode_sam_flags(asn1buf *buf, krb5_flags *val)
1444 return asn1_decode_krb5_flags(buf,val);
1447 #define opt_string(val,n,fn) opt_lenfield((val).length,(val).data,n,fn)
1454 asn1_decode_sam_challenge(asn1buf *buf, krb5_sam_challenge *val)
1457 val->sam_type_name.data = NULL;
1458 val->sam_track_id.data = NULL;
1459 val->sam_challenge_label.data = NULL;
1460 val->sam_response_prompt.data = NULL;
1461 val->sam_pk_for_sad.data = NULL;
1462 val->sam_cksum.contents = NULL;
1464 get_field(val->sam_type,0,asn1_decode_int32);
1465 get_field(val->sam_flags,1,asn1_decode_sam_flags);
1466 opt_string(val->sam_type_name,2,asn1_decode_charstring);
1467 opt_string(val->sam_track_id,3,asn1_decode_charstring);
1468 opt_string(val->sam_challenge_label,4,asn1_decode_charstring);
1469 opt_string(val->sam_challenge,5,asn1_decode_charstring);
1470 opt_string(val->sam_response_prompt,6,asn1_decode_charstring);
1471 opt_string(val->sam_pk_for_sad,7,asn1_decode_charstring);
1472 opt_field(val->sam_nonce,8,asn1_decode_int32,0);
1473 opt_cksum(val->sam_cksum,9,asn1_decode_checksum);
1475 val->magic = KV5M_SAM_CHALLENGE;
1479 krb5_free_sam_challenge_contents(NULL, val);
1483 asn1_decode_sam_challenge_2(asn1buf *buf, krb5_sam_challenge_2 *val)
1487 val->sam_challenge_2_body.data = NULL;
1488 val->sam_cksum = NULL;
1501 val->sam_challenge_2_body.data = malloc(alloclen);
1502 if (!val->sam_challenge_2_body.data)
1504 val->sam_challenge_2_body.length = alloclen;
1505 memcpy(val->sam_challenge_2_body.data, save, alloclen);
1507 get_field(val->sam_cksum, 1, asn1_decode_sequence_of_checksum);
1512 krb5_free_data_contents(NULL, &val->sam_challenge_2_body);
1513 if (val->sam_cksum) {
1514 for (cksump = val->sam_cksum; *cksump; cksump++)
1516 free(val->sam_cksum);
1517 val->sam_cksum = NULL;
1522 asn1_decode_sam_challenge_2_body(asn1buf *buf, krb5_sam_challenge_2_body *val)
1525 val->sam_type_name.data = NULL;
1526 val->sam_track_id.data = NULL;
1527 val->sam_challenge_label.data = NULL;
1528 val->sam_challenge.data = NULL;
1529 val->sam_response_prompt.data = NULL;
1530 val->sam_pk_for_sad.data = NULL;
1532 get_field(val->sam_type,0,asn1_decode_int32);
1533 get_field(val->sam_flags,1,asn1_decode_sam_flags);
1534 opt_string(val->sam_type_name,2,asn1_decode_charstring);
1535 opt_string(val->sam_track_id,3,asn1_decode_charstring);
1536 opt_string(val->sam_challenge_label,4,asn1_decode_charstring);
1537 opt_string(val->sam_challenge,5,asn1_decode_charstring);
1538 opt_string(val->sam_response_prompt,6,asn1_decode_charstring);
1539 opt_string(val->sam_pk_for_sad,7,asn1_decode_charstring);
1540 get_field(val->sam_nonce,8,asn1_decode_int32);
1541 get_field(val->sam_etype, 9, asn1_decode_int32);
1543 val->magic = KV5M_SAM_CHALLENGE;
1547 krb5_free_sam_challenge_2_body_contents(NULL, val);
1551 asn1_decode_enc_sam_key(asn1buf *buf, krb5_sam_key *val)
1554 val->sam_key.contents = NULL;
1556 get_field(val->sam_key,0,asn1_decode_encryption_key);
1558 val->magic = KV5M_SAM_KEY;
1562 krb5_free_keyblock_contents(NULL, &val->sam_key);
1567 asn1_decode_enc_sam_response_enc(asn1buf *buf, krb5_enc_sam_response_enc *val)
1570 val->sam_sad.data = NULL;
1572 opt_field(val->sam_nonce,0,asn1_decode_int32,0);
1573 opt_field(val->sam_timestamp,1,asn1_decode_kerberos_time,0);
1574 opt_field(val->sam_usec,2,asn1_decode_int32,0);
1575 opt_string(val->sam_sad,3,asn1_decode_charstring);
1577 val->magic = KV5M_ENC_SAM_RESPONSE_ENC;
1581 krb5_free_enc_sam_response_enc_contents(NULL, val);
1586 asn1_decode_enc_sam_response_enc_2(asn1buf *buf, krb5_enc_sam_response_enc_2 *val)
1589 val->sam_sad.data = NULL;
1591 get_field(val->sam_nonce,0,asn1_decode_int32);
1592 opt_string(val->sam_sad,1,asn1_decode_charstring);
1594 val->magic = KV5M_ENC_SAM_RESPONSE_ENC_2;
1598 krb5_free_enc_sam_response_enc_2_contents(NULL, val);
1614 asn1_decode_sam_response(asn1buf *buf, krb5_sam_response *val)
1617 val->sam_track_id.data = NULL;
1618 val->sam_enc_key.ciphertext.data = NULL;
1619 val->sam_enc_nonce_or_ts.ciphertext.data = NULL;
1621 get_field(val->sam_type,0,asn1_decode_int32);
1622 get_field(val->sam_flags,1,asn1_decode_sam_flags);
1623 opt_string(val->sam_track_id,2,asn1_decode_charstring);
1624 opt_encfield(val->sam_enc_key,3,asn1_decode_encrypted_data);
1625 get_field(val->sam_enc_nonce_or_ts,4,asn1_decode_encrypted_data);
1626 opt_field(val->sam_nonce,5,asn1_decode_int32,0);
1627 opt_field(val->sam_patimestamp,6,asn1_decode_kerberos_time,0);
1629 val->magic = KV5M_SAM_RESPONSE;
1633 krb5_free_sam_response_contents(NULL, val);
1638 asn1_decode_sam_response_2(asn1buf *buf, krb5_sam_response_2 *val)
1641 val->sam_track_id.data = NULL;
1642 val->sam_enc_nonce_or_sad.ciphertext.data = NULL;
1644 get_field(val->sam_type,0,asn1_decode_int32);
1645 get_field(val->sam_flags,1,asn1_decode_sam_flags);
1646 opt_string(val->sam_track_id,2,asn1_decode_charstring);
1647 get_field(val->sam_enc_nonce_or_sad,3,asn1_decode_encrypted_data);
1648 get_field(val->sam_nonce,4,asn1_decode_int32);
1650 val->magic = KV5M_SAM_RESPONSE;
1654 krb5_free_sam_response_2_contents(NULL, val);
1661 krb5_predicted_sam_response *val)
1664 val->sam_key.contents = NULL;
1665 val->client = NULL;
1666 val->msd.data = NULL;
1668 get_field(val->sam_key,0,asn1_decode_encryption_key);
1669 get_field(val->sam_flags,1,asn1_decode_sam_flags);
1670 get_field(val->stime,2,asn1_decode_kerberos_time);
1671 get_field(val->susec,3,asn1_decode_int32);
1672 alloc_principal(val->client);
1673 get_field(val->client,4,asn1_decode_realm);
1674 get_field(val->client,5,asn1_decode_principal_name);
1675 opt_string(val->msd,6,asn1_decode_charstring); /* should be octet */
1677 val->magic = KV5M_PREDICTED_SAM_RESPONSE;
1681 krb5_free_predicted_sam_response_contents(NULL, val);
1712 asn1_decode_pa_for_user(asn1buf *buf, krb5_pa_for_user *val)
1715 val->user = NULL;
1716 val->cksum.contents = NULL;
1717 val->auth_package.data = NULL;
1719 alloc_principal(val->user);
1720 get_field(val->user,0,asn1_decode_principal_name);
1721 get_field(val->user,1,asn1_decode_realm);
1722 get_field(val->cksum,2,asn1_decode_checksum);
1723 get_lenfield(val->auth_package.length,val->auth_package.data,3,asn1_decode_generalstring);
1728 krb5_free_principal(NULL, val->user);
1729 krb5_free_checksum_contents(NULL, &val->cksum);
1730 krb5_free_data_contents(NULL, &val->auth_package);
1731 val->user = NULL;
1736 asn1_decode_s4u_userid(asn1buf *buf, krb5_s4u_userid *val)
1739 val->nonce = 0;
1740 val->user = NULL;
1741 val->subject_cert.data = NULL;
1742 val->options = 0;
1744 get_field(val->nonce,0,asn1_decode_int32);
1745 alloc_principal(val->user);
1746 opt_field(val->user,1,asn1_decode_principal_name,0);
1747 get_field(val->user,2,asn1_decode_realm);
1748 opt_lenfield(val->subject_cert.length,val->subject_cert.data,3,asn1_decode_charstring);
1749 opt_field(val->options,4,asn1_decode_krb5_flags,0);
1754 krb5_free_principal(NULL, val->user);
1755 krb5_free_data_contents(NULL, &val->subject_cert);
1756 val->user = NULL;
1757 val->subject_cert.data = NULL;
1762 asn1_decode_pa_s4u_x509_user(asn1buf *buf, krb5_pa_s4u_x509_user *val)
1765 val->cksum.contents = NULL;
1767 get_field(val->user_id,0,asn1_decode_s4u_userid);
1768 get_field(val->cksum,1,asn1_decode_checksum);
1773 krb5_free_s4u_userid_contents(NULL, &val->user_id);
1774 krb5_free_checksum_contents(NULL, &val->cksum);
1779 asn1_decode_pa_pac_req(asn1buf *buf, krb5_pa_pac_req *val)
1783 get_field(val->include_pac,0,asn1_decode_boolean);
1792 asn1_decode_fast_armor(asn1buf *buf, krb5_fast_armor *val)
1795 val->armor_value.data = NULL;
1797 get_field(val->armor_type, 0, asn1_decode_int32);
1798 get_lenfield(val->armor_value.length, val->armor_value.data,
1804 krb5_free_data_contents( NULL, &val->armor_value);
1815 asn1_decode_fast_finished(asn1buf *buf, krb5_fast_finished *val)
1818 val->client = NULL;
1819 val->ticket_checksum.contents = NULL;
1821 get_field(val->timestamp, 0, asn1_decode_kerberos_time);
1822 get_field(val->usec, 1, asn1_decode_int32);
1823 alloc_field(val->client);
1824 get_field(val->client, 2, asn1_decode_realm);
1825 get_field(val->client, 3, asn1_decode_principal_name);
1826 get_field(val->ticket_checksum, 4, asn1_decode_checksum);
1831 krb5_free_principal(NULL, val->client);
1832 krb5_free_checksum_contents( NULL, &val->ticket_checksum);
1842 asn1_decode_ad_kdcissued(asn1buf *buf, krb5_ad_kdcissued *val)
1845 val->ad_checksum.contents = NULL;
1846 val->i_principal = NULL;
1847 val->elements = NULL;
1849 get_field(val->ad_checksum, 0, asn1_decode_checksum);
1851 alloc_principal(val->i_principal);
1852 opt_field(val->i_principal, 1, asn1_decode_realm, 0);
1853 opt_field(val->i_principal, 2, asn1_decode_principal_name, 0);
1855 get_field(val->elements, 3, asn1_decode_authorization_data);
1860 krb5_free_checksum_contents(NULL, &val->ad_checksum);
1861 krb5_free_principal(NULL, val->i_principal);
1862 krb5_free_authdata(NULL, val->elements);
1884 asn1_decode_sequence_of_princ_plus_realm(asn1buf *buf, krb5_principal **val)
1890 asn1_decode_ad_signedpath(asn1buf *buf, krb5_ad_signedpath *val)
1893 val->enctype = ENCTYPE_NULL;
1894 val->checksum.contents = NULL;
1895 val->delegated = NULL;
1898 get_field(val->enctype, 0, asn1_decode_enctype);
1899 get_field(val->checksum, 1, asn1_decode_checksum);
1900 opt_field(val->delegated, 2, asn1_decode_sequence_of_princ_plus_realm,
1902 opt_field(val->method_data, 3, asn1_decode_sequence_of_pa_data, NULL);
1907 krb5_free_checksum_contents(NULL, &val->checksum);
1917 krb5_external_principal_identifier *val)
1920 val->subjectName.data = NULL;
1921 val->issuerAndSerialNumber.data = NULL;
1922 val->subjectKeyIdentifier.data = NULL;
1925 opt_implicit_octet_string(val->subjectName.length, val->subjectName.data, 0);
1926 opt_implicit_octet_string(val->issuerAndSerialNumber.length, val->issuerAndSerialNumber.data, 1);
1927 opt_implicit_octet_string(val->subjectKeyIdentifier.length, val->subjectKeyIdentifier.data, 2);
1932 free(val->subjectName.data);
1933 free(val->issuerAndSerialNumber.data);
1934 free(val->subjectKeyIdentifier.data);
1935 val->subjectName.data = NULL;
1936 val->issuerAndSerialNumber.data = NULL;
1937 val->subjectKeyIdentifier.data = NULL;
1952 krb5_external_principal_identifier *val)
1954 free(val->subjectName.data);
1955 free(val->issuerAndSerialNumber.data);
1956 free(val->subjectKeyIdentifier.data);
1957 free(val);
1963 krb5_external_principal_identifier ***val)
1971 asn1_decode_pa_pk_as_req(asn1buf *buf, krb5_pa_pk_as_req *val)
1974 val->signedAuthPack.data = NULL;
1975 val->trustedCertifiers = NULL;
1976 val->kdcPkId.data = NULL;
1979 get_implicit_octet_string(val->signedAuthPack.length, val->signedAuthPack.data, 0);
1980 opt_field(val->trustedCertifiers, 1, asn1_decode_sequence_of_external_principal_identifier, NULL);
1981 opt_implicit_octet_string(val->kdcPkId.length, val->kdcPkId.data, 2);
1986 free(val->signedAuthPack.data);
1987 free(val->trustedCertifiers);
1988 free(val->kdcPkId.data);
1989 val->signedAuthPack.data = NULL;
1990 val->trustedCertifiers = NULL;
1991 val->kdcPkId.data = NULL;
1997 asn1_decode_trusted_ca(asn1buf *buf, krb5_trusted_ca *val)
2000 val->choice = choice_trusted_cas_UNKNOWN;
2007 val->choice = choice_trusted_cas_principalName;
2009 val->choice = choice_trusted_cas_caName;
2010 val->u.caName.data = NULL;
2019 val->u.caName.data = malloc(alloclen);
2020 if (val->u.caName.data == NULL)
2022 memcpy(val->u.caName.data, start, alloclen);
2023 val->u.caName.length = alloclen;
2026 val->choice = choice_trusted_cas_issuerAndSerial;
2027 val->u.issuerAndSerial.data = NULL;
2036 val->u.issuerAndSerial.data = malloc(alloclen);
2037 if (val->u.issuerAndSerial.data == NULL)
2039 memcpy(val->u.issuerAndSerial.data, start, alloclen);
2040 val->u.issuerAndSerial.length = alloclen;
2047 if (val->choice == choice_trusted_cas_caName)
2048 free(val->u.caName.data);
2049 else if (val->choice == choice_trusted_cas_issuerAndSerial)
2050 free(val->u.issuerAndSerial.data);
2051 val->choice = choice_trusted_cas_UNKNOWN;
2056 asn1_decode_trusted_ca(asn1buf *buf, krb5_trusted_ca *val)
2059 val->choice = choice_trusted_cas_UNKNOWN;
2062 val->choice = choice_trusted_cas_principalName;
2063 val->u.principalName = NULL;
2064 asn1_decode_krb5_principal_name(&subbuf, &(val->u.principalName));
2066 val->choice = choice_trusted_cas_caName;
2067 val->u.caName.data = NULL;
2068 get_implicit_octet_string(val->u.caName.length, val->u.caName.data, choice_trusted_cas_caName);
2070 val->choice = choice_trusted_cas_issuerAndSerial;
2071 val->u.issuerAndSerial.data = NULL;
2072 get_implicit_octet_string(val->u.issuerAndSerial.length, val->u.issuerAndSerial.data,
2079 if (val->choice == choice_trusted_cas_caName)
2080 free(val->u.caName.data);
2081 else if (val->choice == choice_trusted_cas_issuerAndSerial)
2082 free(val->u.issuerAndSerial.data);
2083 val->choice = choice_trusted_cas_UNKNOWN;
2095 free_trusted_ca(void *dummy, krb5_trusted_ca *val)
2097 if (val->choice == choice_trusted_cas_caName)
2098 free(val->u.caName.data);
2099 else if (val->choice == choice_trusted_cas_issuerAndSerial)
2100 free(val->u.issuerAndSerial.data);
2101 free(val);
2105 asn1_decode_sequence_of_trusted_ca(asn1buf *buf, krb5_trusted_ca ***val)
2112 asn1_decode_pa_pk_as_req_draft9(asn1buf *buf, krb5_pa_pk_as_req_draft9 *val)
2116 val->signedAuthPack.data = NULL;
2117 val->kdcCert.data = NULL;
2118 val->encryptionCert.data = NULL;
2119 val->trustedCertifiers = NULL;
2121 get_implicit_octet_string(val->signedAuthPack.length, val->signedAuthPack.data, 0);
2122 opt_field(val->trustedCertifiers, 1, asn1_decode_sequence_of_trusted_ca, NULL);
2123 opt_lenfield(val->kdcCert.length, val->kdcCert.data, 2, asn1_decode_octetstring);
2124 opt_lenfield(val->encryptionCert.length, val->encryptionCert.data, 2, asn1_decode_octetstring);
2129 free(val->signedAuthPack.data);
2130 free(val->kdcCert.data);
2131 free(val->encryptionCert.data);
2132 if (val->trustedCertifiers) {
2133 for (i = 0; val->trustedCertifiers[i]; i++)
2134 free_trusted_ca(NULL, val->trustedCertifiers[i]);
2135 free(val->trustedCertifiers);
2137 val->signedAuthPack.data = NULL;
2138 val->kdcCert.data = NULL;
2139 val->encryptionCert.data = NULL;
2140 val->trustedCertifiers = NULL;
2145 asn1_decode_dh_rep_info(asn1buf *buf, krb5_dh_rep_info *val)
2148 val->dhSignedData.data = NULL;
2149 val->serverDHNonce.data = NULL;
2151 get_implicit_octet_string(val->dhSignedData.length, val->dhSignedData.data, 0);
2153 opt_lenfield(val->serverDHNonce.length, val->serverDHNonce.data, 1, asn1_decode_octetstring);
2158 free(val->dhSignedData.data);
2159 free(val->serverDHNonce.data);
2160 val->dhSignedData.data = NULL;
2161 val->serverDHNonce.data = NULL;
2166 asn1_decode_pk_authenticator(asn1buf *buf, krb5_pk_authenticator *val)
2169 val->paChecksum.contents = NULL;
2171 get_field(val->cusec, 0, asn1_decode_int32);
2172 get_field(val->ctime, 1, asn1_decode_kerberos_time);
2173 get_field(val->nonce, 2, asn1_decode_int32);
2174 opt_lenfield(val->paChecksum.length, val->paChecksum.contents, 3, asn1_decode_octetstring);
2179 krb5_free_checksum_contents(NULL, &val->paChecksum);
2185 krb5_pk_authenticator_draft9 *val)
2188 val->kdcName = NULL;
2189 val->kdcRealm.data = NULL;
2191 alloc_principal(val->kdcName);
2192 get_field(val->kdcName, 0, asn1_decode_principal_name);
2193 get_field(val->kdcName, 1, asn1_decode_realm);
2194 get_field(val->cusec, 2, asn1_decode_int32);
2195 get_field(val->ctime, 3, asn1_decode_kerberos_time);
2196 get_field(val->nonce, 4, asn1_decode_int32);
2201 krb5_free_principal(NULL, val->kdcName);
2206 asn1_decode_algorithm_identifier(asn1buf *buf, krb5_algorithm_identifier *val)
2209 val->algorithm.data = NULL;
2210 val->parameters.data = NULL;
2228 retval = asn1_decode_oid(&subbuf, &val->algorithm.length,
2229 &val->algorithm.data);
2231 val->parameters.length = 0;
2232 val->parameters.data = NULL;
2238 &val->parameters.data);
2240 val->parameters.length = size;
2247 free(val->algorithm.data);
2248 free(val->parameters.data);
2249 val->algorithm.data = NULL;
2250 val->parameters.data = NULL;
2262 asn1_decode_subject_pk_info(asn1buf *buf, krb5_subject_pk_info *val)
2266 val->algorithm.algorithm.data = NULL;
2267 val->algorithm.parameters.data = NULL;
2268 val->subjectPublicKey.data = NULL;
2271 retval = asn1_decode_algorithm_identifier(&subbuf, &val->algorithm);
2288 val->subjectPublicKey.length = 0;
2289 val->subjectPublicKey.data = NULL;
2291 &val->subjectPublicKey.data);
2293 val->subjectPublicKey.length = taglen;
2303 free(val->algorithm.algorithm.data);
2304 free(val->algorithm.parameters.data);
2305 free(val->subjectPublicKey.data);
2306 val->algorithm.algorithm.data = NULL;
2307 val->algorithm.parameters.data = NULL;
2308 val->subjectPublicKey.data = NULL;
2313 free_algorithm_identifier(void *dummy, krb5_algorithm_identifier *val)
2315 free(val->algorithm.data);
2316 free(val->parameters.data);
2317 free(val);
2322 krb5_algorithm_identifier ***val)
2330 asn1_decode_kdc_dh_key_info(asn1buf *buf, krb5_kdc_dh_key_info *val)
2333 val->subjectPublicKey.data = NULL;
2335 retval = asn1buf_remove_octetstring(&subbuf, taglen, &val->subjectPublicKey.data);
2337 val->subjectPublicKey.length = taglen;
2339 get_field(val->nonce, 1, asn1_decode_int32);
2340 opt_field(val->dhKeyExpiration, 2, asn1_decode_kerberos_time, 0);
2345 free(val->subjectPublicKey.data);
2346 val->subjectPublicKey.data = NULL;
2351 asn1_decode_reply_key_pack (asn1buf *buf, krb5_reply_key_pack *val)
2354 val->replyKey.contents = NULL;
2355 val->asChecksum.contents = NULL;
2357 get_field(val->replyKey, 0, asn1_decode_encryption_key);
2358 get_field(val->asChecksum, 1, asn1_decode_checksum);
2363 free(val->replyKey.contents);
2364 free(val->asChecksum.contents);
2365 val->replyKey.contents = NULL;
2366 val->asChecksum.contents = NULL;
2372 krb5_reply_key_pack_draft9 *val)
2375 val->replyKey.contents = NULL;
2377 get_field(val->replyKey, 0, asn1_decode_encryption_key);
2378 get_field(val->nonce, 1, asn1_decode_int32);
2383 free(val->replyKey.contents);
2384 val->replyKey.contents = NULL;
2389 asn1_decode_krb5_principal_name (asn1buf *buf, krb5_principal *val)
2393 (*val)->realm.data = NULL;
2394 (*val)->data = NULL;
2396 get_field(*val, 0, asn1_decode_realm);
2397 get_field(*val, 1, asn1_decode_principal_name);
2402 krb5_free_data_contents(NULL, &(*val)->realm);
2403 if ((*val)->data) {
2404 for (i = 0; i < (*val)->length; i++)
2405 krb5_free_data_contents(NULL, &(*val)->data[i]);
2406 free((*val)->data);
2408 (*val)->realm.data = NULL;
2409 (*val)->data = NULL;
2414 asn1_decode_auth_pack(asn1buf *buf, krb5_auth_pack *val)
2418 val->clientPublicValue = NULL;
2419 val->pkAuthenticator.paChecksum.contents = NULL;
2420 val->supportedCMSTypes = NULL;
2421 val->clientDHNonce.data = NULL;
2423 get_field(val->pkAuthenticator, 0, asn1_decode_pk_authenticator);
2425 alloc_field(val->clientPublicValue);
2426 val->clientPublicValue->algorithm.algorithm.data = NULL;
2427 val->clientPublicValue->algorithm.parameters.data = NULL;
2428 val->clientPublicValue->subjectPublicKey.data = NULL;
2430 /* can't call opt_field because it does decoder(&subbuf, &(val)); */
2437 val->clientPublicValue);
2441 } else val->clientPublicValue = NULL;
2443 /* can't call opt_field because it does decoder(&subbuf, &(val)); */
2446 retval = asn1_decode_sequence_of_algorithm_identifier(&subbuf, &val->supportedCMSTypes);
2450 } else val->supportedCMSTypes = NULL;
2452 opt_lenfield(val->clientDHNonce.length, val->clientDHNonce.data, 3, asn1_decode_octetstring);
2457 if (val->clientPublicValue) {
2458 free(val->clientPublicValue->algorithm.algorithm.data);
2459 free(val->clientPublicValue->algorithm.parameters.data);
2460 free(val->clientPublicValue->subjectPublicKey.data);
2461 free(val->clientPublicValue);
2463 free(val->pkAuthenticator.paChecksum.contents);
2464 if (val->supportedCMSTypes) {
2465 for (i = 0; val->supportedCMSTypes[i]; i++)
2466 free_algorithm_identifier(NULL, val->supportedCMSTypes[i]);
2467 free(val->supportedCMSTypes);
2469 free(val->clientDHNonce.data);
2470 val->clientPublicValue = NULL;
2471 val->pkAuthenticator.paChecksum.contents = NULL;
2472 val->supportedCMSTypes = NULL;
2473 val->clientDHNonce.data = NULL;
2478 asn1_decode_auth_pack_draft9(asn1buf *buf, krb5_auth_pack_draft9 *val)
2481 val->pkAuthenticator.kdcName = NULL;
2482 val->clientPublicValue = NULL;
2484 get_field(val->pkAuthenticator, 0, asn1_decode_pk_authenticator_draft9);
2486 alloc_field(val->clientPublicValue);
2487 val->clientPublicValue->algorithm.algorithm.data = NULL;
2488 val->clientPublicValue->algorithm.parameters.data = NULL;
2489 val->clientPublicValue->subjectPublicKey.data = NULL;
2490 /* can't call opt_field because it does decoder(&subbuf, &(val)); */
2497 val->clientPublicValue);
2501 } else val->clientPublicValue = NULL;
2508 free(val->pkAuthenticator.kdcName);
2509 if (val->clientPublicValue) {
2510 free(val->clientPublicValue->algorithm.algorithm.data);
2511 free(val->clientPublicValue->algorithm.parameters.data);
2512 free(val->clientPublicValue->subjectPublicKey.data);
2513 free(val->clientPublicValue);
2515 val->pkAuthenticator.kdcName = NULL;
2516 val->clientPublicValue = NULL;
2521 asn1_decode_pa_pk_as_rep(asn1buf *buf, krb5_pa_pk_as_rep *val)
2524 val->choice = choice_pa_pk_as_rep_UNKNOWN;
2527 val->choice = choice_pa_pk_as_rep_dhInfo;
2528 val->u.dh_Info.dhSignedData.data = NULL;
2529 val->u.dh_Info.serverDHNonce.data = NULL;
2530 get_field_body(val->u.dh_Info, asn1_decode_dh_rep_info);
2532 val->choice = choice_pa_pk_as_rep_encKeyPack;
2533 val->u.encKeyPack.data = NULL;
2534 get_implicit_octet_string(val->u.encKeyPack.length, val->u.encKeyPack.data,
2537 val->choice = choice_pa_pk_as_rep_UNKNOWN;
2543 if (val->choice == choice_pa_pk_as_rep_dhInfo) {
2544 free(val->u.dh_Info.dhSignedData.data);
2545 free(val->u.dh_Info.serverDHNonce.data);
2546 } else if (val->choice == choice_pa_pk_as_rep_encKeyPack) {
2547 free(val->u.encKeyPack.data);
2549 val->choice = choice_pa_pk_as_rep_UNKNOWN;
2554 asn1_decode_pa_pk_as_rep_draft9(asn1buf *buf, krb5_pa_pk_as_rep_draft9 *val)
2557 val->choice = choice_pa_pk_as_rep_draft9_UNKNOWN;
2560 val->choice = choice_pa_pk_as_rep_draft9_dhSignedData;
2561 val->u.dhSignedData.data = NULL;
2562 get_lenfield(val->u.dhSignedData.length, val->u.dhSignedData.data,
2565 val->choice = choice_pa_pk_as_rep_draft9_encKeyPack;
2566 val->u.encKeyPack.data = NULL;
2567 get_lenfield(val->u.encKeyPack.length, val->u.encKeyPack.data,
2570 val->choice = choice_pa_pk_as_rep_draft9_UNKNOWN;
2576 if (val->choice == choice_pa_pk_as_rep_draft9_dhSignedData)
2577 free(val->u.dhSignedData.data);
2578 else if (val->choice == choice_pa_pk_as_rep_draft9_encKeyPack)
2579 free(val->u.encKeyPack.data);
2580 val->choice = choice_pa_pk_as_rep_draft9_UNKNOWN;
2586 static void free_typed_data(void *dummy, krb5_typed_data *val)
2588 free(val->data);
2589 free(val);
2593 asn1_decode_sequence_of_typed_data(asn1buf *buf, krb5_typed_data ***val)
2600 asn1_decode_typed_data(asn1buf *buf, krb5_typed_data *val)
2603 val->data = NULL;
2605 get_field(val->type,0,asn1_decode_int32);
2606 get_lenfield(val->length,val->data,1,asn1_decode_octetstring);
2611 free(val->data);
2612 val->data = NULL;