You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2007/09/12 17:40:40 UTC
svn commit: r574996 - in /directory/shared/trunk/asn1/src:
main/java/org/apache/directory/shared/asn1/ber/tlv/UniversalTag.java
main/java/org/apache/directory/shared/asn1/ber/tlv/Value.java
test/java/org/apache/directory/shared/asn1/ber/tlv/ValueTest.java
Author: elecharny
Date: Wed Sep 12 08:40:35 2007
New Revision: 574996
URL: http://svn.apache.org/viewvc?rev=574996&view=rev
Log:
Added a Tag for BitString and Generalized Time (they are used in Kerberos code)
Added a decode method in Value
Added a test case
Modified:
directory/shared/trunk/asn1/src/main/java/org/apache/directory/shared/asn1/ber/tlv/UniversalTag.java
directory/shared/trunk/asn1/src/main/java/org/apache/directory/shared/asn1/ber/tlv/Value.java
directory/shared/trunk/asn1/src/test/java/org/apache/directory/shared/asn1/ber/tlv/ValueTest.java
Modified: directory/shared/trunk/asn1/src/main/java/org/apache/directory/shared/asn1/ber/tlv/UniversalTag.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/asn1/src/main/java/org/apache/directory/shared/asn1/ber/tlv/UniversalTag.java?rev=574996&r1=574995&r2=574996&view=diff
==============================================================================
--- directory/shared/trunk/asn1/src/main/java/org/apache/directory/shared/asn1/ber/tlv/UniversalTag.java (original)
+++ directory/shared/trunk/asn1/src/main/java/org/apache/directory/shared/asn1/ber/tlv/UniversalTag.java Wed Sep 12 08:40:35 2007
@@ -310,6 +310,8 @@
public static final byte INTEGER_TAG = 0x02;
+ public static final byte BIT_STRING_TAG = 0x03;
+
public static final byte OCTET_STRING_TAG = 0x04;
public static final byte ENUMERATED_TAG = 0x0A;
@@ -317,6 +319,8 @@
public static final byte UTF8_STRING_TAG = 0x0C;
public static final byte GENERALIZED_TIME_TAG = 0x18;
+
+ public static final byte GENERALIZED_STRING_TAG = 0x1B;
public static final byte SEQUENCE_TAG = 0x30;
Modified: directory/shared/trunk/asn1/src/main/java/org/apache/directory/shared/asn1/ber/tlv/Value.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/asn1/src/main/java/org/apache/directory/shared/asn1/ber/tlv/Value.java?rev=574996&r1=574995&r2=574996&view=diff
==============================================================================
--- directory/shared/trunk/asn1/src/main/java/org/apache/directory/shared/asn1/ber/tlv/Value.java (original)
+++ directory/shared/trunk/asn1/src/main/java/org/apache/directory/shared/asn1/ber/tlv/Value.java Wed Sep 12 08:40:35 2007
@@ -22,6 +22,7 @@
import org.apache.directory.shared.asn1.ber.tlv.UniversalTag;
import org.apache.directory.shared.asn1.codec.EncoderException;
+import org.apache.directory.shared.asn1.primitives.BitString;
import org.apache.directory.shared.asn1.primitives.OID;
import org.apache.directory.shared.asn1.util.Asn1StringUtils;
@@ -358,6 +359,39 @@
{
buffer.put( value );
}
+ }
+ catch ( BufferOverflowException boe )
+ {
+ throw new EncoderException( "The PDU buffer size is too small !" );
+ }
+
+ return;
+ }
+
+ /**
+ * Encode a BIT STRING value
+ *
+ * @param buffer The PDU in which the value will be put
+ * @param bitString The BitString to be encoded.
+ */
+ public static void encode( ByteBuffer buffer, BitString bitString ) throws EncoderException
+ {
+ if ( buffer == null )
+ {
+ throw new EncoderException( "Cannot put a PDU in a null buffer !" );
+ }
+
+ try
+ {
+ buffer.put( UniversalTag.BIT_STRING_TAG );
+
+ // The BitString length. We add one byte for the unused number
+ // of bits
+ int length = bitString.size() + 1;
+
+ buffer.put( TLV.getBytes( length ) );
+ buffer.put( bitString.getUnusedBits() );
+ buffer.put( bitString.getData() );
}
catch ( BufferOverflowException boe )
{
Modified: directory/shared/trunk/asn1/src/test/java/org/apache/directory/shared/asn1/ber/tlv/ValueTest.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/asn1/src/test/java/org/apache/directory/shared/asn1/ber/tlv/ValueTest.java?rev=574996&r1=574995&r2=574996&view=diff
==============================================================================
--- directory/shared/trunk/asn1/src/test/java/org/apache/directory/shared/asn1/ber/tlv/ValueTest.java (original)
+++ directory/shared/trunk/asn1/src/test/java/org/apache/directory/shared/asn1/ber/tlv/ValueTest.java Wed Sep 12 08:40:35 2007
@@ -21,8 +21,12 @@
import java.math.BigInteger;
+import java.nio.ByteBuffer;
import org.apache.directory.shared.asn1.ber.tlv.Value;
+import org.apache.directory.shared.asn1.codec.EncoderException;
+import org.apache.directory.shared.asn1.primitives.BitString;
+import org.apache.directory.shared.asn1.util.Asn1StringUtils;
import org.apache.directory.shared.asn1.util.IntegerDecoder;
import junit.framework.Assert;
@@ -282,4 +286,25 @@
bb[0] = 0x00;
assertEquals( 0x01, vv[0] );
}
+
+
+ public void testEncodeBitString()
+ {
+ BitString bs = new BitString( 10 );
+ bs.setBit( 9 );
+
+ ByteBuffer buffer = ByteBuffer.allocate( 5 );
+
+ try
+ {
+ Value.encode( buffer, bs );
+ }
+ catch ( EncoderException ee )
+ {
+
+ }
+
+ assertEquals( "0x03 0x03 0x06 0x00 0x40 ", Asn1StringUtils.dumpBytes( buffer.array() ) );
+ }
}
+