Author: erodriguez
Date: Wed Oct 27 06:04:24 2004
New Revision: 55694

Added:
   
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/RequestBody.java
   
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/RequestBodyModifier.java
Modified:
   
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/io/decoder/KdcRequestDecoder.java
   
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/KdcRequest.java
Log:
Request body implementation, with decoder updates.

Modified: 
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/io/decoder/KdcRequestDecoder.java
==============================================================================
--- 
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/io/decoder/KdcRequestDecoder.java
        (original)
+++ 
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/io/decoder/KdcRequestDecoder.java
        Wed Oct 27 06:04:24 2004
@@ -52,7 +52,7 @@
                MessageType msgType = MessageType.NULL;
                
                PreAuthenticationData[] paData = null;
-               KdcReqBody reqBody = null;
+               RequestBody requestBody = null;
                
                for (Enumeration e = sequence.getObjects(); 
e.hasMoreElements();) {
                        DERTaggedObject object = ((DERTaggedObject) 
e.nextElement());
@@ -73,7 +73,7 @@
                                        break;
                                case 4:
                                        DERSequence tag4 = 
(DERSequence)derObject;
-                                       reqBody = decodeKdcRequestBody(tag4);
+                                       requestBody = decodeRequestBody(tag4);
                                        break;
                            default:
                                System.out.println(derObject);
@@ -81,7 +81,7 @@
                        }
                }
                
-               return new KdcRequest(pvno, msgType, paData, reqBody);
+               return new KdcRequest(pvno, msgType, paData, requestBody);
        }
 
        /*
@@ -143,9 +143,9 @@
                                 -- Encrypted AuthorizationData encoding
                    additional-tickets[11]       SEQUENCE OF Ticket OPTIONAL
        }*/
