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     */
020    package org.apache.directory.server.kerberos.shared.messages.components;
021    
022    
023    import javax.security.auth.kerberos.KerberosPrincipal;
024    
025    import org.apache.directory.server.kerberos.shared.messages.value.AuthorizationData;
026    import org.apache.directory.server.kerberos.shared.messages.value.EncryptionKey;
027    import org.apache.directory.server.kerberos.shared.messages.value.HostAddresses;
028    import org.apache.directory.server.kerberos.shared.messages.value.KerberosPrincipalModifier;
029    import org.apache.directory.server.kerberos.shared.messages.value.KerberosTime;
030    import org.apache.directory.server.kerberos.shared.messages.value.PrincipalName;
031    import org.apache.directory.server.kerberos.shared.messages.value.TransitedEncoding;
032    import org.apache.directory.server.kerberos.shared.messages.value.flags.KerberosFlag;
033    import org.apache.directory.server.kerberos.shared.messages.value.flags.TicketFlags;
034    
035    
036    /**
037     * Encrypted part of Tickets.
038     * 
039     * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
040     * @version $Rev: 591019 $, $Date: 2007-11-01 15:16:34 +0100 (Thu, 01 Nov 2007) $
041     */
042    public class EncTicketPartModifier
043    {
044        private TicketFlags flags = new TicketFlags();
045        private EncryptionKey sessionKey;
046        private KerberosPrincipalModifier modifier = new KerberosPrincipalModifier();
047        private KerberosPrincipal clientPrincipal;
048        private TransitedEncoding transitedEncoding;
049        private KerberosTime authTime;
050        private KerberosTime startTime; //optional
051        private KerberosTime endTime;
052        private KerberosTime renewTill; //optional
053        private HostAddresses clientAddresses; //optional
054        private AuthorizationData authorizationData; //optional
055    
056    
057        /**
058         * Returns the {@link EncTicketPart}.
059         *
060         * @return The {@link EncTicketPart}.
061         */
062        public EncTicketPart getEncTicketPart()
063        {
064            if ( clientPrincipal == null )
065            {
066                clientPrincipal = modifier.getKerberosPrincipal();
067            }
068    
069            return new EncTicketPart( flags, sessionKey, clientPrincipal, transitedEncoding, authTime, startTime, endTime,
070                renewTill, clientAddresses, authorizationData );
071        }
072    
073    
074        /**
075         * Sets the client {@link PrincipalName}.
076         *
077         * @param name
078         */
079        public void setClientName( PrincipalName name )
080        {
081            modifier.setPrincipalName( name );
082        }
083    
084    
085        /**
086         * Sets the client realm.
087         *
088         * @param realm
089         */
090        public void setClientRealm( String realm )
091        {
092            modifier.setRealm( realm );
093        }
094    
095    
096        /**
097         * Sets the client {@link KerberosPrincipal}.
098         *
099         * @param clientPrincipal
100         */
101        public void setClientPrincipal( KerberosPrincipal clientPrincipal )
102        {
103            this.clientPrincipal = clientPrincipal;
104        }
105    
106    
107        /**
108         * Sets the {@link AuthorizationData}.
109         *
110         * @param data
111         */
112        public void setAuthorizationData( AuthorizationData data )
113        {
114            authorizationData = data;
115        }
116    
117    
118        /**
119         * Sets the auth {@link KerberosTime}.
120         *
121         * @param authtime
122         */
123        public void setAuthTime( KerberosTime authtime )
124        {
125            authTime = authtime;
126        }
127    
128    
129        /**
130         * Sets the client {@link HostAddresses}.
131         *
132         * @param addresses
133         */
134        public void setClientAddresses( HostAddresses addresses )
135        {
136            clientAddresses = addresses;
137        }
138    
139    
140        /**
141         * Sets the end {@link KerberosTime}.
142         *
143         * @param time
144         */
145        public void setEndTime( KerberosTime time )
146        {
147            endTime = time;
148        }
149    
150    
151        /**
152         * Sets the {@link TicketFlags}.
153         *
154         * @param flags
155         */
156        public void setFlags( TicketFlags flags )
157        {
158            this.flags = flags;
159        }
160    
161    
162        /**
163         * Sets the flag at the given index.
164         *
165         * @param flag
166         */
167        public void setFlag( int flag )
168        {
169            flags.setFlag( flag );
170        }
171    
172    
173        /**
174         * Sets the flag at the given index.
175         *
176         * @param flag
177         */
178        public void setFlag( KerberosFlag flag )
179        {
180            flags.setFlag( flag );
181        }
182    
183    
184        /**
185         * Clears the flag at the given index.
186         *
187         * @param flag
188         */
189        public void clearFlag( int flag )
190        {
191            flags.clearFlag( flag );
192        }
193    
194    
195        /**
196         * Clears the flag at the given index.
197         *
198         * @param flag
199         */
200        public void clearFlag( KerberosFlag flag )
201        {
202            flags.clearFlag( flag );
203        }
204    
205    
206        /**
207         * Sets the renew till {@link KerberosTime}.
208         *
209         * @param till
210         */
211        public void setRenewTill( KerberosTime till )
212        {
213            renewTill = till;
214        }
215    
216    
217        /**
218         * Sets the sesson {@link EncryptionKey}.
219         *
220         * @param key
221         */
222        public void setSessionKey( EncryptionKey key )
223        {
224            sessionKey = key;
225        }
226    
227    
228        /**
229         * Sets the start {@link KerberosTime}.
230         *
231         * @param time
232         */
233        public void setStartTime( KerberosTime time )
234        {
235            startTime = time;
236        }
237    
238    
239        /**
240         * Sets the {@link TransitedEncoding}.
241         *
242         * @param encoding
243         */
244        public void setTransitedEncoding( TransitedEncoding encoding )
245        {
246            transitedEncoding = encoding;
247        }
248    }