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.encKrbCredPart;
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.encKrbCredPart.actions.EncKrbCredPartInit;
30 import org.apache.directory.shared.kerberos.codec.encKrbCredPart.actions.StoreNonce;
31 import org.apache.directory.shared.kerberos.codec.encKrbCredPart.actions.StoreRecipientAddress;
32 import org.apache.directory.shared.kerberos.codec.encKrbCredPart.actions.StoreSenderAddress;
33 import org.apache.directory.shared.kerberos.codec.encKrbCredPart.actions.StoreTicketInfo;
34 import org.apache.directory.shared.kerberos.codec.encKrbCredPart.actions.StoreTimestamp;
35 import org.apache.directory.shared.kerberos.codec.encKrbCredPart.actions.StoreUsec;
36 import org.slf4j.Logger;
37 import org.slf4j.LoggerFactory;
38
39
40
41
42
43
44
45
46
47 public final class EncKrbCredPartGrammar extends AbstractGrammar<EncKrbCredPartContainer>
48 {
49
50 static final Logger LOG = LoggerFactory.getLogger( EncKrbCredPartGrammar.class );
51
52
53 static final boolean IS_DEBUG = LOG.isDebugEnabled();
54
55
56 private static Grammar<EncKrbCredPartContainer> instance = new EncKrbCredPartGrammar();
57
58
59
60
61
62 @SuppressWarnings("unchecked")
63 private EncKrbCredPartGrammar()
64 {
65 setName( EncKrbCredPartGrammar.class.getName() );
66
67
68 super.transitions = new GrammarTransition[EncKrbCredPartStatesEnum.LAST_ENC_KRB_CRED_PART_STATE.ordinal()][256];
69
70
71
72
73 super.transitions[EncKrbCredPartStatesEnum.START_STATE.ordinal()][KerberosConstants.ENC_KRB_CRED_PART_TAG] =
74 new GrammarTransition<EncKrbCredPartContainer>(
75 EncKrbCredPartStatesEnum.START_STATE, EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TAG_STATE,
76 KerberosConstants.ENC_KRB_CRED_PART_TAG,
77 new EncKrbCredPartInit() );
78
79 super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TAG_STATE.ordinal()][UniversalTag.SEQUENCE
80 .getValue()] =
81 new GrammarTransition<EncKrbCredPartContainer>(
82 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TAG_STATE,
83 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_SEQ_TAG_STATE,
84 UniversalTag.SEQUENCE,
85 new CheckNotNullLength<EncKrbCredPartContainer>() );
86
87 super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_SEQ_TAG_STATE.ordinal()][KerberosConstants.ENC_KRB_CRED_TICKET_INFO_TAG] =
88 new GrammarTransition<EncKrbCredPartContainer>(
89 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_SEQ_TAG_STATE,
90 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TICKET_INFO_TAG_STATE,
91 KerberosConstants.ENC_KRB_CRED_TICKET_INFO_TAG,
92 new CheckNotNullLength<EncKrbCredPartContainer>() );
93
94 super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TICKET_INFO_TAG_STATE.ordinal()][UniversalTag.SEQUENCE
95 .getValue()] =
96 new GrammarTransition<EncKrbCredPartContainer>(
97 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TICKET_INFO_TAG_STATE,
98 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TICKET_INFO_STATE,
99 UniversalTag.SEQUENCE,
100 new CheckNotNullLength<EncKrbCredPartContainer>() );
101
102 super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TICKET_INFO_STATE.ordinal()][UniversalTag.SEQUENCE
103 .getValue()] =
104 new GrammarTransition<EncKrbCredPartContainer>(
105 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TICKET_INFO_STATE,
106 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TICKET_INFO_STATE,
107 UniversalTag.SEQUENCE,
108 new StoreTicketInfo() );
109
110 super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TICKET_INFO_STATE.ordinal()][KerberosConstants.ENC_KRB_CRED_PART_NONCE_TAG] =
111 new GrammarTransition<EncKrbCredPartContainer>(
112 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TICKET_INFO_STATE,
113 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_NONCE_TAG_STATE,
114 KerberosConstants.ENC_KRB_CRED_PART_NONCE_TAG,
115 new CheckNotNullLength<EncKrbCredPartContainer>() );
116
117 super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_NONCE_TAG_STATE.ordinal()][UniversalTag.INTEGER
118 .getValue()] =
119 new GrammarTransition<EncKrbCredPartContainer>(
120 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_NONCE_TAG_STATE,
121 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_NONCE_STATE,
122 UniversalTag.INTEGER,
123 new StoreNonce() );
124
125 super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_NONCE_STATE.ordinal()][KerberosConstants.ENC_KRB_CRED_PART_TIMESTAMP_TAG] =
126 new GrammarTransition<EncKrbCredPartContainer>(
127 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_NONCE_STATE,
128 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TIMESTAMP_TAG_STATE,
129 KerberosConstants.ENC_KRB_CRED_PART_TIMESTAMP_TAG,
130 new CheckNotNullLength<EncKrbCredPartContainer>() );
131
132 super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TIMESTAMP_TAG_STATE.ordinal()][UniversalTag.GENERALIZED_TIME
133 .getValue()] =
134 new GrammarTransition<EncKrbCredPartContainer>(
135 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TIMESTAMP_TAG_STATE,
136 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TIMESTAMP_STATE,
137 UniversalTag.GENERALIZED_TIME,
138 new StoreTimestamp() );
139
140 super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TIMESTAMP_STATE.ordinal()][KerberosConstants.ENC_KRB_CRED_PART_USEC_TAG] =
141 new GrammarTransition<EncKrbCredPartContainer>(
142 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TIMESTAMP_STATE,
143 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_USEC_TAG_STATE,
144 KerberosConstants.ENC_KRB_CRED_PART_USEC_TAG,
145 new CheckNotNullLength<EncKrbCredPartContainer>() );
146
147 super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_USEC_TAG_STATE.ordinal()][UniversalTag.INTEGER
148 .getValue()] =
149 new GrammarTransition<EncKrbCredPartContainer>(
150 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_USEC_TAG_STATE,
151 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_USEC_STATE,
152 UniversalTag.INTEGER,
153 new StoreUsec() );
154
155 super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_USEC_STATE.ordinal()][KerberosConstants.ENC_KRB_CRED_PART_SENDER_ADDRESS_TAG] =
156 new GrammarTransition<EncKrbCredPartContainer>(
157 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_USEC_STATE,
158 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_SENDER_ADDRESS_TAG_STATE,
159 KerberosConstants.ENC_KRB_CRED_PART_SENDER_ADDRESS_TAG,
160 new StoreSenderAddress() );
161
162 super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_SENDER_ADDRESS_TAG_STATE.ordinal()][KerberosConstants.ENC_KRB_CRED_PART_RECIPIENT_ADDRESS_TAG] =
163 new GrammarTransition<EncKrbCredPartContainer>(
164 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_SENDER_ADDRESS_TAG_STATE,
165 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_RECIPIENT_ADDRESS_TAG_STATE,
166 KerberosConstants.ENC_KRB_CRED_PART_SENDER_ADDRESS_TAG,
167 new StoreRecipientAddress() );
168
169
170 super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TICKET_INFO_STATE.ordinal()][KerberosConstants.ENC_KRB_CRED_PART_TIMESTAMP_TAG] =
171 new GrammarTransition<EncKrbCredPartContainer>(
172 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TICKET_INFO_STATE,
173 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TIMESTAMP_TAG_STATE,
174 KerberosConstants.ENC_KRB_CRED_PART_TIMESTAMP_TAG,
175 new CheckNotNullLength<EncKrbCredPartContainer>() );
176
177 super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TICKET_INFO_STATE.ordinal()][KerberosConstants.ENC_KRB_CRED_PART_USEC_TAG] =
178 new GrammarTransition<EncKrbCredPartContainer>(
179 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TICKET_INFO_STATE,
180 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_USEC_TAG_STATE,
181 KerberosConstants.ENC_KRB_CRED_PART_USEC_TAG,
182 new CheckNotNullLength<EncKrbCredPartContainer>() );
183
184 super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TICKET_INFO_STATE.ordinal()][KerberosConstants.ENC_KRB_CRED_PART_SENDER_ADDRESS_TAG] =
185 new GrammarTransition<EncKrbCredPartContainer>(
186 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TICKET_INFO_STATE,
187 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_SENDER_ADDRESS_TAG_STATE,
188 KerberosConstants.ENC_KRB_CRED_PART_SENDER_ADDRESS_TAG,
189 new StoreSenderAddress() );
190
191 super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TICKET_INFO_STATE.ordinal()][KerberosConstants.ENC_KRB_CRED_PART_RECIPIENT_ADDRESS_TAG] =
192 new GrammarTransition<EncKrbCredPartContainer>(
193 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TICKET_INFO_STATE,
194 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_RECIPIENT_ADDRESS_TAG_STATE,
195 KerberosConstants.ENC_KRB_CRED_PART_RECIPIENT_ADDRESS_TAG,
196 new StoreRecipientAddress() );
197
198 super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_NONCE_STATE.ordinal()][KerberosConstants.ENC_KRB_CRED_PART_USEC_TAG] =
199 new GrammarTransition<EncKrbCredPartContainer>(
200 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_NONCE_STATE,
201 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_USEC_TAG_STATE,
202 KerberosConstants.ENC_KRB_CRED_PART_USEC_TAG,
203 new CheckNotNullLength<EncKrbCredPartContainer>() );
204
205 super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_NONCE_STATE.ordinal()][KerberosConstants.ENC_KRB_CRED_PART_SENDER_ADDRESS_TAG] =
206 new GrammarTransition<EncKrbCredPartContainer>(
207 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_NONCE_STATE,
208 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_SENDER_ADDRESS_TAG_STATE,
209 KerberosConstants.ENC_KRB_CRED_PART_SENDER_ADDRESS_TAG,
210 new StoreSenderAddress() );
211
212 super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_NONCE_STATE.ordinal()][KerberosConstants.ENC_KRB_CRED_PART_RECIPIENT_ADDRESS_TAG] =
213 new GrammarTransition<EncKrbCredPartContainer>(
214 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_NONCE_STATE,
215 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_RECIPIENT_ADDRESS_TAG_STATE,
216 KerberosConstants.ENC_KRB_CRED_PART_RECIPIENT_ADDRESS_TAG,
217 new StoreRecipientAddress() );
218
219 super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TIMESTAMP_STATE.ordinal()][KerberosConstants.ENC_KRB_CRED_PART_SENDER_ADDRESS_TAG] =
220 new GrammarTransition<EncKrbCredPartContainer>(
221 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TIMESTAMP_STATE,
222 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_SENDER_ADDRESS_TAG_STATE,
223 KerberosConstants.ENC_KRB_CRED_PART_SENDER_ADDRESS_TAG,
224 new StoreSenderAddress() );
225
226 super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TIMESTAMP_STATE.ordinal()][KerberosConstants.ENC_KRB_CRED_PART_RECIPIENT_ADDRESS_TAG] =
227 new GrammarTransition<EncKrbCredPartContainer>(
228 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_TIMESTAMP_STATE,
229 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_RECIPIENT_ADDRESS_TAG_STATE,
230 KerberosConstants.ENC_KRB_CRED_PART_RECIPIENT_ADDRESS_TAG,
231 new StoreRecipientAddress() );
232
233 super.transitions[EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_USEC_STATE.ordinal()][KerberosConstants.ENC_KRB_CRED_PART_RECIPIENT_ADDRESS_TAG] =
234 new GrammarTransition<EncKrbCredPartContainer>(
235 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_USEC_STATE,
236 EncKrbCredPartStatesEnum.ENC_KRB_CRED_PART_RECIPIENT_ADDRESS_TAG_STATE,
237 KerberosConstants.ENC_KRB_CRED_PART_RECIPIENT_ADDRESS_TAG,
238 new StoreRecipientAddress() );
239 }
240
241
242
243
244
245
246
247 public static Grammar<EncKrbCredPartContainer> getInstance()
248 {
249 return instance;
250 }
251 }