001/* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, 013 * software distributed under the License is distributed on an 014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 015 * KIND, either express or implied. See the License for the 016 * specific language governing permissions and limitations 017 * under the License. 018 * 019 */ 020package org.apache.directory.shared.kerberos.codec.krbCredInfo; 021 022 023import org.apache.directory.api.asn1.actions.CheckNotNullLength; 024import org.apache.directory.api.asn1.ber.grammar.AbstractGrammar; 025import org.apache.directory.api.asn1.ber.grammar.Grammar; 026import org.apache.directory.api.asn1.ber.grammar.GrammarTransition; 027import org.apache.directory.api.asn1.ber.tlv.UniversalTag; 028import org.apache.directory.shared.kerberos.KerberosConstants; 029import org.apache.directory.shared.kerberos.codec.krbCredInfo.actions.KrbCredInfoInit; 030import org.apache.directory.shared.kerberos.codec.krbCredInfo.actions.StoreAuthTime; 031import org.apache.directory.shared.kerberos.codec.krbCredInfo.actions.StoreCaddr; 032import org.apache.directory.shared.kerberos.codec.krbCredInfo.actions.StoreEndTime; 033import org.apache.directory.shared.kerberos.codec.krbCredInfo.actions.StoreFlags; 034import org.apache.directory.shared.kerberos.codec.krbCredInfo.actions.StoreKey; 035import org.apache.directory.shared.kerberos.codec.krbCredInfo.actions.StorePName; 036import org.apache.directory.shared.kerberos.codec.krbCredInfo.actions.StorePRealm; 037import org.apache.directory.shared.kerberos.codec.krbCredInfo.actions.StoreRenewtill; 038import org.apache.directory.shared.kerberos.codec.krbCredInfo.actions.StoreSName; 039import org.apache.directory.shared.kerberos.codec.krbCredInfo.actions.StoreSRealm; 040import org.apache.directory.shared.kerberos.codec.krbCredInfo.actions.StoreStartTime; 041import org.slf4j.Logger; 042import org.slf4j.LoggerFactory; 043 044 045/** 046 * This class implements the KrbCredInfo structure. All the actions are declared 047 * in this class. As it is a singleton, these declaration are only done once. If 048 * an action is to be added or modified, this is where the work is to be done ! 049 * 050 * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a> 051 */ 052public final class KrbCredInfoGrammar extends AbstractGrammar<KrbCredInfoContainer> 053{ 054 /** The logger */ 055 static final Logger LOG = LoggerFactory.getLogger( KrbCredInfoGrammar.class ); 056 057 /** A speedup for logger */ 058 static final boolean IS_DEBUG = LOG.isDebugEnabled(); 059 060 /** The instance of grammar. KrbCredInfoGrammar is a singleton */ 061 private static Grammar<KrbCredInfoContainer> instance = new KrbCredInfoGrammar(); 062 063 064 /** 065 * Creates a new KrbCredInfoGrammar object. 066 */ 067 @SuppressWarnings("unchecked") 068 private KrbCredInfoGrammar() 069 { 070 setName( KrbCredInfoGrammar.class.getName() ); 071 072 // Create the transitions table 073 super.transitions = new GrammarTransition[KrbCredInfoStatesEnum.LAST_KRB_CRED_INFO_STATE.ordinal()][256]; 074 075 // ============================================================================================ 076 // KrbCredInfo 077 // ============================================================================================ 078 079 super.transitions[KrbCredInfoStatesEnum.START_STATE.ordinal()][UniversalTag.SEQUENCE.getValue()] = 080 new GrammarTransition<KrbCredInfoContainer>( 081 KrbCredInfoStatesEnum.START_STATE, 082 KrbCredInfoStatesEnum.KRB_CRED_INFO_SEQ_TAG_STATE, 083 UniversalTag.SEQUENCE, 084 new KrbCredInfoInit() ); 085 086 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_SEQ_TAG_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_KEY_TAG] = 087 new GrammarTransition<KrbCredInfoContainer>( 088 KrbCredInfoStatesEnum.KRB_CRED_INFO_SEQ_TAG_STATE, 089 KrbCredInfoStatesEnum.KRB_CRED_INFO_KEY_TAG_STATE, 090 KerberosConstants.KRB_CRED_INFO_KEY_TAG, 091 new StoreKey() ); 092 093 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_KEY_TAG_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_PREALM_TAG] = 094 new GrammarTransition<KrbCredInfoContainer>( 095 KrbCredInfoStatesEnum.KRB_CRED_INFO_KEY_TAG_STATE, 096 KrbCredInfoStatesEnum.KRB_CRED_INFO_PREALM_TAG_STATE, 097 KerberosConstants.KRB_CRED_INFO_PREALM_TAG, 098 new CheckNotNullLength<KrbCredInfoContainer>() ); 099 100 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_PREALM_TAG_STATE.ordinal()][UniversalTag.GENERAL_STRING 101 .getValue()] = 102 new GrammarTransition<KrbCredInfoContainer>( 103 KrbCredInfoStatesEnum.KRB_CRED_INFO_PREALM_TAG_STATE, 104 KrbCredInfoStatesEnum.KRB_CRED_INFO_PREALM_STATE, 105 UniversalTag.GENERAL_STRING, 106 new StorePRealm() ); 107 108 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_PREALM_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_PNAME_TAG] = 109 new GrammarTransition<KrbCredInfoContainer>( 110 KrbCredInfoStatesEnum.KRB_CRED_INFO_PREALM_STATE, 111 KrbCredInfoStatesEnum.KRB_CRED_INFO_PNAME_TAG_STATE, 112 KerberosConstants.KRB_CRED_INFO_PNAME_TAG, 113 new StorePName() ); 114 115 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_PNAME_TAG_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_FLAGS_TAG] = 116 new GrammarTransition<KrbCredInfoContainer>( 117 KrbCredInfoStatesEnum.KRB_CRED_INFO_PNAME_TAG_STATE, 118 KrbCredInfoStatesEnum.KRB_CRED_INFO_FLAGS_TAG_STATE, 119 KerberosConstants.KRB_CRED_INFO_FLAGS_TAG, 120 new CheckNotNullLength<KrbCredInfoContainer>() ); 121 122 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_FLAGS_TAG_STATE.ordinal()][UniversalTag.BIT_STRING 123 .getValue()] = 124 new GrammarTransition<KrbCredInfoContainer>( 125 KrbCredInfoStatesEnum.KRB_CRED_INFO_FLAGS_TAG_STATE, 126 KrbCredInfoStatesEnum.KRB_CRED_INFO_FLAGS_STATE, 127 UniversalTag.BIT_STRING, 128 new StoreFlags() ); 129 130 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_FLAGS_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_AUTHTIME_TAG] = 131 new GrammarTransition<KrbCredInfoContainer>( 132 KrbCredInfoStatesEnum.KRB_CRED_INFO_FLAGS_STATE, 133 KrbCredInfoStatesEnum.KRB_CRED_INFO_AUTHTIME_TAG_STATE, 134 KerberosConstants.KRB_CRED_INFO_AUTHTIME_TAG, 135 new CheckNotNullLength<KrbCredInfoContainer>() ); 136 137 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_AUTHTIME_TAG_STATE.ordinal()][UniversalTag.GENERALIZED_TIME 138 .getValue()] = 139 new GrammarTransition<KrbCredInfoContainer>( 140 KrbCredInfoStatesEnum.KRB_CRED_INFO_AUTHTIME_TAG_STATE, 141 KrbCredInfoStatesEnum.KRB_CRED_INFO_AUTHTIME_STATE, 142 UniversalTag.GENERALIZED_TIME, 143 new StoreAuthTime() ); 144 145 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_AUTHTIME_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_STARTTIME_TAG] = 146 new GrammarTransition<KrbCredInfoContainer>( 147 KrbCredInfoStatesEnum.KRB_CRED_INFO_AUTHTIME_STATE, 148 KrbCredInfoStatesEnum.KRB_CRED_INFO_STARTTIME_TAG_STATE, 149 KerberosConstants.KRB_CRED_INFO_STARTTIME_TAG, 150 new CheckNotNullLength<KrbCredInfoContainer>() ); 151 152 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_STARTTIME_TAG_STATE.ordinal()][UniversalTag.GENERALIZED_TIME 153 .getValue()] = 154 new GrammarTransition<KrbCredInfoContainer>( 155 KrbCredInfoStatesEnum.KRB_CRED_INFO_STARTTIME_TAG_STATE, 156 KrbCredInfoStatesEnum.KRB_CRED_INFO_STARTTIME_STATE, 157 UniversalTag.GENERALIZED_TIME, 158 new StoreStartTime() ); 159 160 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_STARTTIME_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_ENDTIME_TAG] = 161 new GrammarTransition<KrbCredInfoContainer>( 162 KrbCredInfoStatesEnum.KRB_CRED_INFO_STARTTIME_STATE, 163 KrbCredInfoStatesEnum.KRB_CRED_INFO_ENDTIME_TAG_STATE, 164 KerberosConstants.KRB_CRED_INFO_ENDTIME_TAG, 165 new CheckNotNullLength<KrbCredInfoContainer>() ); 166 167 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_ENDTIME_TAG_STATE.ordinal()][UniversalTag.GENERALIZED_TIME 168 .getValue()] = 169 new GrammarTransition<KrbCredInfoContainer>( 170 KrbCredInfoStatesEnum.KRB_CRED_INFO_ENDTIME_TAG_STATE, 171 KrbCredInfoStatesEnum.KRB_CRED_INFO_ENDTIME_STATE, 172 UniversalTag.GENERALIZED_TIME, 173 new StoreEndTime() ); 174 175 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_ENDTIME_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_RENEWTILL_TAG] = 176 new GrammarTransition<KrbCredInfoContainer>( 177 KrbCredInfoStatesEnum.KRB_CRED_INFO_ENDTIME_STATE, 178 KrbCredInfoStatesEnum.KRB_CRED_INFO_RENEWTILL_TAG_STATE, 179 KerberosConstants.KRB_CRED_INFO_RENEWTILL_TAG, 180 new CheckNotNullLength<KrbCredInfoContainer>() ); 181 182 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_RENEWTILL_TAG_STATE.ordinal()][UniversalTag.GENERALIZED_TIME 183 .getValue()] = 184 new GrammarTransition<KrbCredInfoContainer>( 185 KrbCredInfoStatesEnum.KRB_CRED_INFO_RENEWTILL_TAG_STATE, 186 KrbCredInfoStatesEnum.KRB_CRED_INFO_RENEWTILL_STATE, 187 UniversalTag.GENERALIZED_TIME, 188 new StoreRenewtill() ); 189 190 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_RENEWTILL_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_SREALM_TAG] = 191 new GrammarTransition<KrbCredInfoContainer>( 192 KrbCredInfoStatesEnum.KRB_CRED_INFO_RENEWTILL_STATE, 193 KrbCredInfoStatesEnum.KRB_CRED_INFO_SREALM_TAG_STATE, 194 KerberosConstants.KRB_CRED_INFO_SREALM_TAG, 195 new CheckNotNullLength<KrbCredInfoContainer>() ); 196 197 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_SREALM_TAG_STATE.ordinal()][UniversalTag.GENERAL_STRING 198 .getValue()] = 199 new GrammarTransition<KrbCredInfoContainer>( 200 KrbCredInfoStatesEnum.KRB_CRED_INFO_SREALM_TAG_STATE, 201 KrbCredInfoStatesEnum.KRB_CRED_INFO_SREALM_STATE, 202 UniversalTag.GENERAL_STRING, 203 new StoreSRealm() ); 204 205 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_SREALM_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_SNAME_TAG] = 206 new GrammarTransition<KrbCredInfoContainer>( 207 KrbCredInfoStatesEnum.KRB_CRED_INFO_SREALM_STATE, 208 KrbCredInfoStatesEnum.KRB_CRED_INFO_SNAME_TAG_STATE, 209 KerberosConstants.KRB_CRED_INFO_SNAME_TAG, 210 new StoreSName() ); 211 212 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_SNAME_TAG_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_CADDR_TAG] = 213 new GrammarTransition<KrbCredInfoContainer>( 214 KrbCredInfoStatesEnum.KRB_CRED_INFO_SNAME_TAG_STATE, 215 KrbCredInfoStatesEnum.KRB_CRED_INFO_CADDR_TAG_STATE, 216 KerberosConstants.KRB_CRED_INFO_CADDR_TAG, 217 new StoreCaddr() ); 218 219 // ---------------------------- OPTIONAL transitions ------------------------ 220 221 // transition from key to pname 222 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_KEY_TAG_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_PNAME_TAG] = 223 new GrammarTransition<KrbCredInfoContainer>( 224 KrbCredInfoStatesEnum.KRB_CRED_INFO_KEY_TAG_STATE, 225 KrbCredInfoStatesEnum.KRB_CRED_INFO_PNAME_TAG_STATE, 226 KerberosConstants.KRB_CRED_INFO_PNAME_TAG, 227 new StorePName() ); 228 229 // transition from key to flags 230 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_KEY_TAG_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_FLAGS_TAG] = 231 new GrammarTransition<KrbCredInfoContainer>( 232 KrbCredInfoStatesEnum.KRB_CRED_INFO_KEY_TAG_STATE, 233 KrbCredInfoStatesEnum.KRB_CRED_INFO_FLAGS_TAG_STATE, 234 KerberosConstants.KRB_CRED_INFO_FLAGS_TAG, 235 new CheckNotNullLength<KrbCredInfoContainer>() ); 236 237 // transition from key to authtime 238 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_KEY_TAG_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_AUTHTIME_TAG] = 239 new GrammarTransition<KrbCredInfoContainer>( 240 KrbCredInfoStatesEnum.KRB_CRED_INFO_KEY_TAG_STATE, 241 KrbCredInfoStatesEnum.KRB_CRED_INFO_AUTHTIME_TAG_STATE, 242 KerberosConstants.KRB_CRED_INFO_AUTHTIME_TAG, 243 new CheckNotNullLength<KrbCredInfoContainer>() ); 244 245 // transition from key to starttime 246 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_KEY_TAG_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_STARTTIME_TAG] = 247 new GrammarTransition<KrbCredInfoContainer>( 248 KrbCredInfoStatesEnum.KRB_CRED_INFO_KEY_TAG_STATE, 249 KrbCredInfoStatesEnum.KRB_CRED_INFO_STARTTIME_TAG_STATE, 250 KerberosConstants.KRB_CRED_INFO_STARTTIME_TAG, 251 new CheckNotNullLength<KrbCredInfoContainer>() ); 252 253 // transition from key to endtime 254 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_KEY_TAG_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_ENDTIME_TAG] = 255 new GrammarTransition<KrbCredInfoContainer>( 256 KrbCredInfoStatesEnum.KRB_CRED_INFO_KEY_TAG_STATE, 257 KrbCredInfoStatesEnum.KRB_CRED_INFO_ENDTIME_TAG_STATE, 258 KerberosConstants.KRB_CRED_INFO_ENDTIME_TAG, 259 new CheckNotNullLength<KrbCredInfoContainer>() ); 260 261 // transition from key to renewtill 262 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_KEY_TAG_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_RENEWTILL_TAG] = 263 new GrammarTransition<KrbCredInfoContainer>( 264 KrbCredInfoStatesEnum.KRB_CRED_INFO_KEY_TAG_STATE, 265 KrbCredInfoStatesEnum.KRB_CRED_INFO_RENEWTILL_TAG_STATE, 266 KerberosConstants.KRB_CRED_INFO_RENEWTILL_TAG, 267 new CheckNotNullLength<KrbCredInfoContainer>() ); 268 269 // transition from key to srealm 270 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_KEY_TAG_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_SREALM_TAG] = 271 new GrammarTransition<KrbCredInfoContainer>( 272 KrbCredInfoStatesEnum.KRB_CRED_INFO_KEY_TAG_STATE, 273 KrbCredInfoStatesEnum.KRB_CRED_INFO_SREALM_TAG_STATE, 274 KerberosConstants.KRB_CRED_INFO_SREALM_TAG, 275 new CheckNotNullLength<KrbCredInfoContainer>() ); 276 277 // transition from key to sname 278 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_KEY_TAG_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_SNAME_TAG] = 279 new GrammarTransition<KrbCredInfoContainer>( 280 KrbCredInfoStatesEnum.KRB_CRED_INFO_KEY_TAG_STATE, 281 KrbCredInfoStatesEnum.KRB_CRED_INFO_SNAME_TAG_STATE, 282 KerberosConstants.KRB_CRED_INFO_SNAME_TAG, 283 new StoreSName() ); 284 285 // transition from key to caddr 286 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_KEY_TAG_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_CADDR_TAG] = 287 new GrammarTransition<KrbCredInfoContainer>( 288 KrbCredInfoStatesEnum.KRB_CRED_INFO_KEY_TAG_STATE, 289 KrbCredInfoStatesEnum.KRB_CRED_INFO_CADDR_TAG_STATE, 290 KerberosConstants.KRB_CRED_INFO_CADDR_TAG, 291 new StoreCaddr() ); 292 293 // transition from prealm to flags 294 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_PREALM_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_FLAGS_TAG] = 295 new GrammarTransition<KrbCredInfoContainer>( 296 KrbCredInfoStatesEnum.KRB_CRED_INFO_PREALM_STATE, 297 KrbCredInfoStatesEnum.KRB_CRED_INFO_FLAGS_TAG_STATE, 298 KerberosConstants.KRB_CRED_INFO_FLAGS_TAG, 299 new CheckNotNullLength<KrbCredInfoContainer>() ); 300 301 // transition from prealm to authtime 302 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_PREALM_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_AUTHTIME_TAG] = 303 new GrammarTransition<KrbCredInfoContainer>( 304 KrbCredInfoStatesEnum.KRB_CRED_INFO_PREALM_STATE, 305 KrbCredInfoStatesEnum.KRB_CRED_INFO_AUTHTIME_TAG_STATE, 306 KerberosConstants.KRB_CRED_INFO_AUTHTIME_TAG, 307 new CheckNotNullLength<KrbCredInfoContainer>() ); 308 309 // transition from prealm to starttime 310 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_PREALM_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_STARTTIME_TAG] = 311 new GrammarTransition<KrbCredInfoContainer>( 312 KrbCredInfoStatesEnum.KRB_CRED_INFO_PREALM_STATE, 313 KrbCredInfoStatesEnum.KRB_CRED_INFO_STARTTIME_TAG_STATE, 314 KerberosConstants.KRB_CRED_INFO_STARTTIME_TAG, 315 new CheckNotNullLength<KrbCredInfoContainer>() ); 316 317 // transition from prealm to endtime 318 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_PREALM_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_ENDTIME_TAG] = 319 new GrammarTransition<KrbCredInfoContainer>( 320 KrbCredInfoStatesEnum.KRB_CRED_INFO_PREALM_STATE, 321 KrbCredInfoStatesEnum.KRB_CRED_INFO_ENDTIME_TAG_STATE, 322 KerberosConstants.KRB_CRED_INFO_ENDTIME_TAG, 323 new CheckNotNullLength<KrbCredInfoContainer>() ); 324 325 // transition from prealm to renewtill 326 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_PREALM_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_RENEWTILL_TAG] = 327 new GrammarTransition<KrbCredInfoContainer>( 328 KrbCredInfoStatesEnum.KRB_CRED_INFO_PREALM_STATE, 329 KrbCredInfoStatesEnum.KRB_CRED_INFO_RENEWTILL_TAG_STATE, 330 KerberosConstants.KRB_CRED_INFO_RENEWTILL_TAG, 331 new CheckNotNullLength<KrbCredInfoContainer>() ); 332 333 // transition from prealm to srealm 334 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_PREALM_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_SREALM_TAG] = 335 new GrammarTransition<KrbCredInfoContainer>( 336 KrbCredInfoStatesEnum.KRB_CRED_INFO_PREALM_STATE, 337 KrbCredInfoStatesEnum.KRB_CRED_INFO_SREALM_TAG_STATE, 338 KerberosConstants.KRB_CRED_INFO_SREALM_TAG, 339 new CheckNotNullLength<KrbCredInfoContainer>() ); 340 341 // transition from prealm to sname 342 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_PREALM_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_SNAME_TAG] = 343 new GrammarTransition<KrbCredInfoContainer>( 344 KrbCredInfoStatesEnum.KRB_CRED_INFO_PREALM_STATE, 345 KrbCredInfoStatesEnum.KRB_CRED_INFO_SNAME_TAG_STATE, 346 KerberosConstants.KRB_CRED_INFO_SNAME_TAG, 347 new StoreSName() ); 348 349 // transition from prealm to caddr 350 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_PREALM_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_CADDR_TAG] = 351 new GrammarTransition<KrbCredInfoContainer>( 352 KrbCredInfoStatesEnum.KRB_CRED_INFO_PREALM_STATE, 353 KrbCredInfoStatesEnum.KRB_CRED_INFO_CADDR_TAG_STATE, 354 KerberosConstants.KRB_CRED_INFO_CADDR_TAG, 355 new StoreCaddr() ); 356 357 // transition from pname to authtime 358 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_PNAME_TAG_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_AUTHTIME_TAG] = 359 new GrammarTransition<KrbCredInfoContainer>( 360 KrbCredInfoStatesEnum.KRB_CRED_INFO_PNAME_TAG_STATE, 361 KrbCredInfoStatesEnum.KRB_CRED_INFO_AUTHTIME_TAG_STATE, 362 KerberosConstants.KRB_CRED_INFO_AUTHTIME_TAG, 363 new CheckNotNullLength<KrbCredInfoContainer>() ); 364 365 // transition from pname to starttime 366 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_PNAME_TAG_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_STARTTIME_TAG] = 367 new GrammarTransition<KrbCredInfoContainer>( 368 KrbCredInfoStatesEnum.KRB_CRED_INFO_PNAME_TAG_STATE, 369 KrbCredInfoStatesEnum.KRB_CRED_INFO_STARTTIME_TAG_STATE, 370 KerberosConstants.KRB_CRED_INFO_STARTTIME_TAG, 371 new CheckNotNullLength<KrbCredInfoContainer>() ); 372 373 // transition from pname to endtime 374 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_PNAME_TAG_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_ENDTIME_TAG] = 375 new GrammarTransition<KrbCredInfoContainer>( 376 KrbCredInfoStatesEnum.KRB_CRED_INFO_PNAME_TAG_STATE, 377 KrbCredInfoStatesEnum.KRB_CRED_INFO_ENDTIME_TAG_STATE, 378 KerberosConstants.KRB_CRED_INFO_ENDTIME_TAG, 379 new CheckNotNullLength<KrbCredInfoContainer>() ); 380 381 // transition from pname to renewtill 382 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_PNAME_TAG_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_RENEWTILL_TAG] = 383 new GrammarTransition<KrbCredInfoContainer>( 384 KrbCredInfoStatesEnum.KRB_CRED_INFO_PNAME_TAG_STATE, 385 KrbCredInfoStatesEnum.KRB_CRED_INFO_RENEWTILL_TAG_STATE, 386 KerberosConstants.KRB_CRED_INFO_RENEWTILL_TAG, 387 new CheckNotNullLength<KrbCredInfoContainer>() ); 388 389 // transition from pname to srealm 390 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_PNAME_TAG_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_SREALM_TAG] = 391 new GrammarTransition<KrbCredInfoContainer>( 392 KrbCredInfoStatesEnum.KRB_CRED_INFO_PNAME_TAG_STATE, 393 KrbCredInfoStatesEnum.KRB_CRED_INFO_SREALM_TAG_STATE, 394 KerberosConstants.KRB_CRED_INFO_SREALM_TAG, 395 new CheckNotNullLength<KrbCredInfoContainer>() ); 396 397 // transition from pname to sname 398 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_PNAME_TAG_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_SNAME_TAG] = 399 new GrammarTransition<KrbCredInfoContainer>( 400 KrbCredInfoStatesEnum.KRB_CRED_INFO_PNAME_TAG_STATE, 401 KrbCredInfoStatesEnum.KRB_CRED_INFO_SNAME_TAG_STATE, 402 KerberosConstants.KRB_CRED_INFO_SNAME_TAG, 403 new StoreSName() ); 404 405 // transition from pname to caddr 406 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_PNAME_TAG_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_CADDR_TAG] = 407 new GrammarTransition<KrbCredInfoContainer>( 408 KrbCredInfoStatesEnum.KRB_CRED_INFO_PNAME_TAG_STATE, 409 KrbCredInfoStatesEnum.KRB_CRED_INFO_CADDR_TAG_STATE, 410 KerberosConstants.KRB_CRED_INFO_CADDR_TAG, 411 new StoreCaddr() ); 412 413 // transition from flags to starttime 414 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_FLAGS_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_STARTTIME_TAG] = 415 new GrammarTransition<KrbCredInfoContainer>( 416 KrbCredInfoStatesEnum.KRB_CRED_INFO_FLAGS_STATE, 417 KrbCredInfoStatesEnum.KRB_CRED_INFO_STARTTIME_TAG_STATE, 418 KerberosConstants.KRB_CRED_INFO_STARTTIME_TAG, 419 new CheckNotNullLength<KrbCredInfoContainer>() ); 420 421 // transition from flags to endtime 422 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_FLAGS_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_ENDTIME_TAG] = 423 new GrammarTransition<KrbCredInfoContainer>( 424 KrbCredInfoStatesEnum.KRB_CRED_INFO_FLAGS_STATE, 425 KrbCredInfoStatesEnum.KRB_CRED_INFO_ENDTIME_TAG_STATE, 426 KerberosConstants.KRB_CRED_INFO_ENDTIME_TAG, 427 new CheckNotNullLength<KrbCredInfoContainer>() ); 428 429 // transition from flags to renewtill 430 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_FLAGS_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_RENEWTILL_TAG] = 431 new GrammarTransition<KrbCredInfoContainer>( 432 KrbCredInfoStatesEnum.KRB_CRED_INFO_FLAGS_STATE, 433 KrbCredInfoStatesEnum.KRB_CRED_INFO_RENEWTILL_TAG_STATE, 434 KerberosConstants.KRB_CRED_INFO_RENEWTILL_TAG, 435 new CheckNotNullLength<KrbCredInfoContainer>() ); 436 437 // transition from flags to srealm 438 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_FLAGS_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_SREALM_TAG] = 439 new GrammarTransition<KrbCredInfoContainer>( 440 KrbCredInfoStatesEnum.KRB_CRED_INFO_FLAGS_STATE, 441 KrbCredInfoStatesEnum.KRB_CRED_INFO_SREALM_TAG_STATE, 442 KerberosConstants.KRB_CRED_INFO_SREALM_TAG, 443 new CheckNotNullLength<KrbCredInfoContainer>() ); 444 445 // transition from flags to sname 446 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_FLAGS_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_SNAME_TAG] = 447 new GrammarTransition<KrbCredInfoContainer>( 448 KrbCredInfoStatesEnum.KRB_CRED_INFO_FLAGS_STATE, 449 KrbCredInfoStatesEnum.KRB_CRED_INFO_SNAME_TAG_STATE, 450 KerberosConstants.KRB_CRED_INFO_SNAME_TAG, 451 new StoreSName() ); 452 453 // transition from flags to caddr 454 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_FLAGS_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_CADDR_TAG] = 455 new GrammarTransition<KrbCredInfoContainer>( 456 KrbCredInfoStatesEnum.KRB_CRED_INFO_FLAGS_STATE, 457 KrbCredInfoStatesEnum.KRB_CRED_INFO_CADDR_TAG_STATE, 458 KerberosConstants.KRB_CRED_INFO_CADDR_TAG, 459 new StoreCaddr() ); 460 461 // transition from authtime to endtime 462 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_AUTHTIME_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_ENDTIME_TAG] = 463 new GrammarTransition<KrbCredInfoContainer>( 464 KrbCredInfoStatesEnum.KRB_CRED_INFO_AUTHTIME_STATE, 465 KrbCredInfoStatesEnum.KRB_CRED_INFO_ENDTIME_TAG_STATE, 466 KerberosConstants.KRB_CRED_INFO_ENDTIME_TAG, 467 new CheckNotNullLength<KrbCredInfoContainer>() ); 468 469 // transition from authtime to renewtill 470 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_AUTHTIME_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_RENEWTILL_TAG] = 471 new GrammarTransition<KrbCredInfoContainer>( 472 KrbCredInfoStatesEnum.KRB_CRED_INFO_AUTHTIME_STATE, 473 KrbCredInfoStatesEnum.KRB_CRED_INFO_RENEWTILL_TAG_STATE, 474 KerberosConstants.KRB_CRED_INFO_RENEWTILL_TAG, 475 new CheckNotNullLength<KrbCredInfoContainer>() ); 476 477 // transition from authtime to srealm 478 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_AUTHTIME_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_SREALM_TAG] = 479 new GrammarTransition<KrbCredInfoContainer>( 480 KrbCredInfoStatesEnum.KRB_CRED_INFO_AUTHTIME_STATE, 481 KrbCredInfoStatesEnum.KRB_CRED_INFO_SREALM_TAG_STATE, 482 KerberosConstants.KRB_CRED_INFO_SREALM_TAG, 483 new CheckNotNullLength<KrbCredInfoContainer>() ); 484 485 // transition from authtime to sname 486 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_AUTHTIME_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_SNAME_TAG] = 487 new GrammarTransition<KrbCredInfoContainer>( 488 KrbCredInfoStatesEnum.KRB_CRED_INFO_AUTHTIME_STATE, 489 KrbCredInfoStatesEnum.KRB_CRED_INFO_SNAME_TAG_STATE, 490 KerberosConstants.KRB_CRED_INFO_SNAME_TAG, 491 new StoreSName() ); 492 493 // transition from authtime to caddr 494 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_AUTHTIME_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_CADDR_TAG] = 495 new GrammarTransition<KrbCredInfoContainer>( 496 KrbCredInfoStatesEnum.KRB_CRED_INFO_AUTHTIME_STATE, 497 KrbCredInfoStatesEnum.KRB_CRED_INFO_CADDR_TAG_STATE, 498 KerberosConstants.KRB_CRED_INFO_CADDR_TAG, 499 new StoreCaddr() ); 500 501 // transition from starttime to renewtill 502 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_STARTTIME_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_RENEWTILL_TAG] = 503 new GrammarTransition<KrbCredInfoContainer>( 504 KrbCredInfoStatesEnum.KRB_CRED_INFO_STARTTIME_STATE, 505 KrbCredInfoStatesEnum.KRB_CRED_INFO_RENEWTILL_TAG_STATE, 506 KerberosConstants.KRB_CRED_INFO_RENEWTILL_TAG, 507 new CheckNotNullLength<KrbCredInfoContainer>() ); 508 509 // transition from starttime to srealm 510 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_STARTTIME_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_SREALM_TAG] = 511 new GrammarTransition<KrbCredInfoContainer>( 512 KrbCredInfoStatesEnum.KRB_CRED_INFO_STARTTIME_STATE, 513 KrbCredInfoStatesEnum.KRB_CRED_INFO_SREALM_TAG_STATE, 514 KerberosConstants.KRB_CRED_INFO_SREALM_TAG, 515 new CheckNotNullLength<KrbCredInfoContainer>() ); 516 517 // transition from starttime to sname 518 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_STARTTIME_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_SNAME_TAG] = 519 new GrammarTransition<KrbCredInfoContainer>( 520 KrbCredInfoStatesEnum.KRB_CRED_INFO_STARTTIME_STATE, 521 KrbCredInfoStatesEnum.KRB_CRED_INFO_SNAME_TAG_STATE, 522 KerberosConstants.KRB_CRED_INFO_SNAME_TAG, 523 new StoreSName() ); 524 525 // transition from starttime to caddr 526 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_STARTTIME_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_CADDR_TAG] = 527 new GrammarTransition<KrbCredInfoContainer>( 528 KrbCredInfoStatesEnum.KRB_CRED_INFO_STARTTIME_STATE, 529 KrbCredInfoStatesEnum.KRB_CRED_INFO_CADDR_TAG_STATE, 530 KerberosConstants.KRB_CRED_INFO_CADDR_TAG, 531 new StoreCaddr() ); 532 533 // transition from endtime to srealm 534 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_ENDTIME_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_SREALM_TAG] = 535 new GrammarTransition<KrbCredInfoContainer>( 536 KrbCredInfoStatesEnum.KRB_CRED_INFO_ENDTIME_STATE, 537 KrbCredInfoStatesEnum.KRB_CRED_INFO_SREALM_TAG_STATE, 538 KerberosConstants.KRB_CRED_INFO_SREALM_TAG, 539 new CheckNotNullLength<KrbCredInfoContainer>() ); 540 541 // transition from endtime to sname 542 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_ENDTIME_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_SNAME_TAG] = 543 new GrammarTransition<KrbCredInfoContainer>( 544 KrbCredInfoStatesEnum.KRB_CRED_INFO_ENDTIME_STATE, 545 KrbCredInfoStatesEnum.KRB_CRED_INFO_SNAME_TAG_STATE, 546 KerberosConstants.KRB_CRED_INFO_SNAME_TAG, 547 new StoreSName() ); 548 549 // transition from endtime to caddr 550 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_ENDTIME_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_CADDR_TAG] = 551 new GrammarTransition<KrbCredInfoContainer>( 552 KrbCredInfoStatesEnum.KRB_CRED_INFO_ENDTIME_STATE, 553 KrbCredInfoStatesEnum.KRB_CRED_INFO_CADDR_TAG_STATE, 554 KerberosConstants.KRB_CRED_INFO_CADDR_TAG, 555 new StoreCaddr() ); 556 557 // transition from renewtill to sname 558 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_RENEWTILL_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_SNAME_TAG] = 559 new GrammarTransition<KrbCredInfoContainer>( 560 KrbCredInfoStatesEnum.KRB_CRED_INFO_RENEWTILL_STATE, 561 KrbCredInfoStatesEnum.KRB_CRED_INFO_SNAME_TAG_STATE, 562 KerberosConstants.KRB_CRED_INFO_SNAME_TAG, 563 new StoreSName() ); 564 565 // transition from renewtill to caddr 566 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_RENEWTILL_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_CADDR_TAG] = 567 new GrammarTransition<KrbCredInfoContainer>( 568 KrbCredInfoStatesEnum.KRB_CRED_INFO_RENEWTILL_STATE, 569 KrbCredInfoStatesEnum.KRB_CRED_INFO_CADDR_TAG_STATE, 570 KerberosConstants.KRB_CRED_INFO_CADDR_TAG, 571 new StoreCaddr() ); 572 573 // transition from srealm to caddr 574 super.transitions[KrbCredInfoStatesEnum.KRB_CRED_INFO_SREALM_STATE.ordinal()][KerberosConstants.KRB_CRED_INFO_CADDR_TAG] = 575 new GrammarTransition<KrbCredInfoContainer>( 576 KrbCredInfoStatesEnum.KRB_CRED_INFO_SREALM_STATE, 577 KrbCredInfoStatesEnum.KRB_CRED_INFO_CADDR_TAG_STATE, 578 KerberosConstants.KRB_CRED_INFO_CADDR_TAG, 579 new StoreCaddr() ); 580 } 581 582 583 /** 584 * Get the instance of this grammar 585 * 586 * @return An instance on the KrbCredInfo Grammar 587 */ 588 public static Grammar<KrbCredInfoContainer> getInstance() 589 { 590 return instance; 591 } 592}