1 /* Generated from spnego.asn1 */
9 #include <spnego_asn1.h>
12 #include <parse_units.h>
14 #define BACK if (e) return e; p -= l; len -= l; ret += l
17 encode_ContextFlags(unsigned char *p, size_t len, const ContextFlags *data, size_t *size)
26 *p-- = c; len--; ret++;
28 *p-- = c; len--; ret++;
30 *p-- = c; len--; ret++;
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;
45 e = der_put_length_and_tag (p, len, ret, UNIV, PRIM,UT_BitString, &l);
51 #define FORW if(e) goto fail; p += l; len -= l; ret += l
54 decode_ContextFlags(const unsigned char *p, size_t len, ContextFlags *data, size_t *size)
56 size_t ret = 0, reallen;
60 memset(data, 0, sizeof(*data));
62 e = der_match_tag_and_length (p, len, UNIV, PRIM, UT_BitString,&reallen, &l);
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;
81 free_ContextFlags(data);
86 free_ContextFlags(ContextFlags *data)
91 length_ContextFlags(const ContextFlags *data)
99 copy_ContextFlags(const ContextFlags *from, ContextFlags *to)
105 unsigned ContextFlags2int(ContextFlags f)
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);
118 ContextFlags int2ContextFlags(unsigned n)
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;
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},