Author: erodriguez
Date: Wed Feb 2 21:55:46 2005
New Revision: 151128
URL: http://svn.apache.org/viewcvs?view=rev&rev=151128
Log:
Moved Kerberos decoders to use object composition.
Added:
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/ChecksumDecoder.java
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncryptionKeyDecoder.java
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncryptionTypeDecoder.java
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/HostAddressDecoder.java
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/KerberosTimeDecoder.java
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/LastRequestDecoder.java
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/PrincipalNameDecoder.java
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/TicketDecoder.java
Removed:
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/KerberosMessageDecoder.java
Modified:
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/ApplicationRequestDecoder.java
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/AuthenticatorDecoder.java
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/AuthorizationDataDecoder.java
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncKrbPrivPartDecoder.java
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncTicketPartDecoder.java
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncryptedDataDecoder.java
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncryptedTimestampDecoder.java
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/KdcRequestDecoder.java
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/PrivateMessageDecoder.java
Modified:
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/ApplicationRequestDecoder.java
URL:
http://svn.apache.org/viewcvs/incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/ApplicationRequestDecoder.java?view=diff&r1=151127&r2=151128
==============================================================================
---
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/ApplicationRequestDecoder.java
(original)
+++
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/ApplicationRequestDecoder.java
Wed Feb 2 21:55:46 2005
@@ -32,7 +32,7 @@
import org.apache.kerberos.messages.value.ApOptions;
-public class ApplicationRequestDecoder extends KerberosMessageDecoder
+public class ApplicationRequestDecoder
{
public ApplicationRequest decode( byte[] encodedAuthHeader ) throws
IOException
{
@@ -80,17 +80,15 @@
break;
case 3:
DERApplicationSpecific tag3 =
(DERApplicationSpecific)derObject;
- authHeader.setTicket( decodeTicket(
tag3 ) );
+ authHeader.setTicket(
TicketDecoder.decode( tag3 ) );
break;
case 4:
DERSequence tag4 =
(DERSequence)derObject;
- authHeader.setEncPart(
decodeEncryptedData( tag4 ) );
+ authHeader.setEncPart(
EncryptedDataDecoder.decode( tag4 ) );
break;
- default:
- System.out.println( derObject );
- break;
}
}
+
return authHeader;
}
}
Modified:
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/AuthenticatorDecoder.java
URL:
http://svn.apache.org/viewcvs/incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/AuthenticatorDecoder.java?view=diff&r1=151127&r2=151128
==============================================================================
---
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/AuthenticatorDecoder.java
(original)
+++
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/AuthenticatorDecoder.java
Wed Feb 2 21:55:46 2005
@@ -32,7 +32,7 @@
import org.apache.kerberos.messages.components.AuthenticatorModifier;
-public class AuthenticatorDecoder extends KerberosMessageDecoder
+public class AuthenticatorDecoder
{
public Authenticator decode( byte[] encodedAuthenticator ) throws
IOException
{
@@ -42,7 +42,7 @@
DERSequence sequence = (DERSequence) app.getObject();
- return decodeAuthenticator( sequence );
+ return decode( sequence );
}
/**
@@ -61,7 +61,7 @@
* authorization-data[8] AuthorizationData
OPTIONAL
* }
*/
- private Authenticator decodeAuthenticator( DERSequence sequence )
+ protected static Authenticator decode( DERSequence sequence )
{
AuthenticatorModifier modifier = new AuthenticatorModifier();
@@ -83,11 +83,11 @@
break;
case 2:
DERSequence tag2 =
(DERSequence)derObject;
- modifier.setClientName(
decodePrincipalName( tag2 ) );
+ modifier.setClientName(
PrincipalNameDecoder.decode( tag2 ) );
break;
case 3:
DERSequence tag3 =
(DERSequence)derObject;
- modifier.setChecksum( decodeChecksum(
tag3 ) );
+ modifier.setChecksum(
ChecksumDecoder.decode( tag3 ) );
break;
case 4:
DERInteger tag4 = (DERInteger)derObject;
@@ -95,11 +95,11 @@
break;
case 5:
DERGeneralizedTime tag5 =
(DERGeneralizedTime)derObject;
- modifier.setClientTime(
decodeKerberosTime( tag5 ) );
+ modifier.setClientTime(
KerberosTimeDecoder.decode( tag5 ) );
break;
case 6:
DERSequence tag6 = (DERSequence)
derObject;
- modifier.setSubSessionKey(
decodeEncryptionKey( tag6 ) );
+ modifier.setSubSessionKey(
EncryptionKeyDecoder.decode( tag6 ) );
break;
case 7:
DERInteger tag7 = (DERInteger)derObject;
@@ -107,11 +107,8 @@
break;
case 8:
DERSequence tag8 =
(DERSequence)derObject;
- modifier.setAuthorizationData(
decodeAuthorizationData( tag8 ) );
+ modifier.setAuthorizationData(
AuthorizationDataDecoder.decodeSequence( tag8 ) );
break;
- default:
- System.out.println( derObject );
- break;
}
}
Modified:
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/AuthorizationDataDecoder.java
URL:
http://svn.apache.org/viewcvs/incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/AuthorizationDataDecoder.java?view=diff&r1=151127&r2=151128
==============================================================================
---
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/AuthorizationDataDecoder.java
(original)
+++
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/AuthorizationDataDecoder.java
Wed Feb 2 21:55:46 2005
@@ -18,13 +18,20 @@
package org.apache.kerberos.io.decoder;
import java.io.IOException;
+import java.util.Enumeration;
import org.apache.asn1.der.ASN1InputStream;
+import org.apache.asn1.der.DEREncodable;
+import org.apache.asn1.der.DERInteger;
+import org.apache.asn1.der.DEROctetString;
import org.apache.asn1.der.DERSequence;
+import org.apache.asn1.der.DERTaggedObject;
import org.apache.kerberos.messages.value.AuthorizationData;
+import org.apache.kerberos.messages.value.AuthorizationDataEntry;
+import org.apache.kerberos.messages.value.AuthorizationType;
-public class AuthorizationDataDecoder extends KerberosMessageDecoder
+public class AuthorizationDataDecoder
{
public AuthorizationData decode( byte[] encodedAuthData ) throws
IOException
{
@@ -32,7 +39,54 @@
DERSequence sequence = (DERSequence) ais.readObject();
- return decodeAuthorizationData( sequence );
+ return decodeSequence( sequence );
+ }
+
+ /**
+ * AuthorizationData ::= SEQUENCE OF SEQUENCE {
+ * ad-type[0] INTEGER,
+ * ad-data[1] OCTET STRING
+ * }
+ */
+ protected static AuthorizationData decodeSequence( DERSequence sequence
)
+ {
+ AuthorizationData authData = new AuthorizationData();
+
+ for ( Enumeration e = sequence.getObjects();
e.hasMoreElements(); )
+ {
+ DERSequence object = (DERSequence) e.nextElement();
+ AuthorizationDataEntry entry =
decodeAuthorizationEntry( object );
+ authData.add( entry );
+ }
+
+ return authData;
+ }
+
+ protected static AuthorizationDataEntry decodeAuthorizationEntry(
DERSequence sequence )
+ {
+ AuthorizationType type = AuthorizationType.NULL;
+ byte[] data = null;
+
+ for ( Enumeration e = sequence.getObjects();
e.hasMoreElements(); )
+ {
+ DERTaggedObject object = (DERTaggedObject)
e.nextElement();
+ int tag = object.getTagNo();
+ DEREncodable derObject = object.getObject();
+
+ switch ( tag )
+ {
+ case 0:
+ DERInteger tag0 = (DERInteger)derObject;
+ type =
AuthorizationType.getTypeByOrdinal( tag0.intValue() );
+ break;
+ case 1:
+ DEROctetString tag1 =
(DEROctetString)derObject;
+ data = tag1.getOctets();
+ break;
+ }
+ }
+
+ return new AuthorizationDataEntry( type, data );
}
}
Added:
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/ChecksumDecoder.java
URL:
http://svn.apache.org/viewcvs/incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/ChecksumDecoder.java?view=auto&rev=151128
==============================================================================
---
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/ChecksumDecoder.java
(added)
+++
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/ChecksumDecoder.java
Wed Feb 2 21:55:46 2005
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2005 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.io.decoder;
+
+import java.util.Enumeration;
+
+import org.apache.asn1.der.DEREncodable;
+import org.apache.asn1.der.DERInteger;
+import org.apache.asn1.der.DEROctetString;
+import org.apache.asn1.der.DERSequence;
+import org.apache.asn1.der.DERTaggedObject;
+import org.apache.kerberos.crypto.checksum.ChecksumType;
+import org.apache.kerberos.messages.value.Checksum;
+
+
+public class ChecksumDecoder
+{
+ /**
+ * Checksum ::= SEQUENCE {
+ * cksumtype[0] INTEGER,
+ * checksum[1] OCTET STRING
+ * }
+ */
+ protected static Checksum decode( DERSequence sequence )
+ {
+ ChecksumType type = ChecksumType.NULL;
+ byte[] data = null;
+
+ for ( Enumeration e = sequence.getObjects();
e.hasMoreElements(); )
+ {
+ DERTaggedObject object = (DERTaggedObject)
e.nextElement();
+ int tag = object.getTagNo();
+ DEREncodable derObject = object.getObject();
+
+ switch ( tag )
+ {
+ case 0:
+ DERInteger tag0 = (DERInteger)derObject;
+ type = ChecksumType.getTypeByOrdinal(
tag0.intValue() );
+ break;
+ case 1:
+ DEROctetString tag1 =
(DEROctetString)derObject;
+ data = tag1.getOctets();
+ break;
+ }
+ }
+
+ return new Checksum( type, data );
+ }
+}
+
Modified:
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncKrbPrivPartDecoder.java
URL:
http://svn.apache.org/viewcvs/incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncKrbPrivPartDecoder.java?view=diff&r1=151127&r2=151128
==============================================================================
---
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncKrbPrivPartDecoder.java
(original)
+++
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncKrbPrivPartDecoder.java
Wed Feb 2 21:55:46 2005
@@ -32,7 +32,7 @@
import org.apache.kerberos.messages.components.EncKrbPrivPartModifier;
-public class EncKrbPrivPartDecoder extends KerberosMessageDecoder
+public class EncKrbPrivPartDecoder
{
public EncKrbPrivPart decode( byte[] encodedPrivatePart ) throws
IOException
{
@@ -62,7 +62,7 @@
break;
case 1:
DERGeneralizedTime tag1 =
(DERGeneralizedTime) derObject;
- modifier.setTimestamp(
decodeKerberosTime( tag1 ) );
+ modifier.setTimestamp(
KerberosTimeDecoder.decode( tag1 ) );
break;
case 2:
DERInteger tag2 = (DERInteger)derObject;
@@ -74,15 +74,12 @@
break;
case 4:
DERSequence tag4 =
(DERSequence)derObject;
- modifier.setSenderAddress(
decodeHostAddress( tag4 ) );
+ modifier.setSenderAddress(
HostAddressDecoder.decode( tag4 ) );
break;
case 5:
DERSequence tag5 =
(DERSequence)derObject;
- modifier.setRecipientAddress(
decodeHostAddress( tag5 ) );
+ modifier.setRecipientAddress(
HostAddressDecoder.decode( tag5 ) );
break;
- default:
- System.out.println( derObject );
- break;
}
}
return modifier.getEncKrbPrivPart();
Modified:
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncTicketPartDecoder.java
URL:
http://svn.apache.org/viewcvs/incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncTicketPartDecoder.java?view=diff&r1=151127&r2=151128
==============================================================================
---
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncTicketPartDecoder.java
(original)
+++
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncTicketPartDecoder.java
Wed Feb 2 21:55:46 2005
@@ -26,14 +26,18 @@
import org.apache.asn1.der.DEREncodable;
import org.apache.asn1.der.DERGeneralString;
import org.apache.asn1.der.DERGeneralizedTime;
+import org.apache.asn1.der.DERInteger;
+import org.apache.asn1.der.DEROctetString;
import org.apache.asn1.der.DERSequence;
import org.apache.asn1.der.DERTaggedObject;
import org.apache.kerberos.messages.components.EncTicketPart;
import org.apache.kerberos.messages.components.EncTicketPartModifier;
import org.apache.kerberos.messages.value.TicketFlags;
+import org.apache.kerberos.messages.value.TransitedEncoding;
+import org.apache.kerberos.messages.value.TransitedEncodingType;
-public class EncTicketPartDecoder extends KerberosMessageDecoder
+public class EncTicketPartDecoder
{
public EncTicketPart decode( byte[] encodedTicket ) throws IOException
{
@@ -61,23 +65,25 @@
caddr[9] HostAddresses OPTIONAL,
authorization-data[10] AuthorizationData
OPTIONAL
}*/
- private EncTicketPart decodeEncTicketPartSequence( DERSequence sequence
) {
-
+ private EncTicketPart decodeEncTicketPartSequence( DERSequence sequence
)
+ {
EncTicketPartModifier modifier = new EncTicketPartModifier();
- for ( Enumeration e = sequence.getObjects();
e.hasMoreElements(); ) {
+ for ( Enumeration e = sequence.getObjects();
e.hasMoreElements(); )
+ {
DERTaggedObject object = (DERTaggedObject)
e.nextElement();
int tag = object.getTagNo();
DEREncodable derObject = object.getObject();
- switch ( tag ) {
+ switch ( tag )
+ {
case 0:
DERBitString tag0 =
(DERBitString)derObject;
modifier.setFlags( new TicketFlags(
tag0.getOctets() ) );
break;
case 1:
DERSequence tag1 = (DERSequence)
derObject;
- modifier.setSessionKey(
decodeEncryptionKey( tag1 ) );
+ modifier.setSessionKey(
EncryptionKeyDecoder.decode( tag1 ) );
break;
case 2:
DERGeneralString tag2 =
(DERGeneralString)derObject;
@@ -85,7 +91,7 @@
break;
case 3:
DERSequence tag3 =
(DERSequence)derObject;
- modifier.setClientName(
decodePrincipalName( tag3 ) );
+ modifier.setClientName(
PrincipalNameDecoder.decode( tag3 ) );
break;
case 4:
DERSequence tag4 =
(DERSequence)derObject;
@@ -93,34 +99,62 @@
break;
case 5:
DERGeneralizedTime tag5 =
(DERGeneralizedTime)derObject;
- modifier.setAuthTime(
decodeKerberosTime( tag5 ) );
+ modifier.setAuthTime(
KerberosTimeDecoder.decode( tag5 ) );
break;
case 6:
DERGeneralizedTime tag6 =
(DERGeneralizedTime)derObject;
- modifier.setStartTime(
decodeKerberosTime( tag6 ) );
+ modifier.setStartTime(
KerberosTimeDecoder.decode( tag6 ) );
break;
case 7:
DERGeneralizedTime tag7 =
(DERGeneralizedTime)derObject;
- modifier.setEndTime(
decodeKerberosTime( tag7 ) );
+ modifier.setEndTime(
KerberosTimeDecoder.decode( tag7 ) );
break;
case 8:
DERGeneralizedTime tag8 =
(DERGeneralizedTime)derObject;
- modifier.setRenewTill(
decodeKerberosTime( tag8 ) );
+ modifier.setRenewTill(
KerberosTimeDecoder.decode( tag8 ) );
break;
case 9:
DERSequence tag9 =
(DERSequence)derObject;
- modifier.setClientAddresses(
decodeHostAddresses( tag9 ) );
+ modifier.setClientAddresses(
HostAddressDecoder.decodeSequence( tag9 ) );
break;
case 10:
DERSequence tag10 =
(DERSequence)derObject;
- modifier.setAuthorizationData(
decodeAuthorizationData( tag10 ) );
+ modifier.setAuthorizationData(
AuthorizationDataDecoder.decodeSequence( tag10 ) );
break;
- default:
- System.out.println( derObject );
- break;
}
}
return modifier.getEncTicketPart();
+ }
+
+ /*
+ * TransitedEncoding ::= SEQUENCE { tr-type[0] INTEGER, -- must be
+ * registered contents[1] OCTET STRING }
+ */
+ protected TransitedEncoding decodeTransitedEncoding( DERSequence
sequence )
+ {
+ TransitedEncodingType type = TransitedEncodingType.NULL;
+ byte[] contents = null;
+
+ for ( Enumeration e = sequence.getObjects();
e.hasMoreElements(); )
+ {
+ DERTaggedObject object = (DERTaggedObject)
e.nextElement();
+ int tag = object.getTagNo();
+ DEREncodable derObject = object.getObject();
+
+ switch ( tag )
+ {
+ case 0:
+ DERInteger tag0 = (DERInteger)
derObject;
+ type =
TransitedEncodingType.getTypeByOrdinal( tag0.intValue() );
+ break;
+ case 1:
+ DEROctetString tag1 = (DEROctetString)
derObject;
+ contents = tag1.getOctets();
+ break;
+ }
+ }
+
+ return new TransitedEncoding( type, contents );
}
}
Modified:
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncryptedDataDecoder.java
URL:
http://svn.apache.org/viewcvs/incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncryptedDataDecoder.java?view=diff&r1=151127&r2=151128
==============================================================================
---
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncryptedDataDecoder.java
(original)
+++
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncryptedDataDecoder.java
Wed Feb 2 21:55:46 2005
@@ -18,21 +18,65 @@
package org.apache.kerberos.io.decoder;
import java.io.IOException;
+import java.util.Enumeration;
import org.apache.asn1.der.ASN1InputStream;
+import org.apache.asn1.der.DEREncodable;
+import org.apache.asn1.der.DERInteger;
+import org.apache.asn1.der.DEROctetString;
import org.apache.asn1.der.DERSequence;
+import org.apache.asn1.der.DERTaggedObject;
+import org.apache.kerberos.crypto.encryption.EncryptionType;
import org.apache.kerberos.messages.value.EncryptedData;
+import org.apache.kerberos.messages.value.EncryptedDataModifier;
-public class EncryptedDataDecoder extends KerberosMessageDecoder
+public class EncryptedDataDecoder
{
- public EncryptedData decode( byte[] encodedEncryptedData ) throws
IOException
+ public static EncryptedData decode( byte[] encodedEncryptedData )
throws IOException
{
ASN1InputStream ais = new ASN1InputStream( encodedEncryptedData
);
DERSequence sequence = (DERSequence) ais.readObject();
- return decodeEncryptedData( sequence );
+ return decode( sequence );
+ }
+
+ /**
+ * EncryptedData ::= SEQUENCE {
+ * etype[0] INTEGER, -- EncryptionEngine
+ * kvno[1] INTEGER OPTIONAL,
+ * cipher[2] OCTET STRING -- ciphertext
+ * }
+ */
+ protected static EncryptedData decode( DERSequence sequence )
+ {
+ EncryptedDataModifier modifier = new EncryptedDataModifier();
+
+ for ( Enumeration e = sequence.getObjects();
e.hasMoreElements(); )
+ {
+ DERTaggedObject object = (DERTaggedObject)
e.nextElement();
+ int tag = object.getTagNo();
+ DEREncodable derObject = object.getObject();
+
+ switch ( tag )
+ {
+ case 0:
+ DERInteger etype =
(DERInteger)derObject;
+ modifier.setEncryptionType(
EncryptionType.getTypeByOrdinal( etype.intValue() ) );
+ break;
+ case 1:
+ DERInteger kvno = (DERInteger)derObject;
+ modifier.setKeyVersion( kvno.intValue()
);
+ break;
+ case 2:
+ DEROctetString cipher =
(DEROctetString)derObject;
+ modifier.setCipherText(
cipher.getOctets() );
+ break;
+ }
+ }
+
+ return modifier.getEncryptedData();
}
}
Modified:
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncryptedTimestampDecoder.java
URL:
http://svn.apache.org/viewcvs/incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncryptedTimestampDecoder.java?view=diff&r1=151127&r2=151128
==============================================================================
---
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncryptedTimestampDecoder.java
(original)
+++
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncryptedTimestampDecoder.java
Wed Feb 2 21:55:46 2005
@@ -38,7 +38,7 @@
* pausec[1] INTEGER OPTIONAL
* }
*/
-public class EncryptedTimestampDecoder extends KerberosMessageDecoder
+public class EncryptedTimestampDecoder
{
public EncryptedTimeStamp decode( byte[] encodedEncryptedTimestamp )
throws IOException
{
@@ -63,15 +63,12 @@
{
case 0:
DERGeneralizedTime tag0 =
(DERGeneralizedTime)derObject;
- modifier.setKerberosTime(
decodeKerberosTime( tag0 ) );
+ modifier.setKerberosTime(
KerberosTimeDecoder.decode( tag0 ) );
break;
case 1:
DERInteger tag1 = (DERInteger)derObject;
modifier.setMicroSecond(
tag1.intValue() );
break;
- default:
- System.out.println( object.getObject() );
- break;
}
}
Added:
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncryptionKeyDecoder.java
URL:
http://svn.apache.org/viewcvs/incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncryptionKeyDecoder.java?view=auto&rev=151128
==============================================================================
---
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncryptionKeyDecoder.java
(added)
+++
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncryptionKeyDecoder.java
Wed Feb 2 21:55:46 2005
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2005 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.io.decoder;
+
+import java.util.Enumeration;
+
+import org.apache.asn1.der.DEREncodable;
+import org.apache.asn1.der.DERInteger;
+import org.apache.asn1.der.DEROctetString;
+import org.apache.asn1.der.DERSequence;
+import org.apache.asn1.der.DERTaggedObject;
+import org.apache.kerberos.crypto.encryption.EncryptionType;
+import org.apache.kerberos.messages.value.EncryptionKey;
+
+
+public class EncryptionKeyDecoder
+{
+ /**
+ * EncryptionKey ::= SEQUENCE {
+ * keytype[0] INTEGER,
+ * keyvalue[1] OCTET STRING
+ * }
+ */
+ protected static EncryptionKey decode( DERSequence sequence )
+ {
+ EncryptionType type = EncryptionType.NULL;
+ byte[] data = null;
+
+ for ( Enumeration e = sequence.getObjects();
e.hasMoreElements(); )
+ {
+ DERTaggedObject object = (DERTaggedObject)
e.nextElement();
+ int tag = object.getTagNo();
+ DEREncodable derObject = object.getObject();
+
+ switch ( tag )
+ {
+ case 0:
+ DERInteger tag0 = (DERInteger)derObject;
+ type = EncryptionType.getTypeByOrdinal(
tag0.intValue() );
+ break;
+ case 1:
+ DEROctetString tag1 =
(DEROctetString)derObject;
+ data = tag1.getOctets();
+ break;
+ }
+ }
+
+ return new EncryptionKey( type, data );
+ }
+}
+
Added:
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncryptionTypeDecoder.java
URL:
http://svn.apache.org/viewcvs/incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncryptionTypeDecoder.java?view=auto&rev=151128
==============================================================================
---
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncryptionTypeDecoder.java
(added)
+++
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/EncryptionTypeDecoder.java
Wed Feb 2 21:55:46 2005
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2005 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.io.decoder;
+
+import java.util.Enumeration;
+
+import org.apache.asn1.der.DERInteger;
+import org.apache.asn1.der.DERSequence;
+import org.apache.kerberos.crypto.encryption.EncryptionType;
+
+
+public class EncryptionTypeDecoder
+{
+ /**
+ * etype[8] SEQUENCE OF INTEGER, -- EncryptionEngine,
+ * -- in preference order
+ */
+ protected static EncryptionType[] decode( DERSequence sequence )
+ {
+ EncryptionType[] eTypes = new EncryptionType[ sequence.size() ];
+
+ int ii = 0;
+ for ( Enumeration e = sequence.getObjects();
e.hasMoreElements(); )
+ {
+ DERInteger object = (DERInteger) e.nextElement();
+ eTypes[ii] = EncryptionType.getTypeByOrdinal(
object.intValue() );
+ ii++;
+ }
+
+ return eTypes;
+ }
+}
+
Added:
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/HostAddressDecoder.java
URL:
http://svn.apache.org/viewcvs/incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/HostAddressDecoder.java?view=auto&rev=151128
==============================================================================
---
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/HostAddressDecoder.java
(added)
+++
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/HostAddressDecoder.java
Wed Feb 2 21:55:46 2005
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2005 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.io.decoder;
+
+import java.util.Enumeration;
+
+import org.apache.asn1.der.DEREncodable;
+import org.apache.asn1.der.DERInteger;
+import org.apache.asn1.der.DEROctetString;
+import org.apache.asn1.der.DERSequence;
+import org.apache.asn1.der.DERTaggedObject;
+import org.apache.kerberos.messages.value.HostAddress;
+import org.apache.kerberos.messages.value.HostAddressType;
+import org.apache.kerberos.messages.value.HostAddresses;
+
+
+public class HostAddressDecoder
+{
+ /**
+ * HostAddress ::= SEQUENCE {
+ * addr-type[0] INTEGER,
+ * address[1] OCTET STRING
+ * }
+ */
+ protected static HostAddress decode( DERSequence sequence )
+ {
+ HostAddressType type = HostAddressType.NULL;
+ byte[] value = null;
+
+ for ( Enumeration e = sequence.getObjects();
e.hasMoreElements(); )
+ {
+ DERTaggedObject object = (DERTaggedObject)
e.nextElement();
+ int tag = object.getTagNo();
+ DEREncodable derObject = object.getObject();
+
+ switch ( tag )
+ {
+ case 0:
+ DERInteger addressType =
(DERInteger)derObject;
+ type =
HostAddressType.getTypeByOrdinal( addressType.intValue() );
+ break;
+ case 1:
+ DEROctetString address =
(DEROctetString)derObject;
+ value = address.getOctets();
+ break;
+ }
+ }
+
+ return new HostAddress( type, value );
+ }
+
+ /**
+ * HostAddresses ::= SEQUENCE OF SEQUENCE {
+ * addr-type[0] INTEGER,
+ * address[1] OCTET STRING
+ * }
+ */
+ protected static HostAddresses decodeSequence( DERSequence sequence )
+ {
+ HostAddress[] addresses = new HostAddress[ sequence.size() ];
+
+ int ii = 0;
+ for ( Enumeration e = sequence.getObjects();
e.hasMoreElements(); )
+ {
+ DERSequence object = (DERSequence) e.nextElement();
+ HostAddress address = decode( object );
+ addresses[ii] = address;
+ ii++;
+ }
+
+ return new HostAddresses( addresses );
+ }
+}
+
Modified:
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/KdcRequestDecoder.java
URL:
http://svn.apache.org/viewcvs/incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/KdcRequestDecoder.java?view=diff&r1=151127&r2=151128
==============================================================================
---
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/KdcRequestDecoder.java
(original)
+++
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/KdcRequestDecoder.java
Wed Feb 2 21:55:46 2005
@@ -32,14 +32,13 @@
import org.apache.asn1.der.DERTaggedObject;
import org.apache.kerberos.messages.KdcRequest;
import org.apache.kerberos.messages.MessageType;
-import org.apache.kerberos.messages.components.Ticket;
import org.apache.kerberos.messages.value.KdcOptions;
import org.apache.kerberos.messages.value.PreAuthenticationData;
import org.apache.kerberos.messages.value.RequestBody;
import org.apache.kerberos.messages.value.RequestBodyModifier;
-public class KdcRequestDecoder extends KerberosMessageDecoder
+public class KdcRequestDecoder
{
public KdcRequest decode( ByteBuffer in ) throws IOException
{
@@ -62,27 +61,29 @@
padata[3] SEQUENCE OF PA-DATA OPTIONAL,
req-body[4] KDC-REQ-BODY
}*/
- private KdcRequest decodeKdcRequestSequence(DERSequence sequence)
throws IOException {
-
+ private KdcRequest decodeKdcRequestSequence( DERSequence sequence )
throws IOException
+ {
int pvno = 5;
MessageType msgType = MessageType.NULL;
PreAuthenticationData[] paData = null;
RequestBody requestBody = null;
- for (Enumeration e = sequence.getObjects();
e.hasMoreElements();) {
- DERTaggedObject object = ((DERTaggedObject)
e.nextElement());
+ for ( Enumeration e = sequence.getObjects();
e.hasMoreElements(); )
+ {
+ DERTaggedObject object = (DERTaggedObject)
e.nextElement();
int tag = object.getTagNo();
DEREncodable derObject = object.getObject();
- switch (tag) {
+ switch ( tag )
+ {
case 1:
DERInteger tag1 = (DERInteger)derObject;
pvno = tag1.intValue();
break;
case 2:
DERInteger tag2 = (DERInteger)derObject;
- msgType =
MessageType.getTypeByOrdinal(tag2.intValue());
+ msgType = MessageType.getTypeByOrdinal(
tag2.intValue() );
break;
case 3:
DERSequence tag3 =
(DERSequence)derObject;
@@ -90,15 +91,12 @@
break;
case 4:
DERSequence tag4 =
(DERSequence)derObject;
- requestBody = decodeRequestBody(tag4);
+ requestBody = decodeRequestBody( tag4 );
break;
- default:
- System.out.println(derObject);
- break;
}
}
- return new KdcRequest(pvno, msgType, paData, requestBody);
+ return new KdcRequest( pvno, msgType, paData, requestBody );
}
/*
@@ -120,83 +118,70 @@
-- Encrypted AuthorizationData encoding
additional-tickets[11] SEQUENCE OF Ticket OPTIONAL
}*/
- private RequestBody decodeRequestBody(DERSequence sequence) throws
IOException {
-
+ private RequestBody decodeRequestBody( DERSequence sequence ) throws
IOException
+ {
RequestBodyModifier modifier = new RequestBodyModifier();
- for (Enumeration e = sequence.getObjects();
e.hasMoreElements();) {
- DERTaggedObject object = ((DERTaggedObject)
e.nextElement());
+ for ( Enumeration e = sequence.getObjects();
e.hasMoreElements(); )
+ {
+ DERTaggedObject object = (DERTaggedObject)
e.nextElement();
int tag = object.getTagNo();
DEREncodable derObject = object.getObject();
- switch (tag) {
+ switch ( tag )
+ {
case 0:
DERBitString kdcOptions =
(DERBitString)derObject;
- modifier.setKdcOptions(new
KdcOptions(kdcOptions.getOctets()));
+ modifier.setKdcOptions( new KdcOptions(
kdcOptions.getOctets() ) );
break;
case 1:
DERSequence cName =
(DERSequence)derObject;
-
modifier.setClientName(decodePrincipalName(cName));
+ modifier.setClientName(
PrincipalNameDecoder.decode( cName ) );
break;
case 2:
DERGeneralString realm =
(DERGeneralString)derObject;
- modifier.setRealm(realm.getString());
+ modifier.setRealm( realm.getString() );
break;
case 3:
DERSequence sname =
(DERSequence)derObject;
-
modifier.setServerName(decodePrincipalName(sname));
+ modifier.setServerName(
PrincipalNameDecoder.decode( sname ) );
break;
case 4:
DERGeneralizedTime from =
(DERGeneralizedTime)derObject;
-
modifier.setFrom(decodeKerberosTime(from));
+ modifier.setFrom(
KerberosTimeDecoder.decode( from ) );
break;
case 5:
DERGeneralizedTime till =
(DERGeneralizedTime)derObject;
-
modifier.setTill(decodeKerberosTime(till));
+ modifier.setTill(
KerberosTimeDecoder.decode( till ) );
break;
case 6:
DERGeneralizedTime rtime =
(DERGeneralizedTime)derObject;
-
modifier.setRtime(decodeKerberosTime(rtime));
+ modifier.setRtime(
KerberosTimeDecoder.decode( rtime ) );
break;
case 7:
DERInteger nonce =
(DERInteger)derObject;
- modifier.setNonce(nonce.intValue());
+ modifier.setNonce( nonce.intValue() );
break;
case 8:
DERSequence etype =
(DERSequence)derObject;
-
modifier.setEType(decodeEncryptionType(etype));
+ modifier.setEType(
EncryptionTypeDecoder.decode( etype ) );
break;
case 9:
DERSequence hostAddresses =
(DERSequence)derObject;
-
modifier.setAddresses(decodeHostAddresses(hostAddresses));
+ modifier.setAddresses(
HostAddressDecoder.decodeSequence( hostAddresses ) );
break;
case 10:
DERSequence encryptedData =
(DERSequence)derObject;
-
modifier.setEncAuthorizationData(decodeEncryptedData(encryptedData));
+ modifier.setEncAuthorizationData(
EncryptedDataDecoder.decode( encryptedData ) );
break;
case 11:
DERSequence tag11 =
(DERSequence)derObject;
-
modifier.setAdditionalTickets(decodeTickets(tag11));
+ modifier.setAdditionalTickets(
TicketDecoder.decodeSequence( tag11 ) );
break;
- default:
- System.out.println(derObject);
- break;
}
}
return modifier.getRequestBody();
- }
-
- protected Ticket[] decodeTickets(DERSequence sequence) throws
IOException {
-
- Ticket[] tickets = new Ticket[sequence.size()];
-
- int i = 0;
- for (Enumeration e = sequence.getObjects();
e.hasMoreElements();) {
- DERApplicationSpecific object =
((DERApplicationSpecific) e.nextElement());
- tickets[i] = decodeTicket(object);
- }
- return tickets;
}
}
Added:
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/KerberosTimeDecoder.java
URL:
http://svn.apache.org/viewcvs/incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/KerberosTimeDecoder.java?view=auto&rev=151128
==============================================================================
---
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/KerberosTimeDecoder.java
(added)
+++
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/KerberosTimeDecoder.java
Wed Feb 2 21:55:46 2005
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2005 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.io.decoder;
+
+import java.text.ParseException;
+import java.util.Date;
+
+import org.apache.asn1.der.DERGeneralizedTime;
+import org.apache.kerberos.messages.value.KerberosTime;
+
+
+public class KerberosTimeDecoder
+{
+ /**
+ * KerberosTime ::= GeneralizedTime
+ * -- Specifying UTC time zone (Z)
+ */
+ protected static KerberosTime decode( DERGeneralizedTime time )
+ {
+ Date date = null;
+
+ try
+ {
+ date = time.getDate();
+ }
+ catch (ParseException pe)
+ {
+ pe.printStackTrace();
+ }
+
+ return new KerberosTime( date );
+ }
+}
+
Added:
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/LastRequestDecoder.java
URL:
http://svn.apache.org/viewcvs/incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/LastRequestDecoder.java?view=auto&rev=151128
==============================================================================
---
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/LastRequestDecoder.java
(added)
+++
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/LastRequestDecoder.java
Wed Feb 2 21:55:46 2005
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2005 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.io.decoder;
+
+import java.util.Enumeration;
+
+import org.apache.asn1.der.DEREncodable;
+import org.apache.asn1.der.DERGeneralizedTime;
+import org.apache.asn1.der.DERInteger;
+import org.apache.asn1.der.DERSequence;
+import org.apache.asn1.der.DERTaggedObject;
+import org.apache.kerberos.messages.value.KerberosTime;
+import org.apache.kerberos.messages.value.LastRequest;
+import org.apache.kerberos.messages.value.LastRequestEntry;
+import org.apache.kerberos.messages.value.LastRequestType;
+
+
+public class LastRequestDecoder
+{
+ /**
+ * LastReq ::= SEQUENCE OF SEQUENCE {
+ * lr-type[0] INTEGER,
+ * lr-value[1] KerberosTime
+ * }
+ */
+ protected LastRequest decodeSequence( DERSequence sequence )
+ {
+ LastRequestEntry[] entries = new LastRequestEntry[
sequence.size() ];
+
+ int ii = 0;
+ for ( Enumeration e = sequence.getObjects();
e.hasMoreElements(); )
+ {
+ DERSequence object = (DERSequence) e.nextElement();
+ LastRequestEntry entry = decode( object );
+ entries[ii] = entry;
+ ii++;
+ }
+
+ return new LastRequest( entries );
+ }
+
+ protected LastRequestEntry decode( DERSequence sequence )
+ {
+ LastRequestType type = LastRequestType.NONE;
+ KerberosTime value = null;
+
+ for ( Enumeration e = sequence.getObjects();
e.hasMoreElements(); )
+ {
+ DERTaggedObject object = (DERTaggedObject)
e.nextElement();
+ int tag = object.getTagNo();
+ DEREncodable derObject = object.getObject();
+
+ switch ( tag )
+ {
+ case 0:
+ DERInteger tag0 = (DERInteger)derObject;
+ type =
LastRequestType.getTypeByOrdinal( tag0.intValue() );
+ break;
+ case 1:
+ DERGeneralizedTime tag1 =
(DERGeneralizedTime)derObject;
+ value = KerberosTimeDecoder.decode(
tag1 );
+ break;
+ }
+ }
+
+ return new LastRequestEntry( type, value );
+ }
+}
+
Added:
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/PrincipalNameDecoder.java
URL:
http://svn.apache.org/viewcvs/incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/PrincipalNameDecoder.java?view=auto&rev=151128
==============================================================================
---
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/PrincipalNameDecoder.java
(added)
+++
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/PrincipalNameDecoder.java
Wed Feb 2 21:55:46 2005
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2005 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.io.decoder;
+
+import java.util.Enumeration;
+
+import org.apache.asn1.der.DEREncodable;
+import org.apache.asn1.der.DERGeneralString;
+import org.apache.asn1.der.DERInteger;
+import org.apache.asn1.der.DERSequence;
+import org.apache.asn1.der.DERTaggedObject;
+import org.apache.kerberos.messages.value.PrincipalName;
+import org.apache.kerberos.messages.value.PrincipalNameModifier;
+
+
+public class PrincipalNameDecoder
+{
+ /**
+ * PrincipalName ::= SEQUENCE {
+ * name-type[0] INTEGER,
+ * name-string[1] SEQUENCE OF GeneralString
+ * }
+ */
+ public static PrincipalName decode( DERSequence sequence )
+ {
+ PrincipalNameModifier modifier = new PrincipalNameModifier();
+
+ for ( Enumeration e = sequence.getObjects();
e.hasMoreElements(); )
+ {
+ DERTaggedObject object = (DERTaggedObject)
e.nextElement();
+ int tag = object.getTagNo();
+ DEREncodable derObject = object.getObject();
+
+ switch ( tag )
+ {
+ case 0:
+ DERInteger nameType =
(DERInteger)derObject;
+ modifier.setType( nameType.intValue() );
+ break;
+ case 1:
+ DERSequence nameString =
(DERSequence)derObject;
+ decodeNameString( nameString, modifier
);
+ break;
+ }
+ }
+
+ return modifier.getPrincipalName();
+ }
+
+ private static void decodeNameString( DERSequence sequence,
PrincipalNameModifier modifier )
+ {
+ for ( Enumeration e = sequence.getObjects();
e.hasMoreElements(); )
+ {
+ DERGeneralString object = (DERGeneralString)
e.nextElement();
+ modifier.addName( object.getString() );
+ }
+ }
+}
+
Modified:
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/PrivateMessageDecoder.java
URL:
http://svn.apache.org/viewcvs/incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/PrivateMessageDecoder.java?view=diff&r1=151127&r2=151128
==============================================================================
---
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/PrivateMessageDecoder.java
(original)
+++
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/PrivateMessageDecoder.java
Wed Feb 2 21:55:46 2005
@@ -30,7 +30,7 @@
import org.apache.kerberos.messages.application.PrivateMessage;
-public class PrivateMessageDecoder extends KerberosMessageDecoder
+public class PrivateMessageDecoder
{
public PrivateMessage decode( byte[] encodedPrivateMessage ) throws
IOException
{
@@ -43,7 +43,7 @@
return decodePrivateMessageSequence( privateMessage );
}
- private PrivateMessage decodePrivateMessageSequence(DERSequence
sequence)
+ private PrivateMessage decodePrivateMessageSequence( DERSequence
sequence )
{
PrivateMessage message = new PrivateMessage();
@@ -53,7 +53,8 @@
int tag = object.getTagNo();
DEREncodable derObject = object.getObject();
- switch ( tag ) {
+ switch ( tag )
+ {
case 0:
DERInteger tag0 = (DERInteger)
derObject;
message.setProtocolVersionNumber(
tag0.intValue() );
@@ -64,11 +65,8 @@
break;
case 3:
DERSequence tag3 =
(DERSequence)derObject;
- message.setEncryptedPart(
decodeEncryptedData( tag3 ) );
+ message.setEncryptedPart(
EncryptedDataDecoder.decode( tag3 ) );
break;
- default:
- System.out.println( derObject );
- break;
}
}
Added:
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/TicketDecoder.java
URL:
http://svn.apache.org/viewcvs/incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/TicketDecoder.java?view=auto&rev=151128
==============================================================================
---
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/TicketDecoder.java
(added)
+++
incubator/directory/kerberos/trunk/core/src/java/org/apache/kerberos/io/decoder/TicketDecoder.java
Wed Feb 2 21:55:46 2005
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2005 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.io.decoder;
+
+import java.io.IOException;
+import java.util.Enumeration;
+
+import org.apache.asn1.der.DERApplicationSpecific;
+import org.apache.asn1.der.DEREncodable;
+import org.apache.asn1.der.DERGeneralString;
+import org.apache.asn1.der.DERInteger;
+import org.apache.asn1.der.DERSequence;
+import org.apache.asn1.der.DERTaggedObject;
+import org.apache.kerberos.messages.components.Ticket;
+import org.apache.kerberos.messages.components.TicketModifier;
+
+
+public class TicketDecoder
+{
+ public static Ticket[] decodeSequence( DERSequence sequence ) throws
IOException
+ {
+ Ticket[] tickets = new Ticket[ sequence.size() ];
+
+ int ii = 0;
+ for ( Enumeration e = sequence.getObjects();
e.hasMoreElements(); )
+ {
+ DERApplicationSpecific object =
(DERApplicationSpecific) e.nextElement();
+ tickets[ii] = decode( object );
+ }
+
+ return tickets;
+ }
+
+ /**
+ * Ticket ::= [APPLICATION 1] SEQUENCE {
+ * tkt-vno[0] INTEGER,
+ * realm[1] Realm,
+ * sname[2] PrincipalName,
+ * enc-part[3] EncryptedData
+ * }
+ */
+ protected static Ticket decode( DERApplicationSpecific app ) throws
IOException
+ {
+ DERSequence sequence = (DERSequence) app.getObject();
+
+ TicketModifier modifier = new TicketModifier();
+
+ for ( Enumeration e = sequence.getObjects();
e.hasMoreElements(); )
+ {
+ DERTaggedObject object = (DERTaggedObject)
e.nextElement();
+ int tag = object.getTagNo();
+ DEREncodable derObject = object.getObject();
+
+ switch ( tag )
+ {
+ case 0:
+ DERInteger tag0 = (DERInteger)derObject;
+ modifier.setTicketVersionNumber(
tag0.intValue() );
+ break;
+ case 1:
+ DERGeneralString tag1 =
(DERGeneralString)derObject;
+ modifier.setServerRealm(
tag1.getString() );
+ break;
+ case 2:
+ DERSequence tag2 =
(DERSequence)derObject;
+ modifier.setServerName(
PrincipalNameDecoder.decode( tag2 ) );
+ break;
+ case 3:
+ DERSequence tag3 =
(DERSequence)derObject;
+ modifier.setEncPart(
EncryptedDataDecoder.decode( tag3 ) );
+ break;
+ }
+ }
+
+ return modifier.getTicket();
+ }
+}
+