Author: erodriguez Date: Sun Oct 3 16:48:46 2004 New Revision: 51858 Added: incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/KdcReply.java incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/KdcRequest.java incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/KerberosMessage.java incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/MessageType.java Log: kerberos message base classes
Added: incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/KdcReply.java ============================================================================== --- (empty file) +++ incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/KdcReply.java Sun Oct 3 16:48:46 2004 @@ -0,0 +1,161 @@ +/* + * Copyright 2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.apache.kerberos.messages; + +import org.apache.kerberos.kdc.*; +import org.apache.kerberos.messages.components.*; +import org.apache.kerberos.messages.value.*; + +public class KdcReply extends KerberosMessage { + + private PreAuthenticationData[] _paData; //optional + private Realm _crealm; + private PrincipalName _cname; + private Ticket _ticket; + + private EncKdcRepPart _encKDCRepPart = new EncKdcRepPart(); + private EncryptedData _encPart = new EncryptedData(); + + public KdcReply(MessageType msgType) { + super(LocalConfig.PVNO, msgType); + } + + public KdcReply(PreAuthenticationData[] paData, Realm crealm, PrincipalName cname, + Ticket ticket, EncryptedData encPart, MessageType msgType) { + + this(msgType); + _paData = paData; + _crealm = crealm; + _cname = cname; + _ticket = ticket; + _encPart = encPart; + } + + // getters + public PrincipalName getCname() { + return _cname; + } + public Realm getCrealm() { + return _crealm; + } + public EncryptedData getEncPart() { + return _encPart; + } + public PreAuthenticationData[] getPaData() { + return _paData; + } + public Ticket getTicket() { + return _ticket; + } + + // setters + public void setCname(PrincipalName cname) { + _cname = cname; + } + public void setCrealm(Realm crealm) { + _crealm = crealm; + } + public void setEncKDCRepPart(EncKdcRepPart repPart) { + _encKDCRepPart = repPart; + } + public void setEncPart(EncryptedData part) { + _encPart = part; + } + public void setPaData(PreAuthenticationData[] data) { + _paData = data; + } + public void setTicket(Ticket ticket) { + _ticket = ticket; + } + + // EncKdcRepPart delegate getters + public KerberosTime getAuthTime() { + return _encKDCRepPart.getAuthTime(); + } + public HostAddresses getClientAddresses() { + return _encKDCRepPart.getClientAddresses(); + } + public KerberosTime getEndTime() { + return _encKDCRepPart.getEndTime(); + } + public TicketFlags getFlags() { + return _encKDCRepPart.getFlags(); + } + public EncryptionKey getKey() { + return _encKDCRepPart.getKey(); + } + public KerberosTime getKeyExpiration() { + return _encKDCRepPart.getKeyExpiration(); + } + public LastRequest getLastRequest() { + return _encKDCRepPart.getLastRequest(); + } + public int getNonce() { + return _encKDCRepPart.getNonce(); + } + public KerberosTime getRenewTill() { + return _encKDCRepPart.getRenewTill(); + } + public PrincipalName getServerName() { + return _encKDCRepPart.getServerName(); + } + public Realm getServerRealm() { + return _encKDCRepPart.getServerRealm(); + } + public KerberosTime getStartTime() { + return _encKDCRepPart.getStartTime(); + } + + // EncKdcRepPart delegate setters + public void setAuthTime(KerberosTime time) { + _encKDCRepPart.setAuthTime(time); + } + public void setClientAddresses(HostAddresses addresses) { + _encKDCRepPart.setClientAddresses(addresses); + } + public void setEndTime(KerberosTime time) { + _encKDCRepPart.setEndTime(time); + } + public void setFlags(TicketFlags flags) { + _encKDCRepPart.setFlags(flags); + } + public void setKey(EncryptionKey key) { + _encKDCRepPart.setKey(key); + } + public void setKeyExpiration(KerberosTime expiration) { + _encKDCRepPart.setKeyExpiration(expiration); + } + public void setLastRequest(LastRequest request) { + _encKDCRepPart.setLastRequest(request); + } + public void setNonce(int nonce) { + _encKDCRepPart.setNonce(nonce); + } + public void setRenewTill(KerberosTime till) { + _encKDCRepPart.setRenewTill(till); + } + public void setServerName(PrincipalName name) { + _encKDCRepPart.setServerName(name); + } + public void setServerRealm(Realm realm) { + _encKDCRepPart.setServerRealm(realm); + } + public void setStartTime(KerberosTime time) { + _encKDCRepPart.setStartTime(time); + } +} + Added: incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/KdcRequest.java ============================================================================== --- (empty file) +++ incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/KdcRequest.java Sun Oct 3 16:48:46 2004 @@ -0,0 +1,97 @@ +/* + * Copyright 2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.apache.kerberos.messages; + +import org.apache.kerberos.crypto.encryption.*; +import org.apache.kerberos.messages.components.*; +import org.apache.kerberos.messages.value.*; + +public class KdcRequest extends KerberosMessage { + + private PreAuthenticationData[] _preAuthData; //optional + private KdcReqBody _requestBody; + + /** + * Class constructor + */ + public KdcRequest(int pvno, MessageType msgType, PreAuthenticationData[] paData, KdcReqBody reqBody) { + super(pvno, msgType); + _preAuthData = paData; + _requestBody = reqBody; + } + + public PreAuthenticationData[] getPaData() { + return _preAuthData; + } + public void setPaData(PreAuthenticationData[] paData) { + _preAuthData = paData; + } + + // KdcReqBody delegate methods + public Ticket[] getAdditionalTickets() { + return _requestBody.getAdditionalTickets(); + } + public HostAddresses getAddresses() { + return _requestBody.getAddresses(); + } + public PrincipalName getCname() { + return _requestBody.getCname(); + } + public Realm getRealm() { + return _requestBody.getRealm(); + } + public EncryptedData getEncAuthorizationData() { + return _requestBody.getEncAuthorizationData(); + } + public EncryptionType[] getEType() { + return _requestBody.getEType(); + } + public KerberosTime getFrom() { + return _requestBody.getFrom(); + } + public KdcOptions getKdcOptions() { + return _requestBody.getKdcOptions(); + } + public int getNonce() { + return _requestBody.getNonce(); + } + public KerberosTime getRtime() { + return _requestBody.getRtime(); + } + public PrincipalName getSname() { + return _requestBody.getSname(); + } + public KerberosTime getTill() { + return _requestBody.getTill(); + } + + public void setRtime(KerberosTime rtime) { + _requestBody.setRtime(rtime); + } + + // KdcReqBody KdcOptions delegate accesors + public boolean getOption(int option) { + return _requestBody.getKdcOptions().get(option); + } + public void setOption(int option) { + _requestBody.getKdcOptions().set(option); + } + public void clearOption(int option) { + _requestBody.getKdcOptions().clear(option); + } +} + Added: incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/KerberosMessage.java ============================================================================== --- (empty file) +++ incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/KerberosMessage.java Sun Oct 3 16:48:46 2004 @@ -0,0 +1,42 @@ +/* + * Copyright 2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.apache.kerberos.messages; + +public class KerberosMessage { + + private int _protocolVersionNumber; + private MessageType _messageType; + + public KerberosMessage(int versionNumber, MessageType type) { + _protocolVersionNumber = versionNumber; + _messageType = type; + } + + public MessageType getMessageType() { + return _messageType; + } + public void setMessageType(MessageType type) { + _messageType = type; + } + public int getProtocolVersionNumber() { + return _protocolVersionNumber; + } + public void setProtocolVersionNumber(int versionNumber) { + _protocolVersionNumber = versionNumber; + } +} + Added: incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/MessageType.java ============================================================================== --- (empty file) +++ incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/MessageType.java Sun Oct 3 16:48:46 2004 @@ -0,0 +1,79 @@ +/* + * Copyright 2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.apache.kerberos.messages; + +import java.util.*; + +public final class MessageType implements Comparable { + + /** + * Enumeration elements are constructed once upon class loading. + * Order of appearance here determines the order of compareTo. + */ + public static final MessageType NULL = new MessageType(0, "null"); + public static final MessageType KRB_AS_REQ = new MessageType(10, "initial authentication request"); + public static final MessageType KRB_AS_REP = new MessageType(11, "initial authentication response"); + public static final MessageType KRB_TGS_REQ = new MessageType(12, "request for authentication based on TGT"); + public static final MessageType KRB_TGS_REP = new MessageType(13, "response to authentication based on TGT"); + public static final MessageType KRB_AP_REQ = new MessageType(14, "application request"); + public static final MessageType KRB_AP_REP = new MessageType(15, "application response"); + public static final MessageType KRB_SAFE = new MessageType(20, "safe (checksummed) application message"); + public static final MessageType KRB_PRIV = new MessageType(21, "private (encrypted) application message"); + public static final MessageType KRB_CRED = new MessageType(22, "private (encrypted) message to forward credentials"); + public static final MessageType KRB_ERROR = new MessageType(30, "error response"); + + public String toString() { + return _fName + " (" + _fOrdinal + ")"; + } + + public int compareTo(Object that) { + return _fOrdinal - ((MessageType) that)._fOrdinal; + } + + public static MessageType getTypeByOrdinal(int type) { + for (int i = 0; i < fValues.length; i++) + if (fValues[i]._fOrdinal == type) + return fValues[i]; + return NULL; + } + + public int getOrdinal() { + return _fOrdinal; + } + + /// PRIVATE ///// + private final String _fName; + private final int _fOrdinal; + + /** + * Private constructor prevents construction outside of this class. + */ + private MessageType(int ordinal, String name) { + _fOrdinal = ordinal; + _fName = name; + } + + /** + * These two lines are all that's necessary to export a List of VALUES. + */ + private static final MessageType[] fValues = {NULL, KRB_AS_REQ, KRB_AS_REP, KRB_TGS_REQ, + KRB_TGS_REP, KRB_AP_REQ, KRB_AP_REP, KRB_SAFE, KRB_PRIV, KRB_CRED, KRB_ERROR}; + // VALUES needs to be located here, otherwise illegal forward reference + public static final List VALUES = Collections.unmodifiableList(Arrays.asList(fValues)); + +} +
