You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by er...@apache.org on 2007/07/21 13:11:33 UTC

svn commit: r558296 - in /directory/apacheds/trunk/kerberos-shared/src/main/java/org/apache/directory/server/kerberos/shared: io/encoder/KdcRequestEncoder.java messages/KdcRequest.java

Author: erodriguez
Date: Sat Jul 21 04:11:32 2007
New Revision: 558296

URL: http://svn.apache.org/viewvc?view=rev&rev=558296
Log:
Refactored KdcRequest body encoding to ease body checksum calculation.

Modified:
    directory/apacheds/trunk/kerberos-shared/src/main/java/org/apache/directory/server/kerberos/shared/io/encoder/KdcRequestEncoder.java
    directory/apacheds/trunk/kerberos-shared/src/main/java/org/apache/directory/server/kerberos/shared/messages/KdcRequest.java

Modified: directory/apacheds/trunk/kerberos-shared/src/main/java/org/apache/directory/server/kerberos/shared/io/encoder/KdcRequestEncoder.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/kerberos-shared/src/main/java/org/apache/directory/server/kerberos/shared/io/encoder/KdcRequestEncoder.java?view=diff&rev=558296&r1=558295&r2=558296
==============================================================================
--- directory/apacheds/trunk/kerberos-shared/src/main/java/org/apache/directory/server/kerberos/shared/io/encoder/KdcRequestEncoder.java (original)
+++ directory/apacheds/trunk/kerberos-shared/src/main/java/org/apache/directory/server/kerberos/shared/io/encoder/KdcRequestEncoder.java Sat Jul 21 04:11:32 2007
@@ -26,6 +26,7 @@
 
 import org.apache.directory.server.kerberos.shared.messages.KdcRequest;
 import org.apache.directory.server.kerberos.shared.messages.value.PreAuthenticationData;
+import org.apache.directory.server.kerberos.shared.messages.value.RequestBody;
 import org.apache.directory.shared.asn1.der.ASN1OutputStream;
 import org.apache.directory.shared.asn1.der.DERApplicationSpecific;
 import org.apache.directory.shared.asn1.der.DERBitString;
@@ -82,7 +83,7 @@
             sequence.add( new DERTaggedObject( 3, encodePreAuthData( app.getPreAuthData() ) ) );
         }
 
-        sequence.add( new DERTaggedObject( 4, encodeKdcRequestBody( app ) ) );
+        sequence.add( new DERTaggedObject( 4, encodeKdcRequestBody( app.getRequestBody() ) ) );
 
         return sequence;
     }
@@ -91,16 +92,16 @@
     /**
      * Encodes a {@link KdcRequest} into a byte[].
      *
-     * @param request
+     * @param requestBody
      * @return The encoded {@link KdcRequest}.
      * @throws IOException
      */
-    public byte[] encodeBody( KdcRequest request ) throws IOException
+    public byte[] encodeRequestBody( RequestBody requestBody ) throws IOException
     {
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         ASN1OutputStream aos = new ASN1OutputStream( baos );
 
-        aos.writeObject( encodeKdcRequestBody( request ) );
+        aos.writeObject( encodeKdcRequestBody( requestBody ) );
         aos.close();
 
         return baos.toByteArray();
@@ -128,61 +129,63 @@
      *     additional-tickets[11]       SEQUENCE OF Ticket OPTIONAL
      * }
      */
