1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.directory.shared.kerberos.codec.encKrbPrivPart;
21
22
23 import org.apache.directory.api.asn1.actions.CheckNotNullLength;
24 import org.apache.directory.api.asn1.ber.grammar.AbstractGrammar;
25 import org.apache.directory.api.asn1.ber.grammar.Grammar;
26 import org.apache.directory.api.asn1.ber.grammar.GrammarTransition;
27 import org.apache.directory.api.asn1.ber.tlv.UniversalTag;
28 import org.apache.directory.shared.kerberos.KerberosConstants;
29 import org.apache.directory.shared.kerberos.codec.encKrbPrivPart.actions.EncKrbPrivPartInit;
30 import org.apache.directory.shared.kerberos.codec.encKrbPrivPart.actions.StoreRecipientAddress;
31 import org.apache.directory.shared.kerberos.codec.encKrbPrivPart.actions.StoreSenderAddress;
32 import org.apache.directory.shared.kerberos.codec.encKrbPrivPart.actions.StoreSeqNumber;
33 import org.apache.directory.shared.kerberos.codec.encKrbPrivPart.actions.StoreTimestamp;
34 import org.apache.directory.shared.kerberos.codec.encKrbPrivPart.actions.StoreUsec;
35 import org.apache.directory.shared.kerberos.codec.encKrbPrivPart.actions.StoreUserData;
36 import org.slf4j.Logger;
37 import org.slf4j.LoggerFactory;
38
39
40
41
42
43
44
45
46
47 public final class EncKrbPrivPartGrammar extends AbstractGrammar<EncKrbPrivPartContainer>
48 {
49
50 static final Logger LOG = LoggerFactory.getLogger( EncKrbPrivPartGrammar.class );
51
52
53 static final boolean IS_DEBUG = LOG.isDebugEnabled();
54
55
56 private static Grammar<EncKrbPrivPartContainer> instance = new EncKrbPrivPartGrammar();
57
58
59
60
61
62 @SuppressWarnings("unchecked")
63 private EncKrbPrivPartGrammar()
64 {
65 setName( EncKrbPrivPartGrammar.class.getName() );
66
67
68 super.transitions = new GrammarTransition[EncKrbPrivPartStatesEnum.LAST_ENC_KRB_PRIV_PART_STATE.ordinal()][256];
69
70
71
72
73
74
75
76
77 super.transitions[EncKrbPrivPartStatesEnum.START_STATE.ordinal()][KerberosConstants.ENC_KRB_PRIV_PART_TAG] =
78 new GrammarTransition<EncKrbPrivPartContainer>(
79 EncKrbPrivPartStatesEnum.START_STATE,
80 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_TAG_STATE,
81 KerberosConstants.ENC_KRB_PRIV_PART_TAG,
82 new EncKrbPrivPartInit() );
83
84
85
86
87
88 super.transitions[EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_TAG_STATE.ordinal()][UniversalTag.SEQUENCE
89 .getValue()] =
90 new GrammarTransition<EncKrbPrivPartContainer>(
91 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_TAG_STATE,
92 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_SEQ_TAG_STATE,
93 UniversalTag.SEQUENCE,
94 new CheckNotNullLength<EncKrbPrivPartContainer>() );
95
96
97
98
99
100
101 super.transitions[EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_SEQ_TAG_STATE.ordinal()][KerberosConstants.ENC_KRB_PRIV_PART_USER_DATA_TAG] =
102 new GrammarTransition<EncKrbPrivPartContainer>(
103 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_SEQ_TAG_STATE,
104 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_USER_DATA_TAG_STATE,
105 KerberosConstants.ENC_KRB_PRIV_PART_USER_DATA_TAG,
106 new CheckNotNullLength<EncKrbPrivPartContainer>() );
107
108
109
110
111
112
113 super.transitions[EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_USER_DATA_TAG_STATE.ordinal()][UniversalTag.OCTET_STRING
114 .getValue()] =
115 new GrammarTransition<EncKrbPrivPartContainer>(
116 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_USER_DATA_TAG_STATE,
117 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_USER_DATA_STATE,
118 UniversalTag.OCTET_STRING,
119 new StoreUserData() );
120
121
122
123
124
125
126 super.transitions[EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_USER_DATA_STATE.ordinal()][KerberosConstants.ENC_KRB_PRIV_PART_TIMESTAMP_TAG] =
127 new GrammarTransition<EncKrbPrivPartContainer>(
128 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_USER_DATA_STATE,
129 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_TIMESTAMP_TAG_STATE,
130 KerberosConstants.ENC_KRB_PRIV_PART_TIMESTAMP_TAG,
131 new CheckNotNullLength<EncKrbPrivPartContainer>() );
132
133
134
135
136
137
138 super.transitions[EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_TIMESTAMP_TAG_STATE.ordinal()][UniversalTag.GENERALIZED_TIME
139 .getValue()] =
140 new GrammarTransition<EncKrbPrivPartContainer>(
141 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_TIMESTAMP_TAG_STATE,
142 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_TIMESTAMP_STATE,
143 UniversalTag.GENERALIZED_TIME,
144 new StoreTimestamp() );
145
146
147
148
149
150
151 super.transitions[EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_TIMESTAMP_STATE.ordinal()][KerberosConstants.ENC_KRB_PRIV_PART_USEC_TAG] =
152 new GrammarTransition<EncKrbPrivPartContainer>(
153 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_TIMESTAMP_STATE,
154 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_USEC_TAG_STATE,
155 KerberosConstants.ENC_KRB_PRIV_PART_USEC_TAG,
156 new CheckNotNullLength<EncKrbPrivPartContainer>() );
157
158
159
160
161
162
163 super.transitions[EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_USEC_TAG_STATE.ordinal()][UniversalTag.INTEGER
164 .getValue()] =
165 new GrammarTransition<EncKrbPrivPartContainer>(
166 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_USEC_TAG_STATE,
167 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_USEC_STATE,
168 UniversalTag.INTEGER,
169 new StoreUsec() );
170
171
172
173
174
175
176 super.transitions[EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_USEC_STATE.ordinal()][KerberosConstants.ENC_KRB_PRIV_PART_SEQ_NUMBER_TAG] =
177 new GrammarTransition<EncKrbPrivPartContainer>(
178 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_USEC_STATE,
179 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_SEQ_NUMBER_TAG_STATE,
180 KerberosConstants.ENC_KRB_PRIV_PART_SEQ_NUMBER_TAG,
181 new CheckNotNullLength<EncKrbPrivPartContainer>() );
182
183
184
185
186
187
188 super.transitions[EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_SEQ_NUMBER_TAG_STATE.ordinal()][UniversalTag.INTEGER
189 .getValue()] =
190 new GrammarTransition<EncKrbPrivPartContainer>(
191 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_SEQ_NUMBER_TAG_STATE,
192 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_SEQ_NUMBER_STATE,
193 UniversalTag.INTEGER,
194 new StoreSeqNumber() );
195
196
197
198
199
200
201 super.transitions[EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_SEQ_NUMBER_STATE.ordinal()][KerberosConstants.ENC_KRB_PRIV_PART_SENDER_ADDRESS_TAG] =
202 new GrammarTransition<EncKrbPrivPartContainer>(
203 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_SEQ_NUMBER_STATE,
204 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_SENDER_ADDRESS_TAG_STATE,
205 KerberosConstants.ENC_KRB_PRIV_PART_SENDER_ADDRESS_TAG,
206 new StoreSenderAddress() );
207
208
209
210
211
212
213 super.transitions[EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_SENDER_ADDRESS_TAG_STATE.ordinal()][KerberosConstants.ENC_KRB_PRIV_PART_RECIPIENT_ADDRESS_TAG] =
214 new GrammarTransition<EncKrbPrivPartContainer>(
215 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_SENDER_ADDRESS_TAG_STATE,
216 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_RECIPIENT_ADDRESS_TAG_STATE,
217 KerberosConstants.ENC_KRB_PRIV_PART_RECIPIENT_ADDRESS_TAG,
218 new StoreRecipientAddress() );
219
220
221
222
223
224
225
226
227 super.transitions[EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_USER_DATA_STATE.ordinal()][KerberosConstants.ENC_KRB_PRIV_PART_USEC_TAG] =
228 new GrammarTransition<EncKrbPrivPartContainer>(
229 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_USER_DATA_STATE,
230 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_USEC_TAG_STATE,
231 KerberosConstants.ENC_KRB_PRIV_PART_USEC_TAG,
232 new CheckNotNullLength<EncKrbPrivPartContainer>() );
233
234
235
236
237
238
239 super.transitions[EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_USER_DATA_STATE.ordinal()][KerberosConstants.ENC_KRB_PRIV_PART_SEQ_NUMBER_TAG] =
240 new GrammarTransition<EncKrbPrivPartContainer>(
241 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_USER_DATA_STATE,
242 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_SEQ_NUMBER_TAG_STATE,
243 KerberosConstants.ENC_KRB_PRIV_PART_SEQ_NUMBER_TAG,
244 new CheckNotNullLength<EncKrbPrivPartContainer>() );
245
246
247
248
249
250
251 super.transitions[EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_USER_DATA_STATE.ordinal()][KerberosConstants.ENC_KRB_PRIV_PART_SENDER_ADDRESS_TAG] =
252 new GrammarTransition<EncKrbPrivPartContainer>(
253 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_USER_DATA_STATE,
254 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_SENDER_ADDRESS_TAG_STATE,
255 KerberosConstants.ENC_KRB_PRIV_PART_SENDER_ADDRESS_TAG,
256 new StoreSenderAddress() );
257
258
259
260
261
262
263 super.transitions[EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_TIMESTAMP_STATE.ordinal()][KerberosConstants.ENC_KRB_PRIV_PART_SEQ_NUMBER_TAG] =
264 new GrammarTransition<EncKrbPrivPartContainer>(
265 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_TIMESTAMP_STATE,
266 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_SEQ_NUMBER_TAG_STATE,
267 KerberosConstants.ENC_KRB_PRIV_PART_SEQ_NUMBER_TAG,
268 new CheckNotNullLength<EncKrbPrivPartContainer>() );
269
270
271
272
273
274
275 super.transitions[EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_TIMESTAMP_STATE.ordinal()][KerberosConstants.ENC_KRB_PRIV_PART_SENDER_ADDRESS_TAG] =
276 new GrammarTransition<EncKrbPrivPartContainer>(
277 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_TIMESTAMP_STATE,
278 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_SENDER_ADDRESS_TAG_STATE,
279 KerberosConstants.ENC_KRB_PRIV_PART_SENDER_ADDRESS_TAG,
280 new StoreSenderAddress() );
281
282
283
284
285
286
287 super.transitions[EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_USEC_STATE.ordinal()][KerberosConstants.ENC_KRB_PRIV_PART_SENDER_ADDRESS_TAG] =
288 new GrammarTransition<EncKrbPrivPartContainer>(
289 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_USEC_STATE,
290 EncKrbPrivPartStatesEnum.ENC_KRB_PRIV_PART_SENDER_ADDRESS_TAG_STATE,
291 KerberosConstants.ENC_KRB_PRIV_PART_SENDER_ADDRESS_TAG,
292 new StoreSenderAddress() );
293 }
294
295
296
297
298
299
300
301 public static Grammar<EncKrbPrivPartContainer> getInstance()
302 {
303 return instance;
304 }
305 }