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.Checksum;
027 import org.apache.directory.server.kerberos.shared.messages.value.EncryptionKey;
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
032
033 /**
034 * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
035 * @version $Rev: 547131 $, $Date: 2007-06-14 08:41:06 +0300 (Thu, 14 Jun 2007) $
036 */
037 public class AuthenticatorModifier
038 {
039 private int versionNumber;
040 private KerberosPrincipalModifier clientModifier = new KerberosPrincipalModifier();
041 private KerberosPrincipal clientPrincipal;
042 private Checksum checksum;
043 private int clientMicroSecond;
044 private KerberosTime clientTime;
045 private EncryptionKey subSessionKey;
046 private int sequenceNumber;
047 private AuthorizationData authorizationData;
048
049
050 /**
051 * Returns the {@link Authenticator}.
052 *
053 * @return The {@link Authenticator}.
054 */
055 public Authenticator getAuthenticator()
056 {
057 if ( clientPrincipal == null )
058 {
059 clientPrincipal = clientModifier.getKerberosPrincipal();
060 }
061
062 return new Authenticator( versionNumber, clientPrincipal, checksum, clientMicroSecond, clientTime,
063 subSessionKey, sequenceNumber, authorizationData );
064 }
065
066
067 /**
068 * Sets the version number.
069 *
070 * @param versionNumber
071 */
072 public void setVersionNumber( int versionNumber )
073 {
074 this.versionNumber = versionNumber;
075 }
076
077
078 /**
079 * Sets the client {@link PrincipalName}.
080 *
081 * @param name
082 */
083 public void setClientName( PrincipalName name )
084 {
085 clientModifier.setPrincipalName( name );
086 }
087
088
089 /**
090 * Sets the client realm.
091 *
092 * @param realm
093 */
094 public void setClientRealm( String realm )
095 {
096 clientModifier.setRealm( realm );
097 }
098
099
100 /**
101 * Sets the client {@link KerberosPrincipal}.
102 *
103 * @param clientPrincipal
104 */
105 public void setClientPrincipal( KerberosPrincipal clientPrincipal )
106 {
107 this.clientPrincipal = clientPrincipal;
108 }
109
110
111 /**
112 * Sets the {@link AuthorizationData}.
113 *
114 * @param data
115 */
116 public void setAuthorizationData( AuthorizationData data )
117 {
118 authorizationData = data;
119 }
120
121
122 /**
123 * Sets the {@link Checksum}.
124 *
125 * @param checksum
126 */
127 public void setChecksum( Checksum checksum )
128 {
129 this.checksum = checksum;
130 }
131
132
133 /**
134 * Sets the client microsecond.
135 *
136 * @param microSecond
137 */
138 public void setClientMicroSecond( int microSecond )
139 {
140 clientMicroSecond = microSecond;
141 }
142
143
144 /**
145 * Sets the client {@link KerberosTime}.
146 *
147 * @param time
148 */
149 public void setClientTime( KerberosTime time )
150 {
151 clientTime = time;
152 }
153
154
155 /**
156 * Sets the sequence number.
157 *
158 * @param number
159 */
160 public void setSequenceNumber( int number )
161 {
162 sequenceNumber = number;
163 }
164
165
166 /**
167 * Sets the sub-session {@link EncryptionKey}.
168 *
169 * @param sessionKey
170 */
171 public void setSubSessionKey( EncryptionKey sessionKey )
172 {
173 subSessionKey = sessionKey;
174 }
175 }