-    private DERSequence encodeKdcRequestBody( KdcRequest request )
+    private DERSequence encodeKdcRequestBody( RequestBody requestBody )
     {
         DERSequence sequence = new DERSequence();
 
-        sequence.add( new DERTaggedObject( 0, new DERBitString( request.getKdcOptions().getBytes() ) ) );
+        sequence.add( new DERTaggedObject( 0, new DERBitString( requestBody.getKdcOptions().getBytes() ) ) );
 
         // OPTIONAL
-        if ( request.getClientPrincipal() != null )
+        if ( requestBody.getClientPrincipal() != null )
         {
-            sequence.add( new DERTaggedObject( 1, PrincipalNameEncoder.encode( request.getClientPrincipal() ) ) );
+            sequence.add( new DERTaggedObject( 1, PrincipalNameEncoder.encode( requestBody.getClientPrincipal() ) ) );
         }
 
-        sequence.add( new DERTaggedObject( 2, DERGeneralString.valueOf( request.getRealm().toString() ) ) );
+        sequence.add( new DERTaggedObject( 2, DERGeneralString.valueOf( requestBody.getServerPrincipal().getRealm()
+            .toString() ) ) );
 
         // OPTIONAL
-        if ( request.getServerPrincipal() != null )
+        if ( requestBody.getServerPrincipal() != null )
         {
-            sequence.add( new DERTaggedObject( 3, PrincipalNameEncoder.encode( request.getServerPrincipal() ) ) );
+            sequence.add( new DERTaggedObject( 3, PrincipalNameEncoder.encode( requestBody.getServerPrincipal() ) ) );
         }
 
         // OPTIONAL
-        if ( request.getFrom() != null )
+        if ( requestBody.getFrom() != null )
         {
-            sequence.add( new DERTaggedObject( 4, KerberosTimeEncoder.encode( request.getFrom() ) ) );
+            sequence.add( new DERTaggedObject( 4, KerberosTimeEncoder.encode( requestBody.getFrom() ) ) );
         }
 
-        sequence.add( new DERTaggedObject( 5, KerberosTimeEncoder.encode( request.getTill() ) ) );
+        sequence.add( new DERTaggedObject( 5, KerberosTimeEncoder.encode( requestBody.getTill() ) ) );
 
         // OPTIONAL
-        if ( request.getRtime() != null )
+        if ( requestBody.getRtime() != null )
         {
-            sequence.add( new DERTaggedObject( 6, KerberosTimeEncoder.encode( request.getRtime() ) ) );
+            sequence.add( new DERTaggedObject( 6, KerberosTimeEncoder.encode( requestBody.getRtime() ) ) );
         }
 
-        sequence.add( new DERTaggedObject( 7, DERInteger.valueOf( request.getNonce() ) ) );
+        sequence.add( new DERTaggedObject( 7, DERInteger.valueOf( requestBody.getNonce() ) ) );
 
-        sequence.add( new DERTaggedObject( 8, EncryptionTypeEncoder.encode( request.getEType() ) ) );
+        sequence.add( new DERTaggedObject( 8, EncryptionTypeEncoder.encode( requestBody.getEType() ) ) );
 
         // OPTIONAL
-        if ( request.getAddresses() != null )
+        if ( requestBody.getAddresses() != null )
         {
-            sequence.add( new DERTaggedObject( 9, HostAddressesEncoder.encodeSequence( request.getAddresses() ) ) );
+            sequence.add( new DERTaggedObject( 9, HostAddressesEncoder.encodeSequence( requestBody.getAddresses() ) ) );
         }
 
         // OPTIONAL
-        if ( request.getEncAuthorizationData() != null )
+        if ( requestBody.getEncAuthorizationData() != null )
         {
-            sequence.add( new DERTaggedObject( 10, EncryptedDataEncoder.encodeSequence( request
+            sequence.add( new DERTaggedObject( 10, EncryptedDataEncoder.encodeSequence( requestBody
                 .getEncAuthorizationData() ) ) );
         }
 
         // OPTIONAL
-        if ( request.getAdditionalTickets() != null )
+        if ( requestBody.getAdditionalTickets() != null )
         {
-            sequence.add( new DERTaggedObject( 11, TicketEncoder.encodeSequence( request.getAdditionalTickets() ) ) );
+            sequence
+                .add( new DERTaggedObject( 11, TicketEncoder.encodeSequence( requestBody.getAdditionalTickets() ) ) );
         }
 
         return sequence;

Modified: directory/apacheds/trunk/kerberos-shared/src/main/java/org/apache/directory/server/kerberos/shared/messages/KdcRequest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/kerberos-shared/src/main/java/org/apache/directory/server/kerberos/shared/messages/KdcRequest.java?view=diff&rev=558296&r1=558295&r2=558296
==============================================================================
--- directory/apacheds/trunk/kerberos-shared/src/main/java/org/apache/directory/server/kerberos/shared/messages/KdcRequest.java (original)
+++ directory/apacheds/trunk/kerberos-shared/src/main/java/org/apache/directory/server/kerberos/shared/messages/KdcRequest.java Sat Jul 21 04:11:32 2007
@@ -88,6 +88,17 @@
 
 
     /**
+     * Returns the request body.
+     * 
+     * @return The request body.
+     */
+    public RequestBody getRequestBody()
+    {
+        return requestBody;
+    }
+
+
+    /**
      * Returns the bytes of the body.  This is used for verifying checksums in
      * the Ticket-Granting Service (TGS).
      *