-       private KdcReqBody decodeKdcRequestBody(DERSequence sequence) throws 
IOException {
+       private RequestBody decodeRequestBody(DERSequence sequence) throws 
IOException {
                
-               KdcReqBody reqBody = new KdcReqBody();
+               RequestBodyModifier requestBodyModifier = new 
RequestBodyModifier();
                
                for (Enumeration e = sequence.getObjects(); 
e.hasMoreElements();) {
                        DERTaggedObject object = ((DERTaggedObject) 
e.nextElement());
@@ -154,59 +154,59 @@
                        switch (tag) {
                                case 0:
                                        DERBitString kdcOptions = 
(DERBitString)derObject;
-                                       reqBody.setKdcOptions(new 
KdcOptions(kdcOptions.getBytes()));
+                                       requestBodyModifier.setKdcOptions(new 
KdcOptions(kdcOptions.getBytes()));
                                        break;
                                case 1:
                                        DERSequence cName = 
(DERSequence)derObject;
-                                       
reqBody.setCname(decodePrincipalName(cName));
+                                       
requestBodyModifier.setCname(decodePrincipalName(cName));
                                        break;
                                case 2:
                                        DERGeneralString realm = 
(DERGeneralString)derObject;
-                                       reqBody.setRealm(new 
Realm(realm.getString()));
+                                       requestBodyModifier.setRealm(new 
Realm(realm.getString()));
                                        break;
                                case 3:
                                        DERSequence sname = 
(DERSequence)derObject;
-                                       
reqBody.setSname(decodePrincipalName(sname));
+                                       
requestBodyModifier.setSname(decodePrincipalName(sname));
                                        break;
                                case 4:
                                        DERGeneralizedTime from = 
(DERGeneralizedTime)derObject;
-                                       
reqBody.setFrom(decodeKerberosTime(from));
+                                       
requestBodyModifier.setFrom(decodeKerberosTime(from));
                                        break;
                                case 5:
                                        DERGeneralizedTime till = 
(DERGeneralizedTime)derObject;
-                                       
reqBody.setTill(decodeKerberosTime(till));
+                                       
requestBodyModifier.setTill(decodeKerberosTime(till));
                                        break;
                                case 6:
                                        DERGeneralizedTime rtime = 
(DERGeneralizedTime)derObject;
-                                       
reqBody.setRtime(decodeKerberosTime(rtime));
+                                       
requestBodyModifier.setRtime(decodeKerberosTime(rtime));
                                        break;
                                case 7:
                                        DERInteger nonce = 
(DERInteger)derObject;
-                                       
reqBody.setNonce(nonce.getValue().intValue());
+                                       
requestBodyModifier.setNonce(nonce.getValue().intValue());
                                        break;
                                case 8:
                                        DERSequence etype = 
(DERSequence)derObject;
-                                       
reqBody.setEType(decodeEncryptionType(etype));
+                                       
requestBodyModifier.setEType(decodeEncryptionType(etype));
                                        break;
                                case 9:
                                        DERSequence hostAddresses = 
(DERSequence)derObject;
-                                       
reqBody.setAddresses(decodeHostAddresses(hostAddresses));
+                                       
requestBodyModifier.setAddresses(decodeHostAddresses(hostAddresses));
                                        break;
                                case 10:
                                        DERSequence encryptedData = 
(DERSequence)derObject;
-                                       
reqBody.setEncAuthorizationData(decodeEncryptedData(encryptedData));
+                                       
requestBodyModifier.setEncAuthorizationData(decodeEncryptedData(encryptedData));
                                        break;
                                case 11:
                                        DERSequence tag11 = 
(DERSequence)derObject;
-                                       
reqBody.setAdditionalTickets(decodeTickets(tag11));
+                                       
requestBodyModifier.setAdditionalTickets(decodeTickets(tag11));
                                        break;
                            default:
-                               System.out.println("****** " + 
object.getObject());
+                               System.out.println(derObject);
                                break;
                        }
                }
                
-               return reqBody;
+               return requestBodyModifier.getRequestBody();
        }
        
        protected Ticket[] decodeTickets(DERSequence sequence) throws 
IOException {

Modified: 
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/KdcRequest.java
==============================================================================
--- 
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/KdcRequest.java
 (original)
+++ 
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/KdcRequest.java
 Wed Oct 27 06:04:24 2004
@@ -23,12 +23,15 @@
 public class KdcRequest extends KerberosMessage {
 
        private PreAuthenticationData[] _preAuthData; //optional
-       private KdcReqBody              _requestBody;
+       private RequestBody             _requestBody;
+       
+       // TODO - this is protocol workflow and a violation of the immutable 
request
+       private KerberosTime            _requestedRenewalTime;
 
        /**
         * Class constructor
         */
-       public KdcRequest(int pvno, MessageType msgType, 
PreAuthenticationData[] paData, KdcReqBody reqBody) {
+       public KdcRequest(int pvno, MessageType msgType, 
PreAuthenticationData[] paData, RequestBody reqBody) {
                super(pvno, msgType);
                _preAuthData = paData;
                _requestBody = reqBody;
@@ -41,7 +44,7 @@
                _preAuthData = paData;
        }
        
-       // KdcReqBody delegate methods
+       // RequestBody delegate methods
        public Ticket[] getAdditionalTickets() {
                return _requestBody.getAdditionalTickets();
        }
@@ -70,7 +73,10 @@
                return _requestBody.getNonce();
        }
        public KerberosTime getRtime() {
-               return _requestBody.getRtime();
+               if (_requestedRenewalTime == null) {
+                       return _requestBody.getRtime();
+               }
+               return _requestedRenewalTime;
        }
        public PrincipalName getSname() {
                return _requestBody.getSname();
@@ -80,10 +86,10 @@
        }
        
        public void setRtime(KerberosTime rtime) {
-               _requestBody.setRtime(rtime);
+               _requestedRenewalTime = rtime;
        }
        
-       // KdcReqBody KdcOptions delegate accesors
+       // RequestBody KdcOptions delegate accesors
        public boolean getOption(int option) {
                return _requestBody.getKdcOptions().get(option);
        }

Added: 
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/RequestBody.java
==============================================================================
--- (empty file)
+++ 
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/RequestBody.java
  Wed Oct 27 06:04:24 2004
@@ -0,0 +1,93 @@
+/*
+ *   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.value;
+
+import org.apache.kerberos.crypto.encryption.*;
+import org.apache.kerberos.messages.components.*;
+
+public class RequestBody {
+
+       private KdcOptions       _kdcOptions;
+       private PrincipalName    _cname;                //optional in TgsReq 
only
+       private Realm            _realm;
+       private PrincipalName    _sname;                //optional
+       private KerberosTime     _from;                 //optional
+       private KerberosTime     _till;
+       private KerberosTime     _rtime;                //optional
+       private int              _nonce;
+       private EncryptionType[] _eType;
+       private HostAddresses    _addresses;            //optional
+       private EncryptedData    _encAuthorizationData; //optional
+       private Ticket[]         _additionalTickets;    //optional
+
+       public RequestBody(KdcOptions kdcOptions, PrincipalName cname, Realm 
realm,
+                       PrincipalName sname, KerberosTime from, KerberosTime 
till, KerberosTime rtime,
+                       int nonce, EncryptionType[] eType, HostAddresses 
addresses, EncryptedData encAuthorizationData,
+                       Ticket[] additionalTickets) {
+               
+               _kdcOptions           = kdcOptions;
+               _cname                = cname;
+               _realm                = realm;
+               _sname                = sname;
+               _from                 = from;
+               _till                 = till;
+               _rtime                = rtime;
+               _nonce                = nonce;
+               _eType                = eType;
+               _addresses            = addresses;
+               _encAuthorizationData = encAuthorizationData;
+               _additionalTickets    = additionalTickets;
+       }
+
+       public Ticket[] getAdditionalTickets() {
+               return _additionalTickets;
+       }
+       public HostAddresses getAddresses() {
+               return _addresses;
+       }
+       public PrincipalName getCname() {
+               return _cname;
+       }
+       public Realm getRealm() {
+               return _realm;
+       }
+       public EncryptedData getEncAuthorizationData() {
+               return _encAuthorizationData;
+       }
+       public EncryptionType[] getEType() {
+               return _eType;
+       }
+       public KerberosTime getFrom() {
+               return _from;
+       }
+       public KdcOptions getKdcOptions() {
+               return _kdcOptions;
+       }
+       public int getNonce() {
+               return _nonce;
+       }
+       public KerberosTime getRtime() {
+               return _rtime;
+       }
+       public PrincipalName getSname() {
+               return _sname;
+       }
+       public KerberosTime getTill() {
+               return _till;
+       }
+}
+

Added: 
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/RequestBodyModifier.java
==============================================================================
--- (empty file)
+++ 
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/RequestBodyModifier.java
  Wed Oct 27 06:04:24 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.value;
+
+import org.apache.kerberos.crypto.encryption.*;
+import org.apache.kerberos.messages.components.*;
+
+public class RequestBodyModifier {
+       
+       private KdcOptions       _kdcOptions;
+       private PrincipalName    _cname;                //optional in TgsReq 
only
+       private Realm            _realm;
+       private PrincipalName    _sname;                //optional
+       private KerberosTime     _from;                 //optional
+       private KerberosTime     _till;
+       private KerberosTime     _rtime;                //optional
+       private int              _nonce;
+       private EncryptionType[] _eType;
+       private HostAddresses    _addresses;            //optional
+       private EncryptedData    _encAuthorizationData; //optional
+       private Ticket[]         _additionalTickets;    //optional
+       
+       public RequestBody getRequestBody() {
+               return new RequestBody(_kdcOptions, _cname, _realm, _sname, 
_from, _till, _rtime,
+                       _nonce, _eType, _addresses, _encAuthorizationData, 
_additionalTickets);
+       }
+       
+       public void setAdditionalTickets(Ticket[] tickets) {
+               _additionalTickets = tickets;
+       }
+       public void setAddresses(HostAddresses addresses) {
+               _addresses = addresses;
+       }
+       public void setCname(PrincipalName cname) {
+               _cname = cname;
+       }
+       public void setRealm(Realm realm) {
+               _realm = realm;
+       }
+       public void setEncAuthorizationData(EncryptedData authorizationData) {
+               _encAuthorizationData = authorizationData;
+       }
+       public void setEType(EncryptionType[] type) {
+               _eType = type;
+       }
+       public void setFrom(KerberosTime from) {
+               _from = from;
+       }
+       public void setKdcOptions(KdcOptions options) {
+               _kdcOptions = options;
+       }
+       public void setNonce(int nonce) {
+               _nonce = nonce;
+       }
+       public void setRtime(KerberosTime rtime) {
+               _rtime = rtime;
+       }
+       public void setSname(PrincipalName sname) {
+               _sname = sname;
+       }
+       public void setTill(KerberosTime till) {
+               _till = till;
+       }
+}
+

Reply via email to