From ccff1bc205722a94e386c3cfe44852ab55430886 Mon Sep 17 00:00:00 2001
From: abobrov <abobrov@localhost>
Date: Wed, 31 Dec 2008 13:55:37 +0000
Subject: [PATCH] - [Issue 3694] ASN.1 package does incorrect BER encoding/decoding for negative integers.
---
opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/asn1/TestASN1Integer.java | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 49 insertions(+), 0 deletions(-)
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/asn1/TestASN1Integer.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/asn1/TestASN1Integer.java
index ed2b2ee..d3b1247 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/asn1/TestASN1Integer.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/asn1/TestASN1Integer.java
@@ -135,6 +135,55 @@
/**
+ * Tests that negative integers are encoded according
+ * to ASN.1 BER specification.
+ *
+ * @throws Exception If an unexpected problem occurs.
+ */
+ @Test()
+ public void testNegativeIntEncoding()
+ throws Exception
+ {
+ byte[] value = null;
+ // Some negative integers of interest
+ // to test specific ranges/boundaries.
+ value = ASN1Integer.encodeValue(-1);
+ assertEquals(value[0], (byte) 0xFF);
+ value = ASN1Integer.encodeValue(-2);
+ assertEquals(value[0], (byte) 0xFE);
+ value = ASN1Integer.encodeValue(-127);
+ assertEquals(value[0], (byte) 0x81);
+ value = ASN1Integer.encodeValue(-128);
+ assertEquals(value[0], (byte) 0x80);
+ value = ASN1Integer.encodeValue(-255);
+ assertEquals(value[0], (byte) 0xFF);
+ assertEquals(value[1], (byte) 0x01);
+ value = ASN1Integer.encodeValue(-256);
+ assertEquals(value[0], (byte) 0xFF);
+ assertEquals(value[1], (byte) 0x00);
+ value = ASN1Integer.encodeValue(-65535);
+ assertEquals(value[0], (byte) 0xFF);
+ assertEquals(value[1], (byte) 0x00);
+ assertEquals(value[2], (byte) 0x01);
+ value = ASN1Integer.encodeValue(-65536);
+ assertEquals(value[0], (byte) 0xFF);
+ assertEquals(value[1], (byte) 0x00);
+ assertEquals(value[2], (byte) 0x00);
+ value = ASN1Integer.encodeValue(-2147483647);
+ assertEquals(value[0], (byte) 0x80);
+ assertEquals(value[1], (byte) 0x00);
+ assertEquals(value[2], (byte) 0x00);
+ assertEquals(value[3], (byte) 0x01);
+ value = ASN1Integer.encodeValue(-2147483648);
+ assertEquals(value[0], (byte) 0x80);
+ assertEquals(value[1], (byte) 0x00);
+ assertEquals(value[2], (byte) 0x00);
+ assertEquals(value[3], (byte) 0x00);
+ }
+
+
+
+ /**
* Tests the <CODE>setValue</CODE> method that takes an int argument.
*
* @param i The integer value to use for the test.
--
Gitblit v1.10.0