Conf file is now in source tree
[mod_auth_kerb.cvs/.git] / spnegokrb5 / asn1_ContextFlags.c
1 /* Generated from spnego.asn1 */
2 /* Do not edit */
3
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include <time.h>
7 #include <string.h>
8 #include <errno.h>
9 #include <spnego_asn1.h>
10 #include <asn1_err.h>
11 #include <der.h>
12 #include <parse_units.h>
13
14 #define BACK if (e) return e; p -= l; len -= l; ret += l
15
16 int
17 encode_ContextFlags(unsigned char *p, size_t len, const ContextFlags *data, size_t *size)
18 {
19 size_t ret = 0;
20 size_t l;
21 int i, e;
22
23 i = 0;
24 {
25 unsigned char c = 0;
26 *p-- = c; len--; ret++;
27 c = 0;
28 *p-- = c; len--; ret++;
29 c = 0;
30 *p-- = c; len--; ret++;
31 c = 0;
32 if(data->integFlag) c |= 1<<1;
33 if(data->confFlag) c |= 1<<2;
34 if(data->anonFlag) c |= 1<<3;
35 if(data->sequenceFlag) c |= 1<<4;
36 if(data->replayFlag) c |= 1<<5;
37 if(data->mutualFlag) c |= 1<<6;
38 if(data->delegFlag) c |= 1<<7;
39 *p-- = c;
40 *p-- = 0;
41 len -= 2;
42 ret += 2;
43 }
44
45 e = der_put_length_and_tag (p, len, ret, UNIV, PRIM,UT_BitString, &l);
46 BACK;
47 *size = ret;
48 return 0;
49 }
50
51 #define FORW if(e) goto fail; p += l; len -= l; ret += l
52
53 int
54 decode_ContextFlags(const unsigned char *p, size_t len, ContextFlags *data, size_t *size)
55 {
56 size_t ret = 0, reallen;
57 size_t l;
58 int e;
59
60 memset(data, 0, sizeof(*data));
61 reallen = 0;
62 e = der_match_tag_and_length (p, len, UNIV, PRIM, UT_BitString,&reallen, &l);
63 FORW;
64 if(len < reallen)
65 return ASN1_OVERRUN;
66 p++;
67 len--;
68 reallen--;
69 ret++;
70 data->delegFlag = (*p >> 7) & 1;
71 data->mutualFlag = (*p >> 6) & 1;
72 data->replayFlag = (*p >> 5) & 1;
73 data->sequenceFlag = (*p >> 4) & 1;
74 data->anonFlag = (*p >> 3) & 1;
75 data->confFlag = (*p >> 2) & 1;
76 data->integFlag = (*p >> 1) & 1;
77 p += reallen; len -= reallen; ret += reallen;
78 if(size) *size = ret;
79 return 0;
80 fail:
81 free_ContextFlags(data);
82 return e;
83 }
84
85 void
86 free_ContextFlags(ContextFlags *data)
87 {
88 }
89
90 size_t
91 length_ContextFlags(const ContextFlags *data)
92 {
93 size_t ret = 0;
94 ret += 7;
95 return ret;
96 }
97
98 int
99 copy_ContextFlags(const ContextFlags *from, ContextFlags *to)
100 {
101 *(to) = *(from);
102 return 0;
103 }
104
105 unsigned ContextFlags2int(ContextFlags f)
106 {
107 unsigned r = 0;
108 if(f.delegFlag) r |= (1U << 0);
109 if(f.mutualFlag) r |= (1U << 1);
110 if(f.replayFlag) r |= (1U << 2);
111 if(f.sequenceFlag) r |= (1U << 3);
112 if(f.anonFlag) r |= (1U << 4);
113 if(f.confFlag) r |= (1U << 5);
114 if(f.integFlag) r |= (1U << 6);
115 return r;
116 }
117
118 ContextFlags int2ContextFlags(unsigned n)
119 {
120         ContextFlags flags;
121
122         flags.delegFlag = (n >> 0) & 1;
123         flags.mutualFlag = (n >> 1) & 1;
124         flags.replayFlag = (n >> 2) & 1;
125         flags.sequenceFlag = (n >> 3) & 1;
126         flags.anonFlag = (n >> 4) & 1;
127         flags.confFlag = (n >> 5) & 1;
128         flags.integFlag = (n >> 6) & 1;
129         return flags;
130 }
131
132 struct units ContextFlags_units[] = {
133         {"integFlag",   1U << 6},
134         {"confFlag",    1U << 5},
135         {"anonFlag",    1U << 4},
136         {"sequenceFlag",        1U << 3},
137         {"replayFlag",  1U << 2},
138         {"mutualFlag",  1U << 1},
139         {"delegFlag",   1U << 0},
140         {NULL,  0}
141 };
142