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, size_t *size)
24 e = encode_EncryptedData(p, len, &(data)->enc_part, &l);
26 e = der_put_length_and_tag (p, len, ret, Der_CONTEXT, CONS, 3, &l);
33 e = encode_PrincipalName(p, len, &(data)->sname, &l);
35 e = der_put_length_and_tag (p, len, ret, Der_CONTEXT, CONS, 2, &l);
42 e = encode_Realm(p, len, &(data)->realm, &l);
44 e = der_put_length_and_tag (p, len, ret, Der_CONTEXT, CONS, 1, &l);
51 e = encode_integer(p, len, &(data)->tkt_vno, &l);
53 e = der_put_length_and_tag (p, len, ret, Der_CONTEXT, CONS, 0, &l);
57 e = der_put_length_and_tag (p, len, ret, UNIV, CONS, UT_Sequence, &l);
59 e = der_put_length_and_tag (p, len, ret, APPL, CONS, 1, &l);
65 #define FORW if(e) goto fail; p += l; len -= l; ret += l
68 decode_Ticket(const unsigned char *p, size_t len, Ticket *data, size_t *size)
70 size_t ret = 0, reallen;
74 memset(data, 0, sizeof(*data));
76 e = der_match_tag_and_length (p, len, APPL, CONS, 1, &reallen, &l);
80 if((dce_fix = fix_dce(reallen, &len)) < 0)
81 return ASN1_BAD_FORMAT;
82 e = der_match_tag_and_length (p, len, UNIV, CONS, UT_Sequence,&reallen, &l);
86 if((dce_fix = fix_dce(reallen, &len)) < 0)
87 return ASN1_BAD_FORMAT;
89 size_t newlen, oldlen;
91 e = der_match_tag (p, len, Der_CONTEXT, CONS, 0, &l);
98 e = der_get_length (p, len, &newlen, &l);
103 if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT;
104 e = decode_integer(p, len, &(data)->tkt_vno, &l);
107 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
110 len = oldlen - newlen;
115 size_t newlen, oldlen;
117 e = der_match_tag (p, len, Der_CONTEXT, CONS, 1, &l);
124 e = der_get_length (p, len, &newlen, &l);
129 if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT;
130 e = decode_Realm(p, len, &(data)->realm, &l);
133 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
136 len = oldlen - newlen;
141 size_t newlen, oldlen;
143 e = der_match_tag (p, len, Der_CONTEXT, CONS, 2, &l);
150 e = der_get_length (p, len, &newlen, &l);
155 if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT;
156 e = decode_PrincipalName(p, len, &(data)->sname, &l);
159 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
162 len = oldlen - newlen;
167 size_t newlen, oldlen;
169 e = der_match_tag (p, len, Der_CONTEXT, CONS, 3, &l);
176 e = der_get_length (p, len, &newlen, &l);
181 if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT;
182 e = decode_EncryptedData(p, len, &(data)->enc_part, &l);
185 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
188 len = oldlen - newlen;
193 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
198 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
202 if(size) *size = ret;
210 free_Ticket(Ticket *data)
212 free_Realm(&(data)->realm);
213 free_PrincipalName(&(data)->sname);
214 free_EncryptedData(&(data)->enc_part);
218 length_Ticket(const Ticket *data)
224 ret += length_integer(&(data)->tkt_vno);
225 ret += 1 + length_len(ret) + oldret;
230 ret += length_Realm(&(data)->realm);
231 ret += 1 + length_len(ret) + oldret;
236 ret += length_PrincipalName(&(data)->sname);
237 ret += 1 + length_len(ret) + oldret;
242 ret += length_EncryptedData(&(data)->enc_part);
243 ret += 1 + length_len(ret) + oldret;
245 ret += 1 + length_len(ret);
246 ret += 1 + length_len (ret);
251 copy_Ticket(const Ticket *from, Ticket *to)
253 *(&(to)->tkt_vno) = *(&(from)->tkt_vno);
254 if(copy_Realm(&(from)->realm, &(to)->realm)) return ENOMEM;
255 if(copy_PrincipalName(&(from)->sname, &(to)->sname)) return ENOMEM;
256 if(copy_EncryptedData(&(from)->enc_part, &(to)->enc_part)) return ENOMEM;
260 /* Generated from /home/lha/src/cvs/heimdal/lib/asn1/k5.asn1 */
268 #include <asn1_err.h>
270 #define BACK if (e) return e; p -= l; len -= l; ret += l
273 encode_EncryptedData(unsigned char *p, size_t len, const EncryptedData *data, size_t *size)
283 e = encode_octet_string(p, len, &(data)->cipher, &l);
285 e = der_put_length_and_tag (p, len, ret, Der_CONTEXT, CONS, 2, &l);
293 e = encode_integer(p, len, (data)->kvno, &l);
295 e = der_put_length_and_tag (p, len, ret, Der_CONTEXT, CONS, 1, &l);
302 e = encode_ENCTYPE(p, len, &(data)->etype, &l);
304 e = der_put_length_and_tag (p, len, ret, Der_CONTEXT, CONS, 0, &l);
308 e = der_put_length_and_tag (p, len, ret, UNIV, CONS, UT_Sequence, &l);
314 #define FORW if(e) goto fail; p += l; len -= l; ret += l
317 decode_EncryptedData(const unsigned char *p, size_t len, EncryptedData *data, size_t *size)
319 size_t ret = 0, reallen;
323 memset(data, 0, sizeof(*data));
325 e = der_match_tag_and_length (p, len, UNIV, CONS, UT_Sequence,&reallen, &l);
329 if((dce_fix = fix_dce(reallen, &len)) < 0)
330 return ASN1_BAD_FORMAT;
332 size_t newlen, oldlen;
334 e = der_match_tag (p, len, Der_CONTEXT, CONS, 0, &l);
341 e = der_get_length (p, len, &newlen, &l);
346 if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT;
347 e = decode_ENCTYPE(p, len, &(data)->etype, &l);
350 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
353 len = oldlen - newlen;
358 size_t newlen, oldlen;
360 e = der_match_tag (p, len, Der_CONTEXT, CONS, 1, &l);
367 e = der_get_length (p, len, &newlen, &l);
372 if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT;
373 (data)->kvno = malloc(sizeof(*(data)->kvno));
374 if((data)->kvno == NULL) return ENOMEM;
375 e = decode_integer(p, len, (data)->kvno, &l);
378 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
381 len = oldlen - newlen;
386 size_t newlen, oldlen;
388 e = der_match_tag (p, len, Der_CONTEXT, CONS, 2, &l);
395 e = der_get_length (p, len, &newlen, &l);
400 if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT;
401 e = decode_octet_string(p, len, &(data)->cipher, &l);
404 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
407 len = oldlen - newlen;
412 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
416 if(size) *size = ret;
419 free_EncryptedData(data);
424 free_EncryptedData(EncryptedData *data)
426 free_ENCTYPE(&(data)->etype);
430 free_octet_string(&(data)->cipher);
434 length_EncryptedData(const EncryptedData *data)
440 ret += length_ENCTYPE(&(data)->etype);
441 ret += 1 + length_len(ret) + oldret;
446 ret += length_integer((data)->kvno);
447 ret += 1 + length_len(ret) + oldret;
452 ret += length_octet_string(&(data)->cipher);
453 ret += 1 + length_len(ret) + oldret;
455 ret += 1 + length_len(ret);
460 copy_EncryptedData(const EncryptedData *from, EncryptedData *to)
462 if(copy_ENCTYPE(&(from)->etype, &(to)->etype)) return ENOMEM;
464 (to)->kvno = malloc(sizeof(*(to)->kvno));
465 if((to)->kvno == NULL) return ENOMEM;
466 *((to)->kvno) = *((from)->kvno);
469 if(copy_octet_string(&(from)->cipher, &(to)->cipher)) return ENOMEM;
473 /* Generated from /home/lha/src/cvs/heimdal/lib/asn1/k5.asn1 */
481 #include <asn1_err.h>
483 #define BACK if (e) return e; p -= l; len -= l; ret += l
486 encode_PrincipalName(unsigned char *p, size_t len, const PrincipalName *data, size_t *size)
496 for(i = (&(data)->name_string)->len - 1; i >= 0; --i) {
499 e = encode_general_string(p, len, &(&(data)->name_string)->val[i], &l);
503 e = der_put_length_and_tag (p, len, ret, UNIV, CONS, UT_Sequence, &l);
505 e = der_put_length_and_tag (p, len, ret, Der_CONTEXT, CONS, 1, &l);
512 e = encode_NAME_TYPE(p, len, &(data)->name_type, &l);
514 e = der_put_length_and_tag (p, len, ret, Der_CONTEXT, CONS, 0, &l);
518 e = der_put_length_and_tag (p, len, ret, UNIV, CONS, UT_Sequence, &l);
524 #define FORW if(e) goto fail; p += l; len -= l; ret += l
527 decode_PrincipalName(const unsigned char *p, size_t len, PrincipalName *data, size_t *size)
529 size_t ret = 0, reallen;
533 memset(data, 0, sizeof(*data));
535 e = der_match_tag_and_length (p, len, UNIV, CONS, UT_Sequence,&reallen, &l);
539 if((dce_fix = fix_dce(reallen, &len)) < 0)
540 return ASN1_BAD_FORMAT;
542 size_t newlen, oldlen;
544 e = der_match_tag (p, len, Der_CONTEXT, CONS, 0, &l);
551 e = der_get_length (p, len, &newlen, &l);
556 if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT;
557 e = decode_NAME_TYPE(p, len, &(data)->name_type, &l);
560 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
563 len = oldlen - newlen;
568 size_t newlen, oldlen;
570 e = der_match_tag (p, len, Der_CONTEXT, CONS, 1, &l);
577 e = der_get_length (p, len, &newlen, &l);
582 if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT;
583 e = der_match_tag_and_length (p, len, UNIV, CONS, UT_Sequence,&reallen, &l);
589 size_t origlen = len;
592 (&(data)->name_string)->len = 0;
593 (&(data)->name_string)->val = NULL;
594 while(ret < origlen) {
595 (&(data)->name_string)->len++;
596 (&(data)->name_string)->val = realloc((&(data)->name_string)->val, sizeof(*((&(data)->name_string)->val)) * (&(data)->name_string)->len);
597 e = decode_general_string(p, len, &(&(data)->name_string)->val[(&(data)->name_string)->len-1], &l);
604 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
607 len = oldlen - newlen;
612 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
616 if(size) *size = ret;
619 free_PrincipalName(data);
624 free_PrincipalName(PrincipalName *data)
626 free_NAME_TYPE(&(data)->name_type);
627 while((&(data)->name_string)->len){
628 free_general_string(&(&(data)->name_string)->val[(&(data)->name_string)->len-1]);
629 (&(data)->name_string)->len--;
631 free((&(data)->name_string)->val);
635 length_PrincipalName(const PrincipalName *data)
641 ret += length_NAME_TYPE(&(data)->name_type);
642 ret += 1 + length_len(ret) + oldret;
651 for(i = (&(data)->name_string)->len - 1; i >= 0; --i){
652 ret += length_general_string(&(&(data)->name_string)->val[i]);
654 ret += 1 + length_len(ret) + oldret;
656 ret += 1 + length_len(ret) + oldret;
658 ret += 1 + length_len(ret);
663 copy_PrincipalName(const PrincipalName *from, PrincipalName *to)
665 if(copy_NAME_TYPE(&(from)->name_type, &(to)->name_type)) return ENOMEM;
666 if(((&(to)->name_string)->val = malloc((&(from)->name_string)->len * sizeof(*(&(to)->name_string)->val))) == NULL && (&(from)->name_string)->len != 0)
668 for((&(to)->name_string)->len = 0; (&(to)->name_string)->len < (&(from)->name_string)->len; (&(to)->name_string)->len++){
669 if(copy_general_string(&(&(from)->name_string)->val[(&(to)->name_string)->len], &(&(to)->name_string)->val[(&(to)->name_string)->len])) return ENOMEM;
674 /* Generated from /home/lha/src/cvs/heimdal/lib/asn1/k5.asn1 */
682 #include <asn1_err.h>
684 #define BACK if (e) return e; p -= l; len -= l; ret += l
687 encode_HostAddresses(unsigned char *p, size_t len, const HostAddresses *data, size_t *size)
694 for(i = (data)->len - 1; i >= 0; --i) {
697 e = encode_HostAddress(p, len, &(data)->val[i], &l);
701 e = der_put_length_and_tag (p, len, ret, UNIV, CONS, UT_Sequence, &l);
707 #define FORW if(e) goto fail; p += l; len -= l; ret += l
710 decode_HostAddresses(const unsigned char *p, size_t len, HostAddresses *data, size_t *size)
712 size_t ret = 0, reallen;
716 memset(data, 0, sizeof(*data));
718 e = der_match_tag_and_length (p, len, UNIV, CONS, UT_Sequence,&reallen, &l);
724 size_t origlen = len;
729 while(ret < origlen) {
731 (data)->val = realloc((data)->val, sizeof(*((data)->val)) * (data)->len);
732 e = decode_HostAddress(p, len, &(data)->val[(data)->len-1], &l);
738 if(size) *size = ret;
741 free_HostAddresses(data);
746 free_HostAddresses(HostAddresses *data)
749 free_HostAddress(&(data)->val[(data)->len-1]);
756 length_HostAddresses(const HostAddresses *data)
763 for(i = (data)->len - 1; i >= 0; --i){
764 ret += length_HostAddress(&(data)->val[i]);
766 ret += 1 + length_len(ret) + oldret;
772 copy_HostAddresses(const HostAddresses *from, HostAddresses *to)
774 if(((to)->val = malloc((from)->len * sizeof(*(to)->val))) == NULL && (from)->len != 0)
776 for((to)->len = 0; (to)->len < (from)->len; (to)->len++){
777 if(copy_HostAddress(&(from)->val[(to)->len], &(to)->val[(to)->len])) return ENOMEM;
782 /* Generated from /home/lha/src/cvs/heimdal/lib/asn1/k5.asn1 */
790 #include <asn1_err.h>
792 #define BACK if (e) return e; p -= l; len -= l; ret += l
795 encode_HostAddress(unsigned char *p, size_t len, const HostAddress *data, size_t *size)
805 e = encode_octet_string(p, len, &(data)->address, &l);
807 e = der_put_length_and_tag (p, len, ret, Der_CONTEXT, CONS, 1, &l);
814 e = encode_integer(p, len, &(data)->addr_type, &l);
816 e = der_put_length_and_tag (p, len, ret, Der_CONTEXT, CONS, 0, &l);
820 e = der_put_length_and_tag (p, len, ret, UNIV, CONS, UT_Sequence, &l);
826 #define FORW if(e) goto fail; p += l; len -= l; ret += l
829 decode_HostAddress(const unsigned char *p, size_t len, HostAddress *data, size_t *size)
831 size_t ret = 0, reallen;
835 memset(data, 0, sizeof(*data));
837 e = der_match_tag_and_length (p, len, UNIV, CONS, UT_Sequence,&reallen, &l);
841 if((dce_fix = fix_dce(reallen, &len)) < 0)
842 return ASN1_BAD_FORMAT;
844 size_t newlen, oldlen;
846 e = der_match_tag (p, len, Der_CONTEXT, CONS, 0, &l);
853 e = der_get_length (p, len, &newlen, &l);
858 if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT;
859 e = decode_integer(p, len, &(data)->addr_type, &l);
862 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
865 len = oldlen - newlen;
870 size_t newlen, oldlen;
872 e = der_match_tag (p, len, Der_CONTEXT, CONS, 1, &l);
879 e = der_get_length (p, len, &newlen, &l);
884 if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT;
885 e = decode_octet_string(p, len, &(data)->address, &l);
888 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
891 len = oldlen - newlen;
896 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
900 if(size) *size = ret;
903 free_HostAddress(data);
908 free_HostAddress(HostAddress *data)
910 free_octet_string(&(data)->address);
914 length_HostAddress(const HostAddress *data)
920 ret += length_integer(&(data)->addr_type);
921 ret += 1 + length_len(ret) + oldret;
926 ret += length_octet_string(&(data)->address);
927 ret += 1 + length_len(ret) + oldret;
929 ret += 1 + length_len(ret);
934 copy_HostAddress(const HostAddress *from, HostAddress *to)
936 *(&(to)->addr_type) = *(&(from)->addr_type);
937 if(copy_octet_string(&(from)->address, &(to)->address)) return ENOMEM;
941 /* Generated from /home/lha/src/cvs/heimdal/lib/asn1/k5.asn1 */
949 #include <asn1_err.h>
951 #define BACK if (e) return e; p -= l; len -= l; ret += l
954 encode_AuthorizationData(unsigned char *p, size_t len, const AuthorizationData *data, size_t *size)
961 for(i = (data)->len - 1; i >= 0; --i) {
967 e = encode_octet_string(p, len, &(&(data)->val[i])->ad_data, &l);
969 e = der_put_length_and_tag (p, len, ret, Der_CONTEXT, CONS, 1, &l);
976 e = encode_integer(p, len, &(&(data)->val[i])->ad_type, &l);
978 e = der_put_length_and_tag (p, len, ret, Der_CONTEXT, CONS, 0, &l);
982 e = der_put_length_and_tag (p, len, ret, UNIV, CONS, UT_Sequence, &l);
986 e = der_put_length_and_tag (p, len, ret, UNIV, CONS, UT_Sequence, &l);
992 #define FORW if(e) goto fail; p += l; len -= l; ret += l
995 decode_AuthorizationData(const unsigned char *p, size_t len, AuthorizationData *data, size_t *size)
997 size_t ret = 0, reallen;
1001 memset(data, 0, sizeof(*data));
1003 e = der_match_tag_and_length (p, len, UNIV, CONS, UT_Sequence,&reallen, &l);
1006 return ASN1_OVERRUN;
1009 size_t origlen = len;
1014 while(ret < origlen) {
1016 (data)->val = realloc((data)->val, sizeof(*((data)->val)) * (data)->len);
1017 e = der_match_tag_and_length (p, len, UNIV, CONS, UT_Sequence,&reallen, &l);
1021 if((dce_fix = fix_dce(reallen, &len)) < 0)
1022 return ASN1_BAD_FORMAT;
1024 size_t newlen, oldlen;
1026 e = der_match_tag (p, len, Der_CONTEXT, CONS, 0, &l);
1033 e = der_get_length (p, len, &newlen, &l);
1038 if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT;
1039 e = decode_integer(p, len, &(&(data)->val[(data)->len-1])->ad_type, &l);
1042 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
1045 len = oldlen - newlen;
1050 size_t newlen, oldlen;
1052 e = der_match_tag (p, len, Der_CONTEXT, CONS, 1, &l);
1059 e = der_get_length (p, len, &newlen, &l);
1064 if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT;
1065 e = decode_octet_string(p, len, &(&(data)->val[(data)->len-1])->ad_data, &l);
1068 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
1071 len = oldlen - newlen;
1076 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
1080 len = origlen - ret;
1084 if(size) *size = ret;
1087 free_AuthorizationData(data);
1092 free_AuthorizationData(AuthorizationData *data)
1095 free_octet_string(&(&(data)->val[(data)->len-1])->ad_data);
1102 length_AuthorizationData(const AuthorizationData *data)
1109 for(i = (data)->len - 1; i >= 0; --i){
1113 ret += length_integer(&(&(data)->val[i])->ad_type);
1114 ret += 1 + length_len(ret) + oldret;
1119 ret += length_octet_string(&(&(data)->val[i])->ad_data);
1120 ret += 1 + length_len(ret) + oldret;
1122 ret += 1 + length_len(ret);
1124 ret += 1 + length_len(ret) + oldret;
1130 copy_AuthorizationData(const AuthorizationData *from, AuthorizationData *to)
1132 if(((to)->val = malloc((from)->len * sizeof(*(to)->val))) == NULL && (from)->len != 0)
1134 for((to)->len = 0; (to)->len < (from)->len; (to)->len++){
1135 *(&(&(to)->val[(to)->len])->ad_type) = *(&(&(from)->val[(to)->len])->ad_type);
1136 if(copy_octet_string(&(&(from)->val[(to)->len])->ad_data, &(&(to)->val[(to)->len])->ad_data)) return ENOMEM;
1141 /* Generated from /home/lha/src/cvs/heimdal/lib/asn1/k5.asn1 */
1149 #include <asn1_err.h>
1151 #define BACK if (e) return e; p -= l; len -= l; ret += l
1154 encode_EncTicketPart(unsigned char *p, size_t len, const EncTicketPart *data, size_t *size)
1161 if((data)->authorization_data)
1165 e = encode_AuthorizationData(p, len, (data)->authorization_data, &l);
1167 e = der_put_length_and_tag (p, len, ret, Der_CONTEXT, CONS, 10, &l);
1175 e = encode_HostAddresses(p, len, (data)->caddr, &l);
1177 e = der_put_length_and_tag (p, len, ret, Der_CONTEXT, CONS, 9, &l);
1181 if((data)->renew_till)
1185 e = encode_KerberosTime(p, len, (data)->renew_till, &l);
1187 e = der_put_length_and_tag (p, len, ret, Der_CONTEXT, CONS, 8, &l);
1194 e = encode_KerberosTime(p, len, &(data)->endtime, &l);
1196 e = der_put_length_and_tag (p, len, ret, Der_CONTEXT, CONS, 7, &l);
1200 if((data)->starttime)
1204 e = encode_KerberosTime(p, len, (data)->starttime, &l);
1206 e = der_put_length_and_tag (p, len, ret, Der_CONTEXT, CONS, 6, &l);
1213 e = encode_KerberosTime(p, len, &(data)->authtime, &l);
1215 e = der_put_length_and_tag (p, len, ret, Der_CONTEXT, CONS, 5, &l);
1222 e = encode_TransitedEncoding(p, len, &(data)->transited, &l);
1224 e = der_put_length_and_tag (p, len, ret, Der_CONTEXT, CONS, 4, &l);
1231 e = encode_PrincipalName(p, len, &(data)->cname, &l);
1233 e = der_put_length_and_tag (p, len, ret, Der_CONTEXT, CONS, 3, &l);
1240 e = encode_Realm(p, len, &(data)->crealm, &l);
1242 e = der_put_length_and_tag (p, len, ret, Der_CONTEXT, CONS, 2, &l);
1249 e = encode_EncryptionKey(p, len, &(data)->key, &l);
1251 e = der_put_length_and_tag (p, len, ret, Der_CONTEXT, CONS, 1, &l);
1258 e = encode_TicketFlags(p, len, &(data)->flags, &l);
1260 e = der_put_length_and_tag (p, len, ret, Der_CONTEXT, CONS, 0, &l);
1264 e = der_put_length_and_tag (p, len, ret, UNIV, CONS, UT_Sequence, &l);
1266 e = der_put_length_and_tag (p, len, ret, APPL, CONS, 3, &l);
1272 #define FORW if(e) goto fail; p += l; len -= l; ret += l
1275 decode_EncTicketPart(const unsigned char *p, size_t len, EncTicketPart *data, size_t *size)
1277 size_t ret = 0, reallen;
1281 memset(data, 0, sizeof(*data));
1283 e = der_match_tag_and_length (p, len, APPL, CONS, 3, &reallen, &l);
1287 if((dce_fix = fix_dce(reallen, &len)) < 0)
1288 return ASN1_BAD_FORMAT;
1289 e = der_match_tag_and_length (p, len, UNIV, CONS, UT_Sequence,&reallen, &l);
1293 if((dce_fix = fix_dce(reallen, &len)) < 0)
1294 return ASN1_BAD_FORMAT;
1296 size_t newlen, oldlen;
1298 e = der_match_tag (p, len, Der_CONTEXT, CONS, 0, &l);
1305 e = der_get_length (p, len, &newlen, &l);
1310 if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT;
1311 e = decode_TicketFlags(p, len, &(data)->flags, &l);
1314 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
1317 len = oldlen - newlen;
1322 size_t newlen, oldlen;
1324 e = der_match_tag (p, len, Der_CONTEXT, CONS, 1, &l);
1331 e = der_get_length (p, len, &newlen, &l);
1336 if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT;
1337 e = decode_EncryptionKey(p, len, &(data)->key, &l);
1340 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
1343 len = oldlen - newlen;
1348 size_t newlen, oldlen;
1350 e = der_match_tag (p, len, Der_CONTEXT, CONS, 2, &l);
1357 e = der_get_length (p, len, &newlen, &l);
1362 if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT;
1363 e = decode_Realm(p, len, &(data)->crealm, &l);
1366 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
1369 len = oldlen - newlen;
1374 size_t newlen, oldlen;
1376 e = der_match_tag (p, len, Der_CONTEXT, CONS, 3, &l);
1383 e = der_get_length (p, len, &newlen, &l);
1388 if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT;
1389 e = decode_PrincipalName(p, len, &(data)->cname, &l);
1392 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
1395 len = oldlen - newlen;
1400 size_t newlen, oldlen;
1402 e = der_match_tag (p, len, Der_CONTEXT, CONS, 4, &l);
1409 e = der_get_length (p, len, &newlen, &l);
1414 if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT;
1415 e = decode_TransitedEncoding(p, len, &(data)->transited, &l);
1418 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
1421 len = oldlen - newlen;
1426 size_t newlen, oldlen;
1428 e = der_match_tag (p, len, Der_CONTEXT, CONS, 5, &l);
1435 e = der_get_length (p, len, &newlen, &l);
1440 if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT;
1441 e = decode_KerberosTime(p, len, &(data)->authtime, &l);
1444 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
1447 len = oldlen - newlen;
1452 size_t newlen, oldlen;
1454 e = der_match_tag (p, len, Der_CONTEXT, CONS, 6, &l);
1456 (data)->starttime = NULL;
1461 e = der_get_length (p, len, &newlen, &l);
1466 if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT;
1467 (data)->starttime = malloc(sizeof(*(data)->starttime));
1468 if((data)->starttime == NULL) return ENOMEM;
1469 e = decode_KerberosTime(p, len, (data)->starttime, &l);
1472 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
1475 len = oldlen - newlen;
1480 size_t newlen, oldlen;
1482 e = der_match_tag (p, len, Der_CONTEXT, CONS, 7, &l);
1489 e = der_get_length (p, len, &newlen, &l);
1494 if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT;
1495 e = decode_KerberosTime(p, len, &(data)->endtime, &l);
1498 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
1501 len = oldlen - newlen;
1506 size_t newlen, oldlen;
1508 e = der_match_tag (p, len, Der_CONTEXT, CONS, 8, &l);
1510 (data)->renew_till = NULL;
1515 e = der_get_length (p, len, &newlen, &l);
1520 if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT;
1521 (data)->renew_till = malloc(sizeof(*(data)->renew_till));
1522 if((data)->renew_till == NULL) return ENOMEM;
1523 e = decode_KerberosTime(p, len, (data)->renew_till, &l);
1526 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
1529 len = oldlen - newlen;
1534 size_t newlen, oldlen;
1536 e = der_match_tag (p, len, Der_CONTEXT, CONS, 9, &l);
1538 (data)->caddr = NULL;
1543 e = der_get_length (p, len, &newlen, &l);
1548 if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT;
1549 (data)->caddr = malloc(sizeof(*(data)->caddr));
1550 if((data)->caddr == NULL) return ENOMEM;
1551 e = decode_HostAddresses(p, len, (data)->caddr, &l);
1554 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
1557 len = oldlen - newlen;
1562 size_t newlen, oldlen;
1564 e = der_match_tag (p, len, Der_CONTEXT, CONS, 10, &l);
1566 (data)->authorization_data = NULL;
1571 e = der_get_length (p, len, &newlen, &l);
1576 if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT;
1577 (data)->authorization_data = malloc(sizeof(*(data)->authorization_data));
1578 if((data)->authorization_data == NULL) return ENOMEM;
1579 e = decode_AuthorizationData(p, len, (data)->authorization_data, &l);
1582 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
1585 len = oldlen - newlen;
1590 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
1595 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
1599 if(size) *size = ret;
1602 free_EncTicketPart(data);
1607 free_EncTicketPart(EncTicketPart *data)
1609 free_TicketFlags(&(data)->flags);
1610 free_EncryptionKey(&(data)->key);
1611 free_Realm(&(data)->crealm);
1612 free_PrincipalName(&(data)->cname);
1613 free_TransitedEncoding(&(data)->transited);
1614 free_KerberosTime(&(data)->authtime);
1615 if((data)->starttime) {
1616 free_KerberosTime((data)->starttime);
1617 free((data)->starttime);
1619 free_KerberosTime(&(data)->endtime);
1620 if((data)->renew_till) {
1621 free_KerberosTime((data)->renew_till);
1622 free((data)->renew_till);
1625 free_HostAddresses((data)->caddr);
1626 free((data)->caddr);
1628 if((data)->authorization_data) {
1629 free_AuthorizationData((data)->authorization_data);
1630 free((data)->authorization_data);
1635 length_EncTicketPart(const EncTicketPart *data)
1641 ret += length_TicketFlags(&(data)->flags);
1642 ret += 1 + length_len(ret) + oldret;
1647 ret += length_EncryptionKey(&(data)->key);
1648 ret += 1 + length_len(ret) + oldret;
1653 ret += length_Realm(&(data)->crealm);
1654 ret += 1 + length_len(ret) + oldret;
1659 ret += length_PrincipalName(&(data)->cname);
1660 ret += 1 + length_len(ret) + oldret;
1665 ret += length_TransitedEncoding(&(data)->transited);
1666 ret += 1 + length_len(ret) + oldret;
1671 ret += length_KerberosTime(&(data)->authtime);
1672 ret += 1 + length_len(ret) + oldret;
1674 if((data)->starttime){
1677 ret += length_KerberosTime((data)->starttime);
1678 ret += 1 + length_len(ret) + oldret;
1683 ret += length_KerberosTime(&(data)->endtime);
1684 ret += 1 + length_len(ret) + oldret;
1686 if((data)->renew_till){
1689 ret += length_KerberosTime((data)->renew_till);
1690 ret += 1 + length_len(ret) + oldret;
1695 ret += length_HostAddresses((data)->caddr);
1696 ret += 1 + length_len(ret) + oldret;
1698 if((data)->authorization_data){
1701 ret += length_AuthorizationData((data)->authorization_data);
1702 ret += 1 + length_len(ret) + oldret;
1704 ret += 1 + length_len(ret);
1705 ret += 1 + length_len (ret);
1710 copy_EncTicketPart(const EncTicketPart *from, EncTicketPart *to)
1712 if(copy_TicketFlags(&(from)->flags, &(to)->flags)) return ENOMEM;
1713 if(copy_EncryptionKey(&(from)->key, &(to)->key)) return ENOMEM;
1714 if(copy_Realm(&(from)->crealm, &(to)->crealm)) return ENOMEM;
1715 if(copy_PrincipalName(&(from)->cname, &(to)->cname)) return ENOMEM;
1716 if(copy_TransitedEncoding(&(from)->transited, &(to)->transited)) return ENOMEM;
1717 if(copy_KerberosTime(&(from)->authtime, &(to)->authtime)) return ENOMEM;
1718 if((from)->starttime) {
1719 (to)->starttime = malloc(sizeof(*(to)->starttime));
1720 if((to)->starttime == NULL) return ENOMEM;
1721 if(copy_KerberosTime((from)->starttime, (to)->starttime)) return ENOMEM;
1723 (to)->starttime = NULL;
1724 if(copy_KerberosTime(&(from)->endtime, &(to)->endtime)) return ENOMEM;
1725 if((from)->renew_till) {
1726 (to)->renew_till = malloc(sizeof(*(to)->renew_till));
1727 if((to)->renew_till == NULL) return ENOMEM;
1728 if(copy_KerberosTime((from)->renew_till, (to)->renew_till)) return ENOMEM;
1730 (to)->renew_till = NULL;
1732 (to)->caddr = malloc(sizeof(*(to)->caddr));
1733 if((to)->caddr == NULL) return ENOMEM;
1734 if(copy_HostAddresses((from)->caddr, (to)->caddr)) return ENOMEM;
1737 if((from)->authorization_data) {
1738 (to)->authorization_data = malloc(sizeof(*(to)->authorization_data));
1739 if((to)->authorization_data == NULL) return ENOMEM;
1740 if(copy_AuthorizationData((from)->authorization_data, (to)->authorization_data)) return ENOMEM;
1742 (to)->authorization_data = NULL;
1746 /* Generated from /home/lha/src/cvs/heimdal/lib/asn1/k5.asn1 */
1754 #include <asn1_err.h>
1756 #define BACK if (e) return e; p -= l; len -= l; ret += l
1759 encode_KerberosTime(unsigned char *p, size_t len, const KerberosTime *data, size_t *size)
1766 e = encode_generalized_time(p, len, data, &l);
1772 #define FORW if(e) goto fail; p += l; len -= l; ret += l
1775 decode_KerberosTime(const unsigned char *p, size_t len, KerberosTime *data, size_t *size)
1777 size_t ret = 0, reallen;
1781 memset(data, 0, sizeof(*data));
1783 e = decode_generalized_time(p, len, data, &l);
1785 if(size) *size = ret;
1788 free_KerberosTime(data);
1793 free_KerberosTime(KerberosTime *data)
1798 length_KerberosTime(const KerberosTime *data)
1801 ret += length_generalized_time(data);
1806 copy_KerberosTime(const KerberosTime *from, KerberosTime *to)
1812 /* Generated from /home/lha/src/cvs/heimdal/lib/asn1/k5.asn1 */
1820 #include <asn1_err.h>
1822 #define BACK if (e) return e; p -= l; len -= l; ret += l
1825 encode_TransitedEncoding(unsigned char *p, size_t len, const TransitedEncoding *data, size_t *size)
1835 e = encode_octet_string(p, len, &(data)->contents, &l);
1837 e = der_put_length_and_tag (p, len, ret, Der_CONTEXT, CONS, 1, &l);
1844 e = encode_integer(p, len, &(data)->tr_type, &l);
1846 e = der_put_length_and_tag (p, len, ret, Der_CONTEXT, CONS, 0, &l);
1850 e = der_put_length_and_tag (p, len, ret, UNIV, CONS, UT_Sequence, &l);
1856 #define FORW if(e) goto fail; p += l; len -= l; ret += l
1859 decode_TransitedEncoding(const unsigned char *p, size_t len, TransitedEncoding *data, size_t *size)
1861 size_t ret = 0, reallen;
1865 memset(data, 0, sizeof(*data));
1867 e = der_match_tag_and_length (p, len, UNIV, CONS, UT_Sequence,&reallen, &l);
1871 if((dce_fix = fix_dce(reallen, &len)) < 0)
1872 return ASN1_BAD_FORMAT;
1874 size_t newlen, oldlen;
1876 e = der_match_tag (p, len, Der_CONTEXT, CONS, 0, &l);
1883 e = der_get_length (p, len, &newlen, &l);
1888 if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT;
1889 e = decode_integer(p, len, &(data)->tr_type, &l);
1892 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
1895 len = oldlen - newlen;
1900 size_t newlen, oldlen;
1902 e = der_match_tag (p, len, Der_CONTEXT, CONS, 1, &l);
1909 e = der_get_length (p, len, &newlen, &l);
1914 if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT;
1915 e = decode_octet_string(p, len, &(data)->contents, &l);
1918 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
1921 len = oldlen - newlen;
1926 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
1930 if(size) *size = ret;
1933 free_TransitedEncoding(data);
1938 free_TransitedEncoding(TransitedEncoding *data)
1940 free_octet_string(&(data)->contents);
1944 length_TransitedEncoding(const TransitedEncoding *data)
1950 ret += length_integer(&(data)->tr_type);
1951 ret += 1 + length_len(ret) + oldret;
1956 ret += length_octet_string(&(data)->contents);
1957 ret += 1 + length_len(ret) + oldret;
1959 ret += 1 + length_len(ret);
1964 copy_TransitedEncoding(const TransitedEncoding *from, TransitedEncoding *to)
1966 *(&(to)->tr_type) = *(&(from)->tr_type);
1967 if(copy_octet_string(&(from)->contents, &(to)->contents)) return ENOMEM;
1971 /* Generated from /home/lha/src/cvs/heimdal/lib/asn1/k5.asn1 */
1979 #include <asn1_err.h>
1981 #define BACK if (e) return e; p -= l; len -= l; ret += l
1984 encode_EncryptionKey(unsigned char *p, size_t len, const EncryptionKey *data, size_t *size)
1994 e = encode_octet_string(p, len, &(data)->keyvalue, &l);
1996 e = der_put_length_and_tag (p, len, ret, Der_CONTEXT, CONS, 1, &l);
2003 e = encode_integer(p, len, &(data)->keytype, &l);
2005 e = der_put_length_and_tag (p, len, ret, Der_CONTEXT, CONS, 0, &l);
2009 e = der_put_length_and_tag (p, len, ret, UNIV, CONS, UT_Sequence, &l);
2015 #define FORW if(e) goto fail; p += l; len -= l; ret += l
2018 decode_EncryptionKey(const unsigned char *p, size_t len, EncryptionKey *data, size_t *size)
2020 size_t ret = 0, reallen;
2024 memset(data, 0, sizeof(*data));
2026 e = der_match_tag_and_length (p, len, UNIV, CONS, UT_Sequence,&reallen, &l);
2030 if((dce_fix = fix_dce(reallen, &len)) < 0)
2031 return ASN1_BAD_FORMAT;
2033 size_t newlen, oldlen;
2035 e = der_match_tag (p, len, Der_CONTEXT, CONS, 0, &l);
2042 e = der_get_length (p, len, &newlen, &l);
2047 if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT;
2048 e = decode_integer(p, len, &(data)->keytype, &l);
2051 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
2054 len = oldlen - newlen;
2059 size_t newlen, oldlen;
2061 e = der_match_tag (p, len, Der_CONTEXT, CONS, 1, &l);
2068 e = der_get_length (p, len, &newlen, &l);
2073 if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT;
2074 e = decode_octet_string(p, len, &(data)->keyvalue, &l);
2077 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
2080 len = oldlen - newlen;
2085 e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l);
2089 if(size) *size = ret;
2092 free_EncryptionKey(data);
2097 free_EncryptionKey(EncryptionKey *data)
2099 free_octet_string(&(data)->keyvalue);
2103 length_EncryptionKey(const EncryptionKey *data)
2109 ret += length_integer(&(data)->keytype);
2110 ret += 1 + length_len(ret) + oldret;
2115 ret += length_octet_string(&(data)->keyvalue);
2116 ret += 1 + length_len(ret) + oldret;
2118 ret += 1 + length_len(ret);
2123 copy_EncryptionKey(const EncryptionKey *from, EncryptionKey *to)
2125 *(&(to)->keytype) = *(&(from)->keytype);
2126 if(copy_octet_string(&(from)->keyvalue, &(to)->keyvalue)) return ENOMEM;
2130 /* Generated from /home/lha/src/cvs/heimdal/lib/asn1/k5.asn1 */
2138 #include <asn1_err.h>
2140 #define BACK if (e) return e; p -= l; len -= l; ret += l
2143 encode_TicketFlags(unsigned char *p, size_t len, const TicketFlags *data, size_t *size)
2151 unsigned char c = 0;
2152 *p-- = c; len--; ret++;
2154 *p-- = c; len--; ret++;
2156 if(data->anonymous) c |= 1<<1;
2157 if(data->ok_as_delegate) c |= 1<<2;
2158 if(data->transited_policy_checked) c |= 1<<3;
2159 if(data->hw_authent) c |= 1<<4;
2160 if(data->pre_authent) c |= 1<<5;
2161 if(data->initial) c |= 1<<6;
2162 if(data->renewable) c |= 1<<7;
2163 *p-- = c; len--; ret++;
2165 if(data->invalid) c |= 1<<0;
2166 if(data->postdated) c |= 1<<1;
2167 if(data->may_postdate) c |= 1<<2;
2168 if(data->proxy) c |= 1<<3;
2169 if(data->proxiable) c |= 1<<4;
2170 if(data->forwarded) c |= 1<<5;
2171 if(data->forwardable) c |= 1<<6;
2172 if(data->reserved) c |= 1<<7;
2179 e = der_put_length_and_tag (p, len, ret, UNIV, PRIM,UT_BitString, &l);
2185 #define FORW if(e) goto fail; p += l; len -= l; ret += l
2188 decode_TicketFlags(const unsigned char *p, size_t len, TicketFlags *data, size_t *size)
2190 size_t ret = 0, reallen;
2194 memset(data, 0, sizeof(*data));
2196 e = der_match_tag_and_length (p, len, UNIV, PRIM, UT_BitString,&reallen, &l);
2199 return ASN1_OVERRUN;
2204 data->reserved = (*p >> 7) & 1;
2205 data->forwardable = (*p >> 6) & 1;
2206 data->forwarded = (*p >> 5) & 1;
2207 data->proxiable = (*p >> 4) & 1;
2208 data->proxy = (*p >> 3) & 1;
2209 data->may_postdate = (*p >> 2) & 1;
2210 data->postdated = (*p >> 1) & 1;
2211 data->invalid = (*p >> 0) & 1;
2212 p++; len--; reallen--; ret++;
2213 data->renewable = (*p >> 7) & 1;
2214 data->initial = (*p >> 6) & 1;
2215 data->pre_authent = (*p >> 5) & 1;
2216 data->hw_authent = (*p >> 4) & 1;
2217 data->transited_policy_checked = (*p >> 3) & 1;
2218 data->ok_as_delegate = (*p >> 2) & 1;
2219 data->anonymous = (*p >> 1) & 1;
2220 p += reallen; len -= reallen; ret += reallen;
2221 if(size) *size = ret;
2224 free_TicketFlags(data);
2229 free_TicketFlags(TicketFlags *data)
2234 length_TicketFlags(const TicketFlags *data)
2242 copy_TicketFlags(const TicketFlags *from, TicketFlags *to)
2248 unsigned TicketFlags2int(TicketFlags f)
2251 if(f.reserved) r |= (1U << 0);
2252 if(f.forwardable) r |= (1U << 1);
2253 if(f.forwarded) r |= (1U << 2);
2254 if(f.proxiable) r |= (1U << 3);
2255 if(f.proxy) r |= (1U << 4);
2256 if(f.may_postdate) r |= (1U << 5);
2257 if(f.postdated) r |= (1U << 6);
2258 if(f.invalid) r |= (1U << 7);
2259 if(f.renewable) r |= (1U << 8);
2260 if(f.initial) r |= (1U << 9);
2261 if(f.pre_authent) r |= (1U << 10);
2262 if(f.hw_authent) r |= (1U << 11);
2263 if(f.transited_policy_checked) r |= (1U << 12);
2264 if(f.ok_as_delegate) r |= (1U << 13);
2265 if(f.anonymous) r |= (1U << 14);
2269 TicketFlags int2TicketFlags(unsigned n)
2273 flags.reserved = (n >> 0) & 1;
2274 flags.forwardable = (n >> 1) & 1;
2275 flags.forwarded = (n >> 2) & 1;
2276 flags.proxiable = (n >> 3) & 1;
2277 flags.proxy = (n >> 4) & 1;
2278 flags.may_postdate = (n >> 5) & 1;
2279 flags.postdated = (n >> 6) & 1;
2280 flags.invalid = (n >> 7) & 1;
2281 flags.renewable = (n >> 8) & 1;
2282 flags.initial = (n >> 9) & 1;
2283 flags.pre_authent = (n >> 10) & 1;
2284 flags.hw_authent = (n >> 11) & 1;
2285 flags.transited_policy_checked = (n >> 12) & 1;
2286 flags.ok_as_delegate = (n >> 13) & 1;
2287 flags.anonymous = (n >> 14) & 1;
2292 /* Generated from /home/lha/src/cvs/heimdal/lib/asn1/k5.asn1 */
2300 #include <asn1_err.h>
2302 #define BACK if (e) return e; p -= l; len -= l; ret += l
2305 encode_Realm(unsigned char *p, size_t len, const Realm *data, size_t *size)
2312 e = encode_general_string(p, len, data, &l);
2318 #define FORW if(e) goto fail; p += l; len -= l; ret += l
2321 decode_Realm(const unsigned char *p, size_t len, Realm *data, size_t *size)
2323 size_t ret = 0, reallen;
2327 memset(data, 0, sizeof(*data));
2329 e = decode_general_string(p, len, data, &l);
2331 if(size) *size = ret;
2339 free_Realm(Realm *data)
2341 free_general_string(data);
2345 length_Realm(const Realm *data)
2348 ret += length_general_string(data);
2353 copy_Realm(const Realm *from, Realm *to)
2355 if(copy_general_string(from, to)) return ENOMEM;
2359 /* Generated from /home/lha/src/cvs/heimdal/lib/asn1/k5.asn1 */
2367 #include <asn1_err.h>
2369 #define BACK if (e) return e; p -= l; len -= l; ret += l
2372 encode_ENCTYPE(unsigned char *p, size_t len, const ENCTYPE *data, size_t *size)
2379 e = encode_integer(p, len, (const int*)data, &l);
2385 #define FORW if(e) goto fail; p += l; len -= l; ret += l
2388 decode_ENCTYPE(const unsigned char *p, size_t len, ENCTYPE *data, size_t *size)
2390 size_t ret = 0, reallen;
2394 memset(data, 0, sizeof(*data));
2396 e = decode_integer(p, len, (int*)data, &l);
2398 if(size) *size = ret;
2406 free_ENCTYPE(ENCTYPE *data)
2411 length_ENCTYPE(const ENCTYPE *data)
2414 ret += length_integer((const int*)data);
2419 copy_ENCTYPE(const ENCTYPE *from, ENCTYPE *to)
2425 /* Generated from /home/lha/src/cvs/heimdal/lib/asn1/k5.asn1 */
2433 #include <asn1_err.h>
2435 #define BACK if (e) return e; p -= l; len -= l; ret += l
2438 encode_NAME_TYPE(unsigned char *p, size_t len, const NAME_TYPE *data, size_t *size)
2445 e = encode_integer(p, len, (const int*)data, &l);
2451 #define FORW if(e) goto fail; p += l; len -= l; ret += l
2454 decode_NAME_TYPE(const unsigned char *p, size_t len, NAME_TYPE *data, size_t *size)
2456 size_t ret = 0, reallen;
2460 memset(data, 0, sizeof(*data));
2462 e = decode_integer(p, len, (int*)data, &l);
2464 if(size) *size = ret;
2467 free_NAME_TYPE(data);
2472 free_NAME_TYPE(NAME_TYPE *data)
2477 length_NAME_TYPE(const NAME_TYPE *data)
2480 ret += length_integer((const int*)data);
2485 copy_NAME_TYPE(const NAME_TYPE *from, NAME_TYPE *to)