1 /* Generated from /home/lha/src/cvs/heimdal/lib/asn1/k5.asn1 */
11 #define BACK if (e) return e; p -= l; len -= l; ret += l
14 encode_Ticket(unsigned char *p, size_t len, const Ticket * data,
25 e = encode_EncryptedData(p, len, &(data)->enc_part, &l);
27 e = der_put_length_and_tag(p, len, ret, Der_CONTEXT, CONS, 3, &l);
34 e = encode_PrincipalName(p, len, &(data)->sname, &l);
36 e = der_put_length_and_tag(p, len, ret, Der_CONTEXT, CONS, 2, &l);
43 e = encode_Realm(p, len, &(data)->realm, &l);
45 e = der_put_length_and_tag(p, len, ret, Der_CONTEXT, CONS, 1, &l);
52 e = encode_integer(p, len, &(data)->tkt_vno, &l);
54 e = der_put_length_and_tag(p, len, ret, Der_CONTEXT, CONS, 0, &l);
58 e = der_put_length_and_tag(p, len, ret, UNIV, CONS, UT_Sequence, &l);
60 e = der_put_length_and_tag(p, len, ret, APPL, CONS, 1, &l);
66 #define FORW if(e) goto fail; p += l; len -= l; ret += l
69 decode_Ticket(const unsigned char *p, size_t len, Ticket * data,
72 size_t ret = 0, reallen;
76 memset(data, 0, sizeof(*data));
78 e = der_match_tag_and_length(p, len, APPL, CONS, 1, &reallen, &l);
82 if ((dce_fix = fix_dce(reallen, &len)) < 0)
83 return ASN1_BAD_FORMAT;
84 e = der_match_tag_and_length(p, len, UNIV, CONS, UT_Sequence,
89 if ((dce_fix = fix_dce(reallen, &len)) < 0)
90 return ASN1_BAD_FORMAT;
92 size_t newlen, oldlen;
94 e = der_match_tag(p, len, Der_CONTEXT, CONS, 0, &l);
101 e = der_get_length(p, len, &newlen, &l);
106 if ((dce_fix = fix_dce(newlen, &len)) < 0)
107 return ASN1_BAD_FORMAT;
108 e = decode_integer(p, len, &(data)->tkt_vno, &l);
111 e = der_match_tag_and_length(p, len,
117 len = oldlen - newlen;
122 size_t newlen, oldlen;
124 e = der_match_tag(p, len, Der_CONTEXT, CONS, 1, &l);
131 e = der_get_length(p, len, &newlen, &l);
136 if ((dce_fix = fix_dce(newlen, &len)) < 0)
137 return ASN1_BAD_FORMAT;
138 e = decode_Realm(p, len, &(data)->realm, &l);
141 e = der_match_tag_and_length(p, len,
147 len = oldlen - newlen;
152 size_t newlen, oldlen;
154 e = der_match_tag(p, len, Der_CONTEXT, CONS, 2, &l);
161 e = der_get_length(p, len, &newlen, &l);
166 if ((dce_fix = fix_dce(newlen, &len)) < 0)
167 return ASN1_BAD_FORMAT;
168 e = decode_PrincipalName(p, len, &(data)->sname, &l);
171 e = der_match_tag_and_length(p, len,
177 len = oldlen - newlen;
182 size_t newlen, oldlen;
184 e = der_match_tag(p, len, Der_CONTEXT, CONS, 3, &l);
191 e = der_get_length(p, len, &newlen, &l);
196 if ((dce_fix = fix_dce(newlen, &len)) < 0)
197 return ASN1_BAD_FORMAT;
198 e = decode_EncryptedData(p, len, &(data)->enc_part,
202 e = der_match_tag_and_length(p, len,
208 len = oldlen - newlen;
213 e = der_match_tag_and_length(p, len, (Der_class) 0,
214 (Der_type) 0, 0, &reallen, &l);
219 e = der_match_tag_and_length(p, len, (Der_class) 0, (Der_type) 0,
233 free_Ticket(Ticket * data)
235 free_Realm(&(data)->realm);
236 free_PrincipalName(&(data)->sname);
237 free_EncryptedData(&(data)->enc_part);
241 length_Ticket(const Ticket * data)
247 ret += length_integer(&(data)->tkt_vno);
248 ret += 1 + length_len(ret) + oldret;
253 ret += length_Realm(&(data)->realm);
254 ret += 1 + length_len(ret) + oldret;
259 ret += length_PrincipalName(&(data)->sname);
260 ret += 1 + length_len(ret) + oldret;
265 ret += length_EncryptedData(&(data)->enc_part);
266 ret += 1 + length_len(ret) + oldret;
268 ret += 1 + length_len(ret);
269 ret += 1 + length_len(ret);
274 copy_Ticket(const Ticket * from, Ticket * to)
276 *(&(to)->tkt_vno) = *(&(from)->tkt_vno);
277 if (copy_Realm(&(from)->realm, &(to)->realm))
279 if (copy_PrincipalName(&(from)->sname, &(to)->sname))
281 if (copy_EncryptedData(&(from)->enc_part, &(to)->enc_part))
286 /* Generated from /home/lha/src/cvs/heimdal/lib/asn1/k5.asn1 */
294 #include <asn1_err.h>
296 #define BACK if (e) return e; p -= l; len -= l; ret += l
299 encode_EncryptedData(unsigned char *p, size_t len, const EncryptedData * data,
310 e = encode_octet_string(p, len, &(data)->cipher, &l);
312 e = der_put_length_and_tag(p, len, ret, Der_CONTEXT, CONS, 2, &l);
319 e = encode_integer(p, len, (data)->kvno, &l);
321 e = der_put_length_and_tag(p, len, ret, Der_CONTEXT, CONS, 1, &l);
328 e = encode_ENCTYPE(p, len, &(data)->etype, &l);
330 e = der_put_length_and_tag(p, len, ret, Der_CONTEXT, CONS, 0, &l);
334 e = der_put_length_and_tag(p, len, ret, UNIV, CONS, UT_Sequence, &l);
340 #define FORW if(e) goto fail; p += l; len -= l; ret += l
343 decode_EncryptedData(const unsigned char *p, size_t len, EncryptedData * data,
346 size_t ret = 0, reallen;
350 memset(data, 0, sizeof(*data));
352 e = der_match_tag_and_length(p, len, UNIV, CONS, UT_Sequence, &reallen,
357 if ((dce_fix = fix_dce(reallen, &len)) < 0)
358 return ASN1_BAD_FORMAT;
360 size_t newlen, oldlen;
362 e = der_match_tag(p, len, Der_CONTEXT, CONS, 0, &l);
369 e = der_get_length(p, len, &newlen, &l);
374 if ((dce_fix = fix_dce(newlen, &len)) < 0)
375 return ASN1_BAD_FORMAT;
376 e = decode_ENCTYPE(p, len, &(data)->etype, &l);
379 e = der_match_tag_and_length(p, len, (Der_class) 0,
384 len = oldlen - newlen;
389 size_t newlen, oldlen;
391 e = der_match_tag(p, len, Der_CONTEXT, CONS, 1, &l);
398 e = der_get_length(p, len, &newlen, &l);
403 if ((dce_fix = fix_dce(newlen, &len)) < 0)
404 return ASN1_BAD_FORMAT;
405 (data)->kvno = malloc(sizeof(*(data)->kvno));
406 if ((data)->kvno == NULL)
408 e = decode_integer(p, len, (data)->kvno, &l);
411 e = der_match_tag_and_length(p, len, (Der_class) 0,
416 len = oldlen - newlen;
421 size_t newlen, oldlen;
423 e = der_match_tag(p, len, Der_CONTEXT, CONS, 2, &l);
430 e = der_get_length(p, len, &newlen, &l);
435 if ((dce_fix = fix_dce(newlen, &len)) < 0)
436 return ASN1_BAD_FORMAT;
437 e = decode_octet_string(p, len, &(data)->cipher, &l);
440 e = der_match_tag_and_length(p, len, (Der_class) 0,
445 len = oldlen - newlen;
450 e = der_match_tag_and_length(p, len, (Der_class) 0, (Der_type) 0,
459 free_EncryptedData(data);
464 free_EncryptedData(EncryptedData * data)
466 free_ENCTYPE(&(data)->etype);
470 free_octet_string(&(data)->cipher);
474 length_EncryptedData(const EncryptedData * data)
480 ret += length_ENCTYPE(&(data)->etype);
481 ret += 1 + length_len(ret) + oldret;
486 ret += length_integer((data)->kvno);
487 ret += 1 + length_len(ret) + oldret;
492 ret += length_octet_string(&(data)->cipher);
493 ret += 1 + length_len(ret) + oldret;
495 ret += 1 + length_len(ret);
500 copy_EncryptedData(const EncryptedData * from, EncryptedData * to)
502 if (copy_ENCTYPE(&(from)->etype, &(to)->etype))
505 (to)->kvno = malloc(sizeof(*(to)->kvno));
506 if ((to)->kvno == NULL)
508 *((to)->kvno) = *((from)->kvno);
511 if (copy_octet_string(&(from)->cipher, &(to)->cipher))
516 /* Generated from /home/lha/src/cvs/heimdal/lib/asn1/k5.asn1 */
524 #include <asn1_err.h>
526 #define BACK if (e) return e; p -= l; len -= l; ret += l
529 encode_PrincipalName(unsigned char *p, size_t len, const PrincipalName * data,
540 for (i = (&(data)->name_string)->len - 1; i >= 0; --i) {
543 e = encode_general_string(p, len, &(&(data)->name_string)->val[i],
548 e = der_put_length_and_tag(p, len, ret, UNIV, CONS, UT_Sequence, &l);
550 e = der_put_length_and_tag(p, len, ret, Der_CONTEXT, CONS, 1, &l);
557 e = encode_NAME_TYPE(p, len, &(data)->name_type, &l);
559 e = der_put_length_and_tag(p, len, ret, Der_CONTEXT, CONS, 0, &l);
563 e = der_put_length_and_tag(p, len, ret, UNIV, CONS, UT_Sequence, &l);
569 #define FORW if(e) goto fail; p += l; len -= l; ret += l
572 decode_PrincipalName(const unsigned char *p, size_t len, PrincipalName * data,
575 size_t ret = 0, reallen;
579 memset(data, 0, sizeof(*data));
581 e = der_match_tag_and_length(p, len, UNIV, CONS, UT_Sequence, &reallen,
586 if ((dce_fix = fix_dce(reallen, &len)) < 0)
587 return ASN1_BAD_FORMAT;
589 size_t newlen, oldlen;
591 e = der_match_tag(p, len, Der_CONTEXT, CONS, 0, &l);
598 e = der_get_length(p, len, &newlen, &l);
603 if ((dce_fix = fix_dce(newlen, &len)) < 0)
604 return ASN1_BAD_FORMAT;
605 e = decode_NAME_TYPE(p, len, &(data)->name_type, &l);
608 e = der_match_tag_and_length(p, len, (Der_class) 0,
613 len = oldlen - newlen;
618 size_t newlen, oldlen;
620 e = der_match_tag(p, len, Der_CONTEXT, CONS, 1, &l);
627 e = der_get_length(p, len, &newlen, &l);
632 if ((dce_fix = fix_dce(newlen, &len)) < 0)
633 return ASN1_BAD_FORMAT;
634 e = der_match_tag_and_length(p, len, UNIV, CONS,
635 UT_Sequence, &reallen, &l);
641 size_t origlen = len;
644 (&(data)->name_string)->len = 0;
645 (&(data)->name_string)->val = NULL;
646 while (ret < origlen) {
647 (&(data)->name_string)->len++;
648 (&(data)->name_string)->val =
649 realloc((&(data)->name_string)->val,
650 sizeof(*((&(data)->name_string)->val))
651 * (&(data)->name_string)->len);
652 e = decode_general_string(p, len,
664 e = der_match_tag_and_length(p, len, (Der_class) 0,
669 len = oldlen - newlen;
674 e = der_match_tag_and_length(p, len, (Der_class) 0, (Der_type) 0,
683 free_PrincipalName(data);
688 free_PrincipalName(PrincipalName * data)
690 free_NAME_TYPE(&(data)->name_type);
691 while ((&(data)->name_string)->len) {
692 free_general_string(&(&(data)->name_string)->
693 val[(&(data)->name_string)->len - 1]);
694 (&(data)->name_string)->len--;
696 free((&(data)->name_string)->val);
700 length_PrincipalName(const PrincipalName * data)
706 ret += length_NAME_TYPE(&(data)->name_type);
707 ret += 1 + length_len(ret) + oldret;
716 for (i = (&(data)->name_string)->len - 1; i >= 0; --i) {
717 ret += length_general_string(&(&(data)->name_string)->val[i]);
719 ret += 1 + length_len(ret) + oldret;
721 ret += 1 + length_len(ret) + oldret;
723 ret += 1 + length_len(ret);
728 copy_PrincipalName(const PrincipalName * from, PrincipalName * to)
730 if (copy_NAME_TYPE(&(from)->name_type, &(to)->name_type))
732 if (((&(to)->name_string)->val =
733 malloc((&(from)->name_string)->len *
734 sizeof(*(&(to)->name_string)->val))) == NULL
735 && (&(from)->name_string)->len != 0)
737 for ((&(to)->name_string)->len = 0;
738 (&(to)->name_string)->len < (&(from)->name_string)->len;
739 (&(to)->name_string)->len++) {
740 if (copy_general_string
741 (&(&(from)->name_string)->val[(&(to)->name_string)->len],
742 &(&(to)->name_string)->val[(&(to)->name_string)->len]))
748 /* Generated from /home/lha/src/cvs/heimdal/lib/asn1/k5.asn1 */
756 #include <asn1_err.h>
758 #define BACK if (e) return e; p -= l; len -= l; ret += l
761 encode_HostAddresses(unsigned char *p, size_t len, const HostAddresses * data,
769 for (i = (data)->len - 1; i >= 0; --i) {
772 e = encode_HostAddress(p, len, &(data)->val[i], &l);
776 e = der_put_length_and_tag(p, len, ret, UNIV, CONS, UT_Sequence, &l);
782 #define FORW if(e) goto fail; p += l; len -= l; ret += l
785 decode_HostAddresses(const unsigned char *p, size_t len, HostAddresses * data,
788 size_t ret = 0, reallen;
792 memset(data, 0, sizeof(*data));
794 e = der_match_tag_and_length(p, len, UNIV, CONS, UT_Sequence, &reallen,
801 size_t origlen = len;
806 while (ret < origlen) {
809 realloc((data)->val, sizeof(*((data)->val)) * (data)->len);
810 e = decode_HostAddress(p, len, &(data)->val[(data)->len - 1], &l);
820 free_HostAddresses(data);
825 free_HostAddresses(HostAddresses * data)
827 while ((data)->len) {
828 free_HostAddress(&(data)->val[(data)->len - 1]);
835 length_HostAddresses(const HostAddresses * data)
842 for (i = (data)->len - 1; i >= 0; --i) {
843 ret += length_HostAddress(&(data)->val[i]);
845 ret += 1 + length_len(ret) + oldret;
851 copy_HostAddresses(const HostAddresses * from, HostAddresses * to)
853 if (((to)->val = malloc((from)->len * sizeof(*(to)->val))) == NULL
856 for ((to)->len = 0; (to)->len < (from)->len; (to)->len++) {
857 if (copy_HostAddress(&(from)->val[(to)->len], &(to)->val[(to)->len]))
863 /* Generated from /home/lha/src/cvs/heimdal/lib/asn1/k5.asn1 */
871 #include <asn1_err.h>
873 #define BACK if (e) return e; p -= l; len -= l; ret += l
876 encode_HostAddress(unsigned char *p, size_t len, const HostAddress * data,
887 e = encode_octet_string(p, len, &(data)->address, &l);
889 e = der_put_length_and_tag(p, len, ret, Der_CONTEXT, CONS, 1, &l);
896 e = encode_integer(p, len, &(data)->addr_type, &l);
898 e = der_put_length_and_tag(p, len, ret, Der_CONTEXT, CONS, 0, &l);
902 e = der_put_length_and_tag(p, len, ret, UNIV, CONS, UT_Sequence, &l);
908 #define FORW if(e) goto fail; p += l; len -= l; ret += l
911 decode_HostAddress(const unsigned char *p, size_t len, HostAddress * data,
914 size_t ret = 0, reallen;
918 memset(data, 0, sizeof(*data));
920 e = der_match_tag_and_length(p, len, UNIV, CONS, UT_Sequence, &reallen,
925 if ((dce_fix = fix_dce(reallen, &len)) < 0)
926 return ASN1_BAD_FORMAT;
928 size_t newlen, oldlen;
930 e = der_match_tag(p, len, Der_CONTEXT, CONS, 0, &l);
937 e = der_get_length(p, len, &newlen, &l);
942 if ((dce_fix = fix_dce(newlen, &len)) < 0)
943 return ASN1_BAD_FORMAT;
944 e = decode_integer(p, len, &(data)->addr_type, &l);
947 e = der_match_tag_and_length(p, len, (Der_class) 0,
952 len = oldlen - newlen;
957 size_t newlen, oldlen;
959 e = der_match_tag(p, len, Der_CONTEXT, CONS, 1, &l);
966 e = der_get_length(p, len, &newlen, &l);
971 if ((dce_fix = fix_dce(newlen, &len)) < 0)
972 return ASN1_BAD_FORMAT;
973 e = decode_octet_string(p, len, &(data)->address, &l);
976 e = der_match_tag_and_length(p, len, (Der_class) 0,
981 len = oldlen - newlen;
986 e = der_match_tag_and_length(p, len, (Der_class) 0, (Der_type) 0,
995 free_HostAddress(data);
1000 free_HostAddress(HostAddress * data)
1002 free_octet_string(&(data)->address);
1006 length_HostAddress(const HostAddress * data)
1012 ret += length_integer(&(data)->addr_type);
1013 ret += 1 + length_len(ret) + oldret;
1018 ret += length_octet_string(&(data)->address);
1019 ret += 1 + length_len(ret) + oldret;
1021 ret += 1 + length_len(ret);
1026 copy_HostAddress(const HostAddress * from, HostAddress * to)
1028 *(&(to)->addr_type) = *(&(from)->addr_type);
1029 if (copy_octet_string(&(from)->address, &(to)->address))
1034 /* Generated from /home/lha/src/cvs/heimdal/lib/asn1/k5.asn1 */
1042 #include <asn1_err.h>
1044 #define BACK if (e) return e; p -= l; len -= l; ret += l
1047 encode_AuthorizationData(unsigned char *p, size_t len,
1048 const AuthorizationData * data, size_t * size)
1055 for (i = (data)->len - 1; i >= 0; --i) {
1061 e = encode_octet_string(p, len, &(&(data)->val[i])->ad_data, &l);
1063 e = der_put_length_and_tag(p, len, ret, Der_CONTEXT, CONS, 1, &l);
1070 e = encode_integer(p, len, &(&(data)->val[i])->ad_type, &l);
1072 e = der_put_length_and_tag(p, len, ret, Der_CONTEXT, CONS, 0, &l);
1076 e = der_put_length_and_tag(p, len, ret, UNIV, CONS, UT_Sequence, &l);
1080 e = der_put_length_and_tag(p, len, ret, UNIV, CONS, UT_Sequence, &l);
1086 #define FORW if(e) goto fail; p += l; len -= l; ret += l
1089 decode_AuthorizationData(const unsigned char *p, size_t len,
1090 AuthorizationData * data, size_t * size)
1092 size_t ret = 0, reallen;
1096 memset(data, 0, sizeof(*data));
1098 e = der_match_tag_and_length(p, len, UNIV, CONS, UT_Sequence, &reallen,
1102 return ASN1_OVERRUN;
1105 size_t origlen = len;
1110 while (ret < origlen) {
1113 realloc((data)->val, sizeof(*((data)->val)) * (data)->len);
1114 e = der_match_tag_and_length(p, len, UNIV, CONS, UT_Sequence,
1119 if ((dce_fix = fix_dce(reallen, &len)) < 0)
1120 return ASN1_BAD_FORMAT;
1122 size_t newlen, oldlen;
1124 e = der_match_tag(p, len, Der_CONTEXT, CONS, 0, &l);
1131 e = der_get_length(p, len, &newlen, &l);
1136 if ((dce_fix = fix_dce(newlen, &len)) < 0)
1137 return ASN1_BAD_FORMAT;
1138 e = decode_integer(p, len,
1144 e = der_match_tag_and_length(p, len,
1150 len = oldlen - newlen;
1155 size_t newlen, oldlen;
1157 e = der_match_tag(p, len, Der_CONTEXT, CONS, 1, &l);
1164 e = der_get_length(p, len, &newlen, &l);
1169 if ((dce_fix = fix_dce(newlen, &len)) < 0)
1170 return ASN1_BAD_FORMAT;
1171 e = decode_octet_string(p, len,
1177 e = der_match_tag_and_length(p, len,
1183 len = oldlen - newlen;
1188 e = der_match_tag_and_length(p, len, (Der_class) 0,
1189 (Der_type) 0, 0, &reallen,
1194 len = origlen - ret;
1202 free_AuthorizationData(data);
1207 free_AuthorizationData(AuthorizationData * data)
1209 while ((data)->len) {
1210 free_octet_string(&(&(data)->val[(data)->len - 1])->ad_data);
1217 length_AuthorizationData(const AuthorizationData * data)
1224 for (i = (data)->len - 1; i >= 0; --i) {
1228 ret += length_integer(&(&(data)->val[i])->ad_type);
1229 ret += 1 + length_len(ret) + oldret;
1234 ret += length_octet_string(&(&(data)->val[i])->ad_data);
1235 ret += 1 + length_len(ret) + oldret;
1237 ret += 1 + length_len(ret);
1239 ret += 1 + length_len(ret) + oldret;
1245 copy_AuthorizationData(const AuthorizationData * from, AuthorizationData * to)
1247 if (((to)->val = malloc((from)->len * sizeof(*(to)->val))) == NULL
1248 && (from)->len != 0)
1250 for ((to)->len = 0; (to)->len < (from)->len; (to)->len++) {
1251 *(&(&(to)->val[(to)->len])->ad_type) =
1252 *(&(&(from)->val[(to)->len])->ad_type);
1253 if (copy_octet_string
1254 (&(&(from)->val[(to)->len])->ad_data,
1255 &(&(to)->val[(to)->len])->ad_data))
1261 /* Generated from /home/lha/src/cvs/heimdal/lib/asn1/k5.asn1 */
1269 #include <asn1_err.h>
1271 #define BACK if (e) return e; p -= l; len -= l; ret += l
1274 encode_EncTicketPart(unsigned char *p, size_t len, const EncTicketPart * data,
1282 if ((data)->authorization_data) {
1285 e = encode_AuthorizationData(p, len, (data)->authorization_data, &l);
1287 e = der_put_length_and_tag(p, len, ret, Der_CONTEXT, CONS, 10, &l);
1291 if ((data)->caddr) {
1294 e = encode_HostAddresses(p, len, (data)->caddr, &l);
1296 e = der_put_length_and_tag(p, len, ret, Der_CONTEXT, CONS, 9, &l);
1300 if ((data)->renew_till) {
1303 e = encode_KerberosTime(p, len, (data)->renew_till, &l);
1305 e = der_put_length_and_tag(p, len, ret, Der_CONTEXT, CONS, 8, &l);
1312 e = encode_KerberosTime(p, len, &(data)->endtime, &l);
1314 e = der_put_length_and_tag(p, len, ret, Der_CONTEXT, CONS, 7, &l);
1318 if ((data)->starttime) {
1321 e = encode_KerberosTime(p, len, (data)->starttime, &l);
1323 e = der_put_length_and_tag(p, len, ret, Der_CONTEXT, CONS, 6, &l);
1330 e = encode_KerberosTime(p, len, &(data)->authtime, &l);
1332 e = der_put_length_and_tag(p, len, ret, Der_CONTEXT, CONS, 5, &l);
1339 e = encode_TransitedEncoding(p, len, &(data)->transited, &l);
1341 e = der_put_length_and_tag(p, len, ret, Der_CONTEXT, CONS, 4, &l);
1348 e = encode_PrincipalName(p, len, &(data)->cname, &l);
1350 e = der_put_length_and_tag(p, len, ret, Der_CONTEXT, CONS, 3, &l);
1357 e = encode_Realm(p, len, &(data)->crealm, &l);
1359 e = der_put_length_and_tag(p, len, ret, Der_CONTEXT, CONS, 2, &l);
1366 e = encode_EncryptionKey(p, len, &(data)->key, &l);
1368 e = der_put_length_and_tag(p, len, ret, Der_CONTEXT, CONS, 1, &l);
1375 e = encode_TicketFlags(p, len, &(data)->flags, &l);
1377 e = der_put_length_and_tag(p, len, ret, Der_CONTEXT, CONS, 0, &l);
1381 e = der_put_length_and_tag(p, len, ret, UNIV, CONS, UT_Sequence, &l);
1383 e = der_put_length_and_tag(p, len, ret, APPL, CONS, 3, &l);
1389 #define FORW if(e) goto fail; p += l; len -= l; ret += l
1392 decode_EncTicketPart(const unsigned char *p, size_t len, EncTicketPart * data,
1395 size_t ret = 0, reallen;
1399 memset(data, 0, sizeof(*data));
1401 e = der_match_tag_and_length(p, len, APPL, CONS, 3, &reallen, &l);
1405 if ((dce_fix = fix_dce(reallen, &len)) < 0)
1406 return ASN1_BAD_FORMAT;
1407 e = der_match_tag_and_length(p, len, UNIV, CONS, UT_Sequence,
1412 if ((dce_fix = fix_dce(reallen, &len)) < 0)
1413 return ASN1_BAD_FORMAT;
1415 size_t newlen, oldlen;
1417 e = der_match_tag(p, len, Der_CONTEXT, CONS, 0, &l);
1424 e = der_get_length(p, len, &newlen, &l);
1429 if ((dce_fix = fix_dce(newlen, &len)) < 0)
1430 return ASN1_BAD_FORMAT;
1431 e = decode_TicketFlags(p, len, &(data)->flags, &l);
1434 e = der_match_tag_and_length(p, len,
1440 len = oldlen - newlen;
1445 size_t newlen, oldlen;
1447 e = der_match_tag(p, len, Der_CONTEXT, CONS, 1, &l);
1454 e = der_get_length(p, len, &newlen, &l);
1459 if ((dce_fix = fix_dce(newlen, &len)) < 0)
1460 return ASN1_BAD_FORMAT;
1461 e = decode_EncryptionKey(p, len, &(data)->key, &l);
1464 e = der_match_tag_and_length(p, len,
1470 len = oldlen - newlen;
1475 size_t newlen, oldlen;
1477 e = der_match_tag(p, len, Der_CONTEXT, CONS, 2, &l);
1484 e = der_get_length(p, len, &newlen, &l);
1489 if ((dce_fix = fix_dce(newlen, &len)) < 0)
1490 return ASN1_BAD_FORMAT;
1491 e = decode_Realm(p, len, &(data)->crealm, &l);
1494 e = der_match_tag_and_length(p, len,
1500 len = oldlen - newlen;
1505 size_t newlen, oldlen;
1507 e = der_match_tag(p, len, Der_CONTEXT, CONS, 3, &l);
1514 e = der_get_length(p, len, &newlen, &l);
1519 if ((dce_fix = fix_dce(newlen, &len)) < 0)
1520 return ASN1_BAD_FORMAT;
1521 e = decode_PrincipalName(p, len, &(data)->cname, &l);
1524 e = der_match_tag_and_length(p, len,
1530 len = oldlen - newlen;
1535 size_t newlen, oldlen;
1537 e = der_match_tag(p, len, Der_CONTEXT, CONS, 4, &l);
1544 e = der_get_length(p, len, &newlen, &l);
1549 if ((dce_fix = fix_dce(newlen, &len)) < 0)
1550 return ASN1_BAD_FORMAT;
1551 e = decode_TransitedEncoding(p, len,
1552 &(data)->transited, &l);
1555 e = der_match_tag_and_length(p, len,
1561 len = oldlen - newlen;
1566 size_t newlen, oldlen;
1568 e = der_match_tag(p, len, Der_CONTEXT, CONS, 5, &l);
1575 e = der_get_length(p, len, &newlen, &l);
1580 if ((dce_fix = fix_dce(newlen, &len)) < 0)
1581 return ASN1_BAD_FORMAT;
1582 e = decode_KerberosTime(p, len, &(data)->authtime,
1586 e = der_match_tag_and_length(p, len,
1592 len = oldlen - newlen;
1597 size_t newlen, oldlen;
1599 e = der_match_tag(p, len, Der_CONTEXT, CONS, 6, &l);
1601 (data)->starttime = NULL;
1606 e = der_get_length(p, len, &newlen, &l);
1611 if ((dce_fix = fix_dce(newlen, &len)) < 0)
1612 return ASN1_BAD_FORMAT;
1614 malloc(sizeof(*(data)->starttime));
1615 if ((data)->starttime == NULL)
1617 e = decode_KerberosTime(p, len, (data)->starttime,
1621 e = der_match_tag_and_length(p, len,
1627 len = oldlen - newlen;
1632 size_t newlen, oldlen;
1634 e = der_match_tag(p, len, Der_CONTEXT, CONS, 7, &l);
1641 e = der_get_length(p, len, &newlen, &l);
1646 if ((dce_fix = fix_dce(newlen, &len)) < 0)
1647 return ASN1_BAD_FORMAT;
1648 e = decode_KerberosTime(p, len, &(data)->endtime, &l);
1651 e = der_match_tag_and_length(p, len,
1657 len = oldlen - newlen;
1662 size_t newlen, oldlen;
1664 e = der_match_tag(p, len, Der_CONTEXT, CONS, 8, &l);
1666 (data)->renew_till = NULL;
1671 e = der_get_length(p, len, &newlen, &l);
1676 if ((dce_fix = fix_dce(newlen, &len)) < 0)
1677 return ASN1_BAD_FORMAT;
1678 (data)->renew_till =
1679 malloc(sizeof(*(data)->renew_till));
1680 if ((data)->renew_till == NULL)
1682 e = decode_KerberosTime(p, len, (data)->renew_till,
1686 e = der_match_tag_and_length(p, len,
1692 len = oldlen - newlen;
1697 size_t newlen, oldlen;
1699 e = der_match_tag(p, len, Der_CONTEXT, CONS, 9, &l);
1701 (data)->caddr = NULL;
1706 e = der_get_length(p, len, &newlen, &l);
1711 if ((dce_fix = fix_dce(newlen, &len)) < 0)
1712 return ASN1_BAD_FORMAT;
1713 (data)->caddr = malloc(sizeof(*(data)->caddr));
1714 if ((data)->caddr == NULL)
1716 e = decode_HostAddresses(p, len, (data)->caddr, &l);
1719 e = der_match_tag_and_length(p, len,
1725 len = oldlen - newlen;
1730 size_t newlen, oldlen;
1732 e = der_match_tag(p, len, Der_CONTEXT, CONS, 10, &l);
1734 (data)->authorization_data = NULL;
1739 e = der_get_length(p, len, &newlen, &l);
1744 if ((dce_fix = fix_dce(newlen, &len)) < 0)
1745 return ASN1_BAD_FORMAT;
1746 (data)->authorization_data =
1747 malloc(sizeof(*(data)->authorization_data));
1748 if ((data)->authorization_data == NULL)
1750 e = decode_AuthorizationData(p, len,
1752 authorization_data, &l);
1755 e = der_match_tag_and_length(p, len,
1761 len = oldlen - newlen;
1766 e = der_match_tag_and_length(p, len, (Der_class) 0,
1767 (Der_type) 0, 0, &reallen, &l);
1772 e = der_match_tag_and_length(p, len, (Der_class) 0, (Der_type) 0,
1781 free_EncTicketPart(data);
1786 free_EncTicketPart(EncTicketPart * data)
1788 free_TicketFlags(&(data)->flags);
1789 free_EncryptionKey(&(data)->key);
1790 free_Realm(&(data)->crealm);
1791 free_PrincipalName(&(data)->cname);
1792 free_TransitedEncoding(&(data)->transited);
1793 free_KerberosTime(&(data)->authtime);
1794 if ((data)->starttime) {
1795 free_KerberosTime((data)->starttime);
1796 free((data)->starttime);
1798 free_KerberosTime(&(data)->endtime);
1799 if ((data)->renew_till) {
1800 free_KerberosTime((data)->renew_till);
1801 free((data)->renew_till);
1803 if ((data)->caddr) {
1804 free_HostAddresses((data)->caddr);
1805 free((data)->caddr);
1807 if ((data)->authorization_data) {
1808 free_AuthorizationData((data)->authorization_data);
1809 free((data)->authorization_data);
1814 length_EncTicketPart(const EncTicketPart * data)
1820 ret += length_TicketFlags(&(data)->flags);
1821 ret += 1 + length_len(ret) + oldret;
1826 ret += length_EncryptionKey(&(data)->key);
1827 ret += 1 + length_len(ret) + oldret;
1832 ret += length_Realm(&(data)->crealm);
1833 ret += 1 + length_len(ret) + oldret;
1838 ret += length_PrincipalName(&(data)->cname);
1839 ret += 1 + length_len(ret) + oldret;
1844 ret += length_TransitedEncoding(&(data)->transited);
1845 ret += 1 + length_len(ret) + oldret;
1850 ret += length_KerberosTime(&(data)->authtime);
1851 ret += 1 + length_len(ret) + oldret;
1853 if ((data)->starttime) {
1856 ret += length_KerberosTime((data)->starttime);
1857 ret += 1 + length_len(ret) + oldret;
1862 ret += length_KerberosTime(&(data)->endtime);
1863 ret += 1 + length_len(ret) + oldret;
1865 if ((data)->renew_till) {
1868 ret += length_KerberosTime((data)->renew_till);
1869 ret += 1 + length_len(ret) + oldret;
1871 if ((data)->caddr) {
1874 ret += length_HostAddresses((data)->caddr);
1875 ret += 1 + length_len(ret) + oldret;
1877 if ((data)->authorization_data) {
1880 ret += length_AuthorizationData((data)->authorization_data);
1881 ret += 1 + length_len(ret) + oldret;
1883 ret += 1 + length_len(ret);
1884 ret += 1 + length_len(ret);
1889 copy_EncTicketPart(const EncTicketPart * from, EncTicketPart * to)
1891 if (copy_TicketFlags(&(from)->flags, &(to)->flags))
1893 if (copy_EncryptionKey(&(from)->key, &(to)->key))
1895 if (copy_Realm(&(from)->crealm, &(to)->crealm))
1897 if (copy_PrincipalName(&(from)->cname, &(to)->cname))
1899 if (copy_TransitedEncoding(&(from)->transited, &(to)->transited))
1901 if (copy_KerberosTime(&(from)->authtime, &(to)->authtime))
1903 if ((from)->starttime) {
1904 (to)->starttime = malloc(sizeof(*(to)->starttime));
1905 if ((to)->starttime == NULL)
1907 if (copy_KerberosTime((from)->starttime, (to)->starttime))
1910 (to)->starttime = NULL;
1911 if (copy_KerberosTime(&(from)->endtime, &(to)->endtime))
1913 if ((from)->renew_till) {
1914 (to)->renew_till = malloc(sizeof(*(to)->renew_till));
1915 if ((to)->renew_till == NULL)
1917 if (copy_KerberosTime((from)->renew_till, (to)->renew_till))
1920 (to)->renew_till = NULL;
1921 if ((from)->caddr) {
1922 (to)->caddr = malloc(sizeof(*(to)->caddr));
1923 if ((to)->caddr == NULL)
1925 if (copy_HostAddresses((from)->caddr, (to)->caddr))
1929 if ((from)->authorization_data) {
1930 (to)->authorization_data = malloc(sizeof(*(to)->authorization_data));
1931 if ((to)->authorization_data == NULL)
1933 if (copy_AuthorizationData
1934 ((from)->authorization_data, (to)->authorization_data))
1937 (to)->authorization_data = NULL;
1941 /* Generated from /home/lha/src/cvs/heimdal/lib/asn1/k5.asn1 */
1949 #include <asn1_err.h>
1951 #define BACK if (e) return e; p -= l; len -= l; ret += l
1954 encode_KerberosTime(unsigned char *p, size_t len, const KerberosTime * data,
1962 e = encode_generalized_time(p, len, data, &l);
1968 #define FORW if(e) goto fail; p += l; len -= l; ret += l
1971 decode_KerberosTime(const unsigned char *p, size_t len, KerberosTime * data,
1974 size_t ret = 0, reallen;
1978 memset(data, 0, sizeof(*data));
1980 e = decode_generalized_time(p, len, data, &l);
1986 free_KerberosTime(data);
1991 free_KerberosTime(KerberosTime * data)
1996 length_KerberosTime(const KerberosTime * data)
1999 ret += length_generalized_time(data);
2004 copy_KerberosTime(const KerberosTime * from, KerberosTime * to)
2010 /* Generated from /home/lha/src/cvs/heimdal/lib/asn1/k5.asn1 */
2018 #include <asn1_err.h>
2020 #define BACK if (e) return e; p -= l; len -= l; ret += l
2023 encode_TransitedEncoding(unsigned char *p, size_t len,
2024 const TransitedEncoding * data, size_t * size)
2034 e = encode_octet_string(p, len, &(data)->contents, &l);
2036 e = der_put_length_and_tag(p, len, ret, Der_CONTEXT, CONS, 1, &l);
2043 e = encode_integer(p, len, &(data)->tr_type, &l);
2045 e = der_put_length_and_tag(p, len, ret, Der_CONTEXT, CONS, 0, &l);
2049 e = der_put_length_and_tag(p, len, ret, UNIV, CONS, UT_Sequence, &l);
2055 #define FORW if(e) goto fail; p += l; len -= l; ret += l
2058 decode_TransitedEncoding(const unsigned char *p, size_t len,
2059 TransitedEncoding * data, size_t * size)
2061 size_t ret = 0, reallen;
2065 memset(data, 0, sizeof(*data));
2067 e = der_match_tag_and_length(p, len, UNIV, CONS, UT_Sequence, &reallen,
2072 if ((dce_fix = fix_dce(reallen, &len)) < 0)
2073 return ASN1_BAD_FORMAT;
2075 size_t newlen, oldlen;
2077 e = der_match_tag(p, len, Der_CONTEXT, CONS, 0, &l);
2084 e = der_get_length(p, len, &newlen, &l);
2089 if ((dce_fix = fix_dce(newlen, &len)) < 0)
2090 return ASN1_BAD_FORMAT;
2091 e = decode_integer(p, len, &(data)->tr_type, &l);
2094 e = der_match_tag_and_length(p, len, (Der_class) 0,
2099 len = oldlen - newlen;
2104 size_t newlen, oldlen;
2106 e = der_match_tag(p, len, Der_CONTEXT, CONS, 1, &l);
2113 e = der_get_length(p, len, &newlen, &l);
2118 if ((dce_fix = fix_dce(newlen, &len)) < 0)
2119 return ASN1_BAD_FORMAT;
2120 e = decode_octet_string(p, len, &(data)->contents, &l);
2123 e = der_match_tag_and_length(p, len, (Der_class) 0,
2128 len = oldlen - newlen;
2133 e = der_match_tag_and_length(p, len, (Der_class) 0, (Der_type) 0,
2142 free_TransitedEncoding(data);
2147 free_TransitedEncoding(TransitedEncoding * data)
2149 free_octet_string(&(data)->contents);
2153 length_TransitedEncoding(const TransitedEncoding * data)
2159 ret += length_integer(&(data)->tr_type);
2160 ret += 1 + length_len(ret) + oldret;
2165 ret += length_octet_string(&(data)->contents);
2166 ret += 1 + length_len(ret) + oldret;
2168 ret += 1 + length_len(ret);
2173 copy_TransitedEncoding(const TransitedEncoding * from, TransitedEncoding * to)
2175 *(&(to)->tr_type) = *(&(from)->tr_type);
2176 if (copy_octet_string(&(from)->contents, &(to)->contents))
2181 /* Generated from /home/lha/src/cvs/heimdal/lib/asn1/k5.asn1 */
2189 #include <asn1_err.h>
2191 #define BACK if (e) return e; p -= l; len -= l; ret += l
2194 encode_EncryptionKey(unsigned char *p, size_t len, const EncryptionKey * data,
2205 e = encode_octet_string(p, len, &(data)->keyvalue, &l);
2207 e = der_put_length_and_tag(p, len, ret, Der_CONTEXT, CONS, 1, &l);
2214 e = encode_integer(p, len, &(data)->keytype, &l);
2216 e = der_put_length_and_tag(p, len, ret, Der_CONTEXT, CONS, 0, &l);
2220 e = der_put_length_and_tag(p, len, ret, UNIV, CONS, UT_Sequence, &l);
2226 #define FORW if(e) goto fail; p += l; len -= l; ret += l
2229 decode_EncryptionKey(const unsigned char *p, size_t len, EncryptionKey * data,
2232 size_t ret = 0, reallen;
2236 memset(data, 0, sizeof(*data));
2238 e = der_match_tag_and_length(p, len, UNIV, CONS, UT_Sequence, &reallen,
2243 if ((dce_fix = fix_dce(reallen, &len)) < 0)
2244 return ASN1_BAD_FORMAT;
2246 size_t newlen, oldlen;
2248 e = der_match_tag(p, len, Der_CONTEXT, CONS, 0, &l);
2255 e = der_get_length(p, len, &newlen, &l);
2260 if ((dce_fix = fix_dce(newlen, &len)) < 0)
2261 return ASN1_BAD_FORMAT;
2262 e = decode_integer(p, len, &(data)->keytype, &l);
2265 e = der_match_tag_and_length(p, len, (Der_class) 0,
2270 len = oldlen - newlen;
2275 size_t newlen, oldlen;
2277 e = der_match_tag(p, len, Der_CONTEXT, CONS, 1, &l);
2284 e = der_get_length(p, len, &newlen, &l);
2289 if ((dce_fix = fix_dce(newlen, &len)) < 0)
2290 return ASN1_BAD_FORMAT;
2291 e = decode_octet_string(p, len, &(data)->keyvalue, &l);
2294 e = der_match_tag_and_length(p, len, (Der_class) 0,
2299 len = oldlen - newlen;
2304 e = der_match_tag_and_length(p, len, (Der_class) 0, (Der_type) 0,
2313 free_EncryptionKey(data);
2318 free_EncryptionKey(EncryptionKey * data)
2320 free_octet_string(&(data)->keyvalue);
2324 length_EncryptionKey(const EncryptionKey * data)
2330 ret += length_integer(&(data)->keytype);
2331 ret += 1 + length_len(ret) + oldret;
2336 ret += length_octet_string(&(data)->keyvalue);
2337 ret += 1 + length_len(ret) + oldret;
2339 ret += 1 + length_len(ret);
2344 copy_EncryptionKey(const EncryptionKey * from, EncryptionKey * to)
2346 *(&(to)->keytype) = *(&(from)->keytype);
2347 if (copy_octet_string(&(from)->keyvalue, &(to)->keyvalue))
2352 /* Generated from /home/lha/src/cvs/heimdal/lib/asn1/k5.asn1 */
2360 #include <asn1_err.h>
2362 #define BACK if (e) return e; p -= l; len -= l; ret += l
2365 encode_TicketFlags(unsigned char *p, size_t len, const TicketFlags * data,
2374 unsigned char c = 0;
2383 if (data->anonymous)
2385 if (data->ok_as_delegate)
2387 if (data->transited_policy_checked)
2389 if (data->hw_authent)
2391 if (data->pre_authent)
2395 if (data->renewable)
2403 if (data->postdated)
2405 if (data->may_postdate)
2409 if (data->proxiable)
2411 if (data->forwarded)
2413 if (data->forwardable)
2423 e = der_put_length_and_tag(p, len, ret, UNIV, PRIM, UT_BitString, &l);
2429 #define FORW if(e) goto fail; p += l; len -= l; ret += l
2432 decode_TicketFlags(const unsigned char *p, size_t len, TicketFlags * data,
2435 size_t ret = 0, reallen;
2439 memset(data, 0, sizeof(*data));
2441 e = der_match_tag_and_length(p, len, UNIV, PRIM, UT_BitString, &reallen,
2445 return ASN1_OVERRUN;
2450 data->reserved = (*p >> 7) & 1;
2451 data->forwardable = (*p >> 6) & 1;
2452 data->forwarded = (*p >> 5) & 1;
2453 data->proxiable = (*p >> 4) & 1;
2454 data->proxy = (*p >> 3) & 1;
2455 data->may_postdate = (*p >> 2) & 1;
2456 data->postdated = (*p >> 1) & 1;
2457 data->invalid = (*p >> 0) & 1;
2462 data->renewable = (*p >> 7) & 1;
2463 data->initial = (*p >> 6) & 1;
2464 data->pre_authent = (*p >> 5) & 1;
2465 data->hw_authent = (*p >> 4) & 1;
2466 data->transited_policy_checked = (*p >> 3) & 1;
2467 data->ok_as_delegate = (*p >> 2) & 1;
2468 data->anonymous = (*p >> 1) & 1;
2476 free_TicketFlags(data);
2481 free_TicketFlags(TicketFlags * data)
2486 length_TicketFlags(const TicketFlags * data)
2494 copy_TicketFlags(const TicketFlags * from, TicketFlags * to)
2501 TicketFlags2int(TicketFlags f)
2528 if (f.transited_policy_checked)
2530 if (f.ok_as_delegate)
2538 int2TicketFlags(unsigned n)
2542 flags.reserved = (n >> 0) & 1;
2543 flags.forwardable = (n >> 1) & 1;
2544 flags.forwarded = (n >> 2) & 1;
2545 flags.proxiable = (n >> 3) & 1;
2546 flags.proxy = (n >> 4) & 1;
2547 flags.may_postdate = (n >> 5) & 1;
2548 flags.postdated = (n >> 6) & 1;
2549 flags.invalid = (n >> 7) & 1;
2550 flags.renewable = (n >> 8) & 1;
2551 flags.initial = (n >> 9) & 1;
2552 flags.pre_authent = (n >> 10) & 1;
2553 flags.hw_authent = (n >> 11) & 1;
2554 flags.transited_policy_checked = (n >> 12) & 1;
2555 flags.ok_as_delegate = (n >> 13) & 1;
2556 flags.anonymous = (n >> 14) & 1;
2561 /* Generated from /home/lha/src/cvs/heimdal/lib/asn1/k5.asn1 */
2569 #include <asn1_err.h>
2571 #define BACK if (e) return e; p -= l; len -= l; ret += l
2574 encode_Realm(unsigned char *p, size_t len, const Realm * data, size_t * size)
2581 e = encode_general_string(p, len, data, &l);
2587 #define FORW if(e) goto fail; p += l; len -= l; ret += l
2590 decode_Realm(const unsigned char *p, size_t len, Realm * data, size_t * size)
2592 size_t ret = 0, reallen;
2596 memset(data, 0, sizeof(*data));
2598 e = decode_general_string(p, len, data, &l);
2609 free_Realm(Realm * data)
2611 free_general_string(data);
2615 length_Realm(const Realm * data)
2618 ret += length_general_string(data);
2623 copy_Realm(const Realm * from, Realm * to)
2625 if (copy_general_string(from, to))
2630 /* Generated from /home/lha/src/cvs/heimdal/lib/asn1/k5.asn1 */
2638 #include <asn1_err.h>
2640 #define BACK if (e) return e; p -= l; len -= l; ret += l
2643 encode_ENCTYPE(unsigned char *p, size_t len, const ENCTYPE * data,
2651 e = encode_integer(p, len, (const int *)data, &l);
2657 #define FORW if(e) goto fail; p += l; len -= l; ret += l
2660 decode_ENCTYPE(const unsigned char *p, size_t len, ENCTYPE * data,
2663 size_t ret = 0, reallen;
2667 memset(data, 0, sizeof(*data));
2669 e = decode_integer(p, len, (int *)data, &l);
2680 free_ENCTYPE(ENCTYPE * data)
2685 length_ENCTYPE(const ENCTYPE * data)
2688 ret += length_integer((const int *)data);
2693 copy_ENCTYPE(const ENCTYPE * from, ENCTYPE * to)
2699 /* Generated from /home/lha/src/cvs/heimdal/lib/asn1/k5.asn1 */
2707 #include <asn1_err.h>
2709 #define BACK if (e) return e; p -= l; len -= l; ret += l
2712 encode_NAME_TYPE(unsigned char *p, size_t len, const NAME_TYPE * data,
2720 e = encode_integer(p, len, (const int *)data, &l);
2726 #define FORW if(e) goto fail; p += l; len -= l; ret += l
2729 decode_NAME_TYPE(const unsigned char *p, size_t len, NAME_TYPE * data,
2732 size_t ret = 0, reallen;
2736 memset(data, 0, sizeof(*data));
2738 e = decode_integer(p, len, (int *)data, &l);
2744 free_NAME_TYPE(data);
2749 free_NAME_TYPE(NAME_TYPE * data)
2754 length_NAME_TYPE(const NAME_TYPE * data)
2757 ret += length_integer((const int *)data);
2762 copy_NAME_TYPE(const NAME_TYPE * from, NAME_TYPE * to)