1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.directory.shared.kerberos.codec.encKrbCredPart.actions;
22
23
24 import org.apache.directory.api.asn1.DecoderException;
25 import org.apache.directory.api.asn1.ber.Asn1Decoder;
26 import org.apache.directory.api.asn1.ber.grammar.GrammarAction;
27 import org.apache.directory.api.asn1.ber.tlv.TLV;
28 import org.apache.directory.api.i18n.I18n;
29 import org.apache.directory.shared.kerberos.codec.encKrbCredPart.EncKrbCredPartContainer;
30 import org.apache.directory.shared.kerberos.codec.krbCredInfo.KrbCredInfoContainer;
31 import org.apache.directory.shared.kerberos.components.KrbCredInfo;
32 import org.slf4j.Logger;
33 import org.slf4j.LoggerFactory;
34
35
36
37
38
39
40
41 public class StoreTicketInfo extends GrammarAction<EncKrbCredPartContainer>
42 {
43
44 private static final Logger LOG = LoggerFactory.getLogger( StoreTicketInfo.class );
45
46
47 private static final boolean IS_DEBUG = LOG.isDebugEnabled();
48
49
50
51
52
53 public void action( EncKrbCredPartContainer encKrbCredPartContainer ) throws DecoderException
54 {
55 TLV tlv = encKrbCredPartContainer.getCurrentTLV();
56
57
58 if ( tlv.getLength() == 0 )
59 {
60 LOG.error( I18n.err( I18n.ERR_01308_ZERO_LENGTH_TLV ) );
61
62
63 throw new DecoderException( I18n.err( I18n.ERR_01309_EMPTY_TLV ) );
64 }
65
66
67
68 KrbCredInfoContainerkrbCredInfo/KrbCredInfoContainer.html#KrbCredInfoContainer">KrbCredInfoContainer ticketInfoContainer = new KrbCredInfoContainer();
69 ticketInfoContainer.setStream( encKrbCredPartContainer.getStream() );
70
71 encKrbCredPartContainer.rewind();
72
73
74 Asn1Decoder.decode( encKrbCredPartContainer.getStream(), ticketInfoContainer );
75
76 KrbCredInfo ticketInfo = ticketInfoContainer.getKrbCredInfo();
77
78 encKrbCredPartContainer.getEncKrbCredPart().addTicketInfo( ticketInfo );
79
80
81 tlv.setExpectedLength( tlv.getExpectedLength() - tlv.getLength() );
82
83
84 encKrbCredPartContainer.updateParent();
85
86 encKrbCredPartContainer.setGrammarEndAllowed( true );
87
88 if ( IS_DEBUG )
89 {
90 LOG.debug( "KrbCredInfo : {}", ticketInfo );
91 }
92 }
93 }