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.krbCred.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.krbCred.KrbCredContainer;
30 import org.apache.directory.shared.kerberos.codec.ticket.TicketContainer;
31 import org.apache.directory.shared.kerberos.messages.Ticket;
32 import org.slf4j.Logger;
33 import org.slf4j.LoggerFactory;
34
35
36
37
38
39
40
41 public class StoreTickets extends GrammarAction<KrbCredContainer>
42 {
43
44 private static final Logger LOG = LoggerFactory.getLogger( StoreTickets.class );
45
46
47 private static final boolean IS_DEBUG = LOG.isDebugEnabled();
48
49
50
51
52
53 public void action( KrbCredContainer krbCredContainer ) throws DecoderException
54 {
55 TLV tlv = krbCredContainer.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 TicketContaineros/codec/ticket/TicketContainer.html#TicketContainer">TicketContainer ticketContainer = new TicketContainer( krbCredContainer.getStream() );
69
70 krbCredContainer.rewind();
71
72
73 Asn1Decoder.decode( krbCredContainer.getStream(), ticketContainer );
74
75 Ticket ticket = ticketContainer.getTicket();
76
77 krbCredContainer.getKrbCred().addTicket( ticket );
78
79
80 tlv.setExpectedLength( tlv.getExpectedLength() - tlv.getLength() );
81
82
83 krbCredContainer.updateParent();
84
85 if ( IS_DEBUG )
86 {
87 LOG.debug( "Ticket : {}", ticket );
88 }
89 }
90 }