Author: erodriguez
Date: Sun Oct 17 04:45:09 2004
New Revision: 54955

Added:
   
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/AuthorizationData.java
   
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/AuthorizationDataEntry.java
   
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/AuthorizationType.java
Modified:
   
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/io/decoder/KerberosMessageDecoder.java
   
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/io/encoder/KerberosMessageEncoder.java
Log:
Authorization Data implementation, with ASN.1 codec updates resulting from 
type-safety.

Modified: 
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/io/decoder/KerberosMessageDecoder.java
==============================================================================
--- 
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/io/decoder/KerberosMessageDecoder.java
   (original)
+++ 
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/io/decoder/KerberosMessageDecoder.java
   Sun Oct 17 04:45:09 2004
@@ -347,7 +347,7 @@
        
        protected AuthorizationDataEntry decodeAuthorizationEntry(DERSequence 
sequence) {
                
-               int type = 0;
+               AuthorizationType type = AuthorizationType.NULL;
                byte[] data = null;
                
                for (Enumeration e = sequence.getObjects(); 
e.hasMoreElements();) {
@@ -358,7 +358,7 @@
                        switch (tag) {
                                case 0:
                                        DERInteger tag0 = (DERInteger)derObject;
-                                       type = tag0.getValue().intValue();
+                                       type = 
AuthorizationType.getTypeByOrdinal(tag0.getValue().intValue());
                                        break;
                                case 1:
                                        DEROctetString tag1 = 
(DEROctetString)derObject;

Modified: 
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/io/encoder/KerberosMessageEncoder.java
==============================================================================
--- 
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/io/encoder/KerberosMessageEncoder.java
   (original)
+++ 
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/io/encoder/KerberosMessageEncoder.java
   Sun Oct 17 04:45:09 2004
@@ -277,7 +277,7 @@
                while (it.hasNext()) {
                        AuthorizationDataEntry entry = 
(AuthorizationDataEntry)it.next();
                        ASN1EncodableVector vector = new ASN1EncodableVector();
-                       vector.add(new DERTaggedObject(0, new 
DERInteger(entry.getAuthorizationDataType())));
+                       vector.add(new DERTaggedObject(0, new 
DERInteger(entry.getAuthorizationDataType().getOrdinal())));
                        vector.add(new DERTaggedObject(1, new 
DEROctetString(entry.getAuthorizationData())));
                        outerVector.add(new DERSequence(vector));
                }

Added: 
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/AuthorizationData.java
==============================================================================
--- (empty file)
+++ 
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/AuthorizationData.java
    Sun Oct 17 04:45:09 2004
@@ -0,0 +1,44 @@
+/*
+ *   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 java.util.*;
+
+public class AuthorizationData {
+       
+       private List _entries = new ArrayList();
+
+       /**
+        * Class constructor
+        */
+       public AuthorizationData() {
+               // used by ASN.1 decoder
+       }
+       
+       public void add(AuthorizationData data) {
+               _entries.addAll(data._entries);
+       }
+       
+       public void add(AuthorizationDataEntry entry) {
+               _entries.add(entry);
+       }
+       
+       public Iterator iterator() {
+               return _entries.iterator();
+       }
+}
+

Added: 
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/AuthorizationDataEntry.java
==============================================================================
--- (empty file)
+++ 
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/AuthorizationDataEntry.java
       Sun Oct 17 04:45:09 2004
@@ -0,0 +1,39 @@
+/*
+ *   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;
+
+public class AuthorizationDataEntry {
+
+       private AuthorizationType _authorizationDataType;
+       private byte[]            _authorizationData;
+
+       /**
+        * Class constructor
+        */
+       public AuthorizationDataEntry(AuthorizationType adType, byte[] adData) {
+               _authorizationDataType = adType;
+               _authorizationData     = adData;
+       }
+
+       public byte[] getAuthorizationData() {
+               return _authorizationData;
+       }
+       public AuthorizationType getAuthorizationDataType() {
+               return _authorizationDataType;
+       }
+}
+

Added: 
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/AuthorizationType.java
==============================================================================
--- (empty file)
+++ 
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/AuthorizationType.java
    Sun Oct 17 04:45:09 2004
@@ -0,0 +1,78 @@
+/*
+ *   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 java.util.*;
+
+public final class AuthorizationType implements Comparable {
+
+       /**
+        * Enumeration elements are constructed once upon class loading.
+        * Order of appearance here determines the order of compareTo.
+        */
+       public static final AuthorizationType NULL                = new 
AuthorizationType(0, "null");
+       public static final AuthorizationType IF_RELEVANT         = new 
AuthorizationType(1, "if relevant");
+       public static final AuthorizationType INTENDED_FOR_SERVER = new 
AuthorizationType(2, "intended for server");
+       public static final AuthorizationType INTENDED_FOR_APPLICATION_CLASS = 
new AuthorizationType(3, "intended for application class");
+       public static final AuthorizationType KDC_ISSUED          = new 
AuthorizationType(4, "kdc issued");
+       public static final AuthorizationType OR                  = new 
AuthorizationType(5, "or");
+       public static final AuthorizationType MANDATORY_TICKET_EXTENSIONS    = 
new AuthorizationType(6, "mandatory ticket extensions");
+       public static final AuthorizationType IN_TICKET_EXTENSIONS           = 
new AuthorizationType(7, "in ticket extensions");
+       public static final AuthorizationType OSF_DCE             = new 
AuthorizationType(64, "OSF DCE");
+       public static final AuthorizationType SESAME              = new 
AuthorizationType(65, "sesame");
+       
+       public String toString() {
+               return _fName + " (" + _fOrdinal + ")";
+       }
+
+       public int compareTo(Object that) {
+               return _fOrdinal - ((AuthorizationType) that)._fOrdinal;
+       }
+
+       public static AuthorizationType 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 AuthorizationType(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 AuthorizationType[] fValues = {NULL, IF_RELEVANT, 
INTENDED_FOR_SERVER,
+                       INTENDED_FOR_APPLICATION_CLASS, KDC_ISSUED, OR, 
MANDATORY_TICKET_EXTENSIONS,
+                       IN_TICKET_EXTENSIONS, OSF_DCE, SESAME};
+       // VALUES needs to be located here, otherwise illegal forward reference
+       public static final List VALUES = 
Collections.unmodifiableList(Arrays.asList(fValues));
+}
+

Reply via email to