You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by na...@apache.org on 2007/03/13 14:17:31 UTC

svn commit: r517682 [3/5] - in /harmony/standard/site/xdocs: ./ subcomponents/classlibrary/ subcomponents/drlvm/

Modified: harmony/standard/site/xdocs/subcomponents/classlibrary/ASN1Framework.html
URL: http://svn.apache.org/viewvc/harmony/standard/site/xdocs/subcomponents/classlibrary/ASN1Framework.html?view=diff&rev=517682&r1=517681&r2=517682
==============================================================================
--- harmony/standard/site/xdocs/subcomponents/classlibrary/ASN1Framework.html (original)
+++ harmony/standard/site/xdocs/subcomponents/classlibrary/ASN1Framework.html Tue Mar 13 06:17:30 2007
@@ -18,218 +18,193 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
-    <head>
-      <meta http-equiv="Content-Type"
-      content="text/html; charset=windows-1251" />
-      <title>
-         ASN.1 Framework
-      </title>
-      <link rel="stylesheet" type="text/css" media="all" href="../../site.css" />
-   </head>
-   <body>
-      <h1>
-         <a id="Top" name="Top"></a>ASN.1 Framework
-      </h1>
-      <p class="TOCHeading">
-         <a href="#Revision_History">Revision History</a>
-      </p>
-     
-      <p class="TOCHeading">
-         <a href="#About_this_document">About this Document</a>
-      </p>
-      <p class="TOC">
-         <a href="#Purpose">Purpose</a>
-      </p>
-      <p class="TOC">
-         <a href="#Intended_Audience">Intended Audience</a>
-      </p>
-      <p class="TOC">
-         <a href="#Documentation_Conventions">Documentation Conventions</a>
-      </p>
-      <p class="TOCHeading">
-         <a href="#Overview">Introduction to ASN.1</a>
-      </p>
-      <p class="TOC">
-         <a href="#About">About</a>
-      </p>
-      <p class="TOC">
-         <a href="#Basic_Types">ASN.1 Basic Types</a>
-      </p>
-      <p class="TOCHeading">
-         <a href="#Implementation">ASN.1 Framework in Harmony</a>
-      </p>
-      <p class="TOC">
-         <a href="#About_ASN_Framework">About</a>
-      </p>
-      <p class="TOC">
-         <a href="#Mapping_ASN_Java">Mapping between ASN.1 and Java Types</a>
-      </p>
-      <p class="TOC">
-         <a href="#Harmony_Classes">Harmony ASN.1 Classes</a>
-      </p>
-      <p class="TOC">
-         <a href="#Encoding_Rules">Encoding Rules</a>
-      </p>
-      <p class="TOC">
-         <a href="#Notations_Implementation">Implementing ASN.1 Notations</a>
-      </p>
-      <p class="TOCHeading">
-         <a href="#Appendix">Appendix: Usage Examples</a>
-      </p>
-      <p class="TOCHeading">
-         <a href="#References">References</a>
-      </p>
-      <h1>
-         <a id="Revision_History" name="Revision_History"></a>Revision History
-      </h1>
-      <table width="100%">
-         <tr>
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
+    <title>ASN.1 Framework </title>
+    <link rel="stylesheet" type="text/css" media="all" href="../../site.css" />
+</head>
+<body>
+    <h1>
+        <a id="Top" name="Top"></a>ASN.1 Framework
+    </h1>
+    <p class="TOCHeading">
+        <a href="#Revision_History">Revision History</a>
+    </p>
+    <p class="TOCHeading">
+        <a href="#About_this_document">About this Document</a>
+    </p>
+    <p class="TOC">
+        <a href="#Purpose">Purpose</a>
+    </p>
+    <p class="TOC">
+        <a href="#Intended_Audience">Intended Audience</a>
+    </p>
+    <p class="TOC">
+        <a href="#Documentation_Conventions">Documentation Conventions</a>
+    </p>
+    <p class="TOCHeading">
+        <a href="#Overview">Introduction to ASN.1</a>
+    </p>
+    <p class="TOC">
+        <a href="#About">About</a>
+    </p>
+    <p class="TOC">
+        <a href="#Basic_Types">ASN.1 Basic Types</a>
+    </p>
+    <p class="TOCHeading">
+        <a href="#Implementation">ASN.1 Framework in Harmony</a>
+    </p>
+    <p class="TOC">
+        <a href="#About_ASN_Framework">About</a>
+    </p>
+    <p class="TOC">
+        <a href="#Mapping_ASN_Java">Mapping between ASN.1 and Java Types</a>
+    </p>
+    <p class="TOC">
+        <a href="#Harmony_Classes">Harmony ASN.1 Classes</a>
+    </p>
+    <p class="TOC">
+        <a href="#Encoding_Rules">Encoding Rules</a>
+    </p>
+    <p class="TOC">
+        <a href="#Notations_Implementation">Implementing ASN.1 Notations</a>
+    </p>
+    <p class="TOCHeading">
+        <a href="#Appendix">Appendix: Usage Examples</a>
+    </p>
+    <p class="TOCHeading">
+        <a href="#References">References</a>
+    </p>
+    <h1>
+        <a id="Revision_History" name="Revision_History"></a>Revision History
+    </h1>
+    <table width="100%">
+        <tr>
             <th class="TableHeading" width="25%">
-               Version
+                Version
             </th>
             <th class="TableHeading" width="50%">
-               Version Information
+                Version Information
             </th>
             <th class="TableHeading">
-               Date
+                Date
             </th>
-         </tr>
-         <tr>
+        </tr>
+        <tr>
             <td class="TableCell" width="25%">
-               Initial version
+                Initial version
             </td>
             <td class="TableCell" width="25%">
-               Nadya Morozova, Stepan Mishura: document created<br />
+                Nadya Morozova, Stepan Mishura: document created<br />
                 Special thanks to Sergey Dmitriev for assistance
             </td>
             <td class="TableCell">
-               November 16, 2005
+                November 16, 2005
             </td>
-         </tr>
-         <tr>
+        </tr>
+        <tr>
             <td class="TableCell" width="25%">
-			Formatting update
+                Formatting update
             </td>
             <td class="TableCell" width="25%">
-			Nadya Morozova
+                Nadya Morozova
             </td>
             <td class="TableCell">
-			September 21, 2006
+                September 21, 2006
             </td>
-         </tr>
-      </table>
-      
-      <h1>
-         <a id="About_this_document" name="About_this_document"></a>About This
-         Document
-      </h1>
-      <h2>
-         <a id="Purpose" name="Purpose"></a>Purpose
-      </h2>
-      <p>
-         This document introduces the ASN.1 (Abstract Syntax Notation)
-         framework delivered as part of the Harmony classlibrary. This document
-         provides an overview of ASN.1 types and encoding rules with focus on
-         the characteristics of the current implementation. The document gives
-         details on the framework design and provides an overall description of
-         the ASN.1 package.
-      </p>
-      <h2>
-         <a id="Intended_Audience" name="Intended_Audience"></a>Intended
-         Audience
-      </h2>
-      <p>
-         The target audience for the document includes a wide community of
-         engineers interested in using ASN.1 and in further work with the
-         product to contribute to its development. The document assumes that
-         readers are familiar with the ASN.1 notation and the Java<a
-         href="#*">*</a> programming language.
-      </p>
-      <h2>
-         <a id="Documentation_Conventions"
-         name="Documentation_Conventions"></a>Documentation Conventions
-      </h2>
-      <p>
-         This document uses the <a href="../../documentation/conventions.html">unified
-         conventions</a> for the Harmony documentation kit.
-      </p>
-      <p class="backtotop">
-         <a href="#Top">Back to Top</a>
-      </p>
-      <h1>
-         <a id="Overview" name="Overview"></a>Introduction to ASN.1
-      </h1>
-      <h2>
-         <a id="About" name="About"></a>About
-      </h2>
-      <p>
-         ASN.1 (Abstract Syntax Notation One) is an international standard of
-         notation used to specify data structures with a high level of
-         abstraction, which is reflected in the ASN.1 specification [<a
-         href="#ASN_SPEC">2</a>]. ASN.1 is fully platform- and
-         language-independent. ASN.1 goes with the <i>encoding rules</i>, which
-         determine how to represent a value of an abstract type as a string of
-         octets [<a href="#RULES_SPEC">3</a>].
-      </p>
-      <p>
-         The Java<a href="#*">*</a> API specification [<a
-         href="#JAVA_API_SPEC">1</a>] employs ASN.1 in the following ways:
-      </p>
-      <ul>
-         <li>
-            <i>Directly</i>: by providing the ASN.1 notation for used data and
-            by specifying its encoding rule
-         </li>
-         <li>
-            <i>Indirectly</i>: by refereeing to another (external)
-            specification that uses the ASN.1 notation
-         </li>
-      </ul>
-      <p>
-         To learn more about ASN.1, you can use online documentation [<a
-         href="#INFO_SITE">4</a>], [<a href="#LAYMAN_GUIDE">5</a>], and
-         publications [<a href="#EBOOK1">6</a>], [<a href="#EBOOK2">7</a>].
-      </p>
-      <p class="backtotop">
-         <a href="#Top">Back to Top</a>
-      </p>
-      <h2>
-         <a id="Basic_Types" name="Basic_Types"></a>ASN.1 Basic Types
-      </h2>
-      <p>
-         ASN.1 has the following basic types:
-      </p>
-      <ul>
-         <li>
-            <a href="#String"><i>String</i></a> and <a
-            href="#Primitive"><i>primitive</i></a> types represent raw data.
-         </li>
-         <li>
-            <a href="#Constructed"><i>Constructed</i></a> types serve as
-            containers for a number of type components, which can be optional
-            or can have default values.
-         </li>
-         <li>
-            <a href="#Tagged"><i>Tagged</i></a> types are used to derive one
-            ASN.1 type from another.
-         </li>
-         <li>
-            <a href="#Other"><i>Other</i></a> types are <code>ANY</code> and
-            <code>CHOICE</code>.
-         </li>
-      </ul>
-      <p>
-         These types are used to specify a wide range of other abstract types,
-         as shown in Example 1.
-      </p>
-      <p class="example">
-         <a id="example1" name="example1"></a>Example 1
-      </p>
-      <p class="exampletext">
-         This example is based on RFC 3280 [<a href="#RFC">8</a>].
-      </p>
-      <blockquote>
-<pre>
+        </tr>
+    </table>
+    <h1>
+        <a id="About_this_document" name="About_this_document"></a>About This Document
+    </h1>
+    <h2>
+        <a id="Purpose" name="Purpose"></a>Purpose
+    </h2>
+    <p>
+        This document introduces the ASN.1 (Abstract Syntax Notation) framework delivered
+        as part of the Harmony classlibrary. This document provides an overview of ASN.1
+        types and encoding rules with focus on the characteristics of the current implementation.
+        The document gives details on the framework design and provides an overall description
+        of the ASN.1 package.
+    </p>
+    <h2>
+        <a id="Intended_Audience" name="Intended_Audience"></a>Intended Audience
+    </h2>
+    <p>
+        The target audience for the document includes a wide community of engineers interested
+        in using ASN.1 and in further work with the product to contribute to its development.
+        The document assumes that readers are familiar with the ASN.1 notation and the Java<a
+            href="#*">*</a> programming language.
+    </p>
+    <h2>
+        <a id="Documentation_Conventions" name="Documentation_Conventions"></a>Documentation
+        Conventions
+    </h2>
+    <p>
+        This document uses the <a href="../../documentation/conventions.html">unified conventions</a>
+        for the Harmony documentation kit.
+    </p>
+    <p class="backtotop">
+        <a href="#Top">Back to Top</a>
+    </p>
+    <h1>
+        <a id="Overview" name="Overview"></a>Introduction to ASN.1
+    </h1>
+    <h2>
+        <a id="About" name="About"></a>About
+    </h2>
+    <p>
+        ASN.1 (Abstract Syntax Notation One) is an international standard of notation used
+        to specify data structures with a high level of abstraction, which is reflected
+        in the ASN.1 specification [<a href="#ASN_SPEC">2</a>]. ASN.1 is fully platform-
+        and language-independent. ASN.1 goes with the <i>encoding rules</i>, which determine
+        how to represent a value of an abstract type as a string of octets [<a href="#RULES_SPEC">3</a>].
+    </p>
+    <p>
+        The Java<a href="#*">*</a> API specification [<a href="#JAVA_API_SPEC">1</a>] employs
+        ASN.1 in the following ways:
+    </p>
+    <ul>
+        <li><i>Directly</i>: by providing the ASN.1 notation for used data and by specifying
+            its encoding rule </li>
+        <li><i>Indirectly</i>: by refereeing to another (external) specification that uses the
+            ASN.1 notation </li>
+    </ul>
+    <p>
+        To learn more about ASN.1, you can use online documentation [<a href="#INFO_SITE">4</a>],
+        [<a href="#LAYMAN_GUIDE">5</a>], and publications [<a href="#EBOOK1">6</a>], [<a
+            href="#EBOOK2">7</a>].
+    </p>
+    <p class="backtotop">
+        <a href="#Top">Back to Top</a>
+    </p>
+    <h2>
+        <a id="Basic_Types" name="Basic_Types"></a>ASN.1 Basic Types
+    </h2>
+    <p>
+        ASN.1 has the following basic types:
+    </p>
+    <ul>
+        <li><a href="#String"><i>String</i></a> and <a href="#Primitive"><i>primitive</i></a>
+            types represent raw data. </li>
+        <li><a href="#Constructed"><i>Constructed</i></a> types serve as containers for a number
+            of type components, which can be optional or can have default values. </li>
+        <li><a href="#Tagged"><i>Tagged</i></a> types are used to derive one ASN.1 type from
+            another. </li>
+        <li><a href="#Other"><i>Other</i></a> types are <code>ANY</code> and <code>CHOICE</code>.
+        </li>
+    </ul>
+    <p>
+        These types are used to specify a wide range of other abstract types, as shown in
+        Example 1.
+    </p>
+    <p class="example">
+        <a id="example1" name="example1"></a>Example 1
+    </p>
+    <p class="exampletext">
+        This example is based on RFC 3280 [<a href="#RFC">8</a>].
+    </p>
+        <pre>
 Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension
 
 Extension ::= SEQUENCE {
@@ -240,102 +215,84 @@
 
 Version ::= INTEGER { v1(0), v2(1), v3(2) }
 </pre>
-      </blockquote>
-      <p>
-         In this example, the basic ASN.1 types <code>SEQUENCE</code>,
-         <code>OBJECT IDENTIFIER</code>, <code>BOOLEAN</code> and <code>OCTET
-         STRING</code> are used to specify a new abstract type
-         <code>Extension</code>. The newly created type is then used with
-         another basic type <code>SEQUENCE OF</code> to describe the
-         <code>Extensions</code> type. The ASN.1 <code>INTEGER</code> type is
-         used to specify the <code>Version</code> abstract type and to provide
-         constraints for this type.
-      </p>
-      <p class="backtotop">
-         <a href="#Top">Back to Top</a>
-      </p>
-      <h1>
-         <a id="Implementation" name="Implementation"></a>ASN.1 Framework in
-         Harmony
-      </h1>
-      <p>
-         This section part of the document describes the ASN.1 framework as a
-         whole, defines the mapping principles to establish the correspondence
-         between ASN.1 and Java<a href="#*">*</a> types, and represents the
-         hierarchy of ASN.1 types representation in the current framework.
-      </p>
-      <h2>
-         <a id="About_ASN_Framework" name="About_ASN_Framework"></a>About
-      </h2>
-      <p>
-         The ASN.1 framework provides a common, easy and efficient approach for
-         working with ASN.1 basic types, notations and encoding rules. This
-         framework can be described as a layer between a Java<a href="#*">*</a>
-         object and its ASN.1 encoded form, as shown in Figure 1.
-      </p>
-      <br />
-      <br />
-      <p style="text-align: center">
-         <img src="images/ASN_framework.gif" alt="overview" />
-      </p>
-      <p class="special" style="text-align: center">
-         Figure 1: ASN.1 Framework Layer
-      </p>
-      <p>
-         The Harmony ASN.1 framework is characterized by:
-      </p>
-      <ul>
-         <li>
-            A clear API for decoding and encoding objects
-         </li>
-         <li>
-            Low resource consuming
-         </li>
-         <li>
-            Thread safety
-         </li>
-      </ul>
-      <p>
-         The framework enables the following:
-      </p>
-      <ul>
-         <li>
-            Create a Java<a href="#*">*</a> object instance from its encoded
-            octet string
-         </li>
-         <li>
-            Verify that an octet string is a valid encoded string
-         </li>
-         <li>
-            Generate an encoded octet string for a particular object
-         </li>
-      </ul>
-      <p class="note">
-         Note
-      </p>
-      <p class="notetext">
-         The current ASN.1 framework is a partial implementation of the ASN.1
-         and encoding rules specifications. This framework covers certain ASN.1
-         basic types and basic encoding rules (BER), and provides most
-         restrictions employed by the distinguished encoding rules (DER).
-      </p>
-      <h2>
-         <a id="Mapping_ASN_Java" name="Mapping_ASN_Java"></a>Mapping between
-         ASN.1 and Java<a href="#*">*</a> Types
-      </h2>
-      <p>
-         The framework maps all ASN.1 abstract types and notations to Java<a
-         href="#*">*</a> primitive types or Java<a href="#*">*</a> classes.
-      </p>
-      <p class="example">
-         <a id="example2" name="example2"></a>Example 2
-      </p>
-      <p class="exampletext">
-         The notations in <a href="#example1">Example 1</a> can be represented
-         as the following Java<a href="#*">*</a> classes:
-      </p>
-      <blockquote>
-<pre>
+    <p>
+        In this example, the basic ASN.1 types <code>SEQUENCE</code>, <code>OBJECT IDENTIFIER</code>,
+        <code>BOOLEAN</code> and <code>OCTET STRING</code> are used to specify a new abstract
+        type <code>Extension</code>. The newly created type is then used with another basic
+        type <code>SEQUENCE OF</code> to describe the <code>Extensions</code> type. The
+        ASN.1 <code>INTEGER</code> type is used to specify the <code>Version</code> abstract
+        type and to provide constraints for this type.
+    </p>
+    <p class="backtotop">
+        <a href="#Top">Back to Top</a>
+    </p>
+    <h1>
+        <a id="Implementation" name="Implementation"></a>ASN.1 Framework in Harmony
+    </h1>
+    <p>
+        This section part of the document describes the ASN.1 framework as a whole, defines
+        the mapping principles to establish the correspondence between ASN.1 and Java<a href="#*">*</a>
+        types, and represents the hierarchy of ASN.1 types representation in the current
+        framework.
+    </p>
+    <h2>
+        <a id="About_ASN_Framework" name="About_ASN_Framework"></a>About
+    </h2>
+    <p>
+        The ASN.1 framework provides a common, easy and efficient approach for working with
+        ASN.1 basic types, notations and encoding rules. This framework can be described
+        as a layer between a Java<a href="#*">*</a> object and its ASN.1 encoded form, as
+        shown in Figure 1.
+    </p>
+    <br />
+    <br />
+    <p style="text-align: center">
+        <img src="images/ASN_framework.gif" alt="overview" />
+    </p>
+    <p class="special" style="text-align: center">
+        Figure 1: ASN.1 Framework Layer
+    </p>
+    <p>
+        The Harmony ASN.1 framework is characterized by:
+    </p>
+    <ul>
+        <li>A clear API for decoding and encoding objects </li>
+        <li>Low resource consuming </li>
+        <li>Thread safety </li>
+    </ul>
+    <p>
+        The framework enables the following:
+    </p>
+    <ul>
+        <li>Create a Java<a href="#*">*</a> object instance from its encoded octet string </li>
+        <li>Verify that an octet string is a valid encoded string </li>
+        <li>Generate an encoded octet string for a particular object </li>
+    </ul>
+    <p class="note">
+        Note
+    </p>
+    <p class="notetext">
+        The current ASN.1 framework is a partial implementation of the ASN.1 and encoding
+        rules specifications. This framework covers certain ASN.1 basic types and basic
+        encoding rules (BER), and provides most restrictions employed by the distinguished
+        encoding rules (DER).
+    </p>
+    <h2>
+        <a id="Mapping_ASN_Java" name="Mapping_ASN_Java"></a>Mapping between ASN.1 and Java<a
+            href="#*">*</a> Types
+    </h2>
+    <p>
+        The framework maps all ASN.1 abstract types and notations to Java<a href="#*">*</a>
+        primitive types or Java<a href="#*">*</a> classes.
+    </p>
+    <p class="example">
+        <a id="example2" name="example2"></a>Example 2
+    </p>
+    <p class="exampletext">
+        The notations in <a href="#example1">Example 1</a> can be represented as the following
+        Java<a href="#*">*</a> classes:
+    </p>
+        <pre>
 public class Extension {
     private String extnID;
     private boolean critical;
@@ -347,753 +304,640 @@
     private List extensions;
 }
 </pre>
-      </blockquote>
-      <p>
-         The <code>Extension</code> notation corresponds to a Java<a
-         href="#*">*</a> class with three fields, where every field corresponds
-         to one entry in the <code>Extension</code> notation. For example, the
-         <code>critical BOOLEAN DEFAULT FALSE</code> field in the
-         <code>Extension</code> notation corresponds to the <code>boolean
-         critical</code> field in the Java<a href="#*">*</a> class. The
-         <code>Extensions</code> notation equals to a Java<a href="#*">*</a>
-         class with a field that contains an ordered collection of the
-         instances of the <code>Extension</code> class.
-      </p>
-      <p>
-         The table below describes the default mapping ASN.1 types to Java<a
-         href="#*">*</a> types, and indicates the class providing the specified
-         mapping in the current framework.
-      </p>
-      <table cellspacing="0" cellpadding="0" align="center"
-      width="60%">
-         <tr>
-            <th  class="TableHeading" colspan="2">
-               ASN.1 Type
+    <p>
+        The <code>Extension</code> notation corresponds to a Java<a href="#*">*</a> class
+        with three fields, where every field corresponds to one entry in the <code>Extension</code>
+        notation. For example, the <code>critical BOOLEAN DEFAULT FALSE</code> field in
+        the <code>Extension</code> notation corresponds to the <code>boolean critical</code>
+        field in the Java<a href="#*">*</a> class. The <code>Extensions</code> notation
+        equals to a Java<a href="#*">*</a> class with a field that contains an ordered collection
+        of the instances of the <code>Extension</code> class.
+    </p>
+    <p>
+        The table below describes the default mapping ASN.1 types to Java<a href="#*">*</a>
+        types, and indicates the class providing the specified mapping in the current framework.
+    </p>
+    <table cellspacing="0" cellpadding="0" align="center" width="60%">
+        <tr>
+            <th class="TableHeading" colspan="2">
+                ASN.1 Type
             </th>
-            <th  class="TableHeading" style="text-align: center"
-            width="25%">
-               Java<a href="#*">*</a> Type
+            <th class="TableHeading" style="text-align: center" width="25%">
+                Java<a href="#*">*</a> Type
             </th>
-            <th  class="TableHeading" width="30%">
-               Framework Class
+            <th class="TableHeading" width="30%">
+                Framework Class
             </th>
-         </tr>
-         <tr>
-            <th class="TableHeading" rowspan="5"  width="11%">
-               <a id="Primitive" name="Primitive">Primitive</a> 
+        </tr>
+        <tr>
+            <th class="TableHeading" rowspan="5" width="11%">
+                <a id="Primitive" name="Primitive">Primitive</a>
             </td>
-         </tr>
-         <tr>
+        </tr>
+        <tr>
             <td width="30%">
-               <code>INTEGER</code>
+                <code>INTEGER</code>
             </td>
             <td align="center" width="25%">
-               <code>byte[]</code> 
+                <code>byte[]</code>
             </td>
             <td width="25%">
-               <code><a href="#ASN1Integer">ASN1Integer</a></code> 
+                <code><a href="#ASN1Integer">ASN1Integer</a></code>
             </td>
-         </tr>
-         <tr>
+        </tr>
+        <tr>
             <td width="30%">
-               <code>ENUMERATED</code>
+                <code>ENUMERATED</code>
             </td>
             <td align="center" width="25%">
-               <code>byte[]</code> 
+                <code>byte[]</code>
             </td>
             <td width="30%">
-               <code><a href="#ASN1Enumerated">ASN1Enumerated</a></code> 
+                <code><a href="#ASN1Enumerated">ASN1Enumerated</a></code>
             </td>
-         </tr>
-         <tr>
+        </tr>
+        <tr>
             <td width="30%">
-               <code>OBJECT IDENTIFIER</code>
+                <code>OBJECT IDENTIFIER</code>
             </td>
             <td align="center" width="25%">
-               <code>int[]</code> 
+                <code>int[]</code>
             </td>
             <td width="30%">
-               <code><a href="#ASN1Oid">ASN1Oid</a></code> 
+                <code><a href="#ASN1Oid">ASN1Oid</a></code>
             </td>
-         </tr>
-         <tr>
+        </tr>
+        <tr>
             <td width="30%">
-               <code>BOOLEAN</code>
+                <code>BOOLEAN</code>
             </td>
             <td align="center" width="25%">
-               <code>java.lang.Boolean</code> 
+                <code>java.lang.Boolean</code>
             </td>
             <td width="30%">
-               <code><a href="#ASN1Boolean">ASN1Boolean</a></code> 
+                <code><a href="#ASN1Boolean">ASN1Boolean</a></code>
             </td>
-         </tr>
-         <tr>
+        </tr>
+        <tr>
             <th class="TableHeading" rowspan="12" width="11%">
-               <a id="String" name="String">String</a> 
+                <a id="String" name="String">String</a>
             </th>
-            <td  width="30%">
-               <code>BitString</code>
+            <td width="30%">
+                <code>BitString</code>
             </td>
-            <td  align="center" width="25%">
-               <code>asn1.BitString</code> 
+            <td align="center" width="25%">
+                <code>asn1.BitString</code>
             </td>
-            <td  width="30%">
-               <code><a href="#ASN1BitString">ASN1BitString</a></code> 
+            <td width="30%">
+                <code><a href="#ASN1BitString">ASN1BitString</a></code>
             </td>
-         </tr>
-         <tr>
+        </tr>
+        <tr>
             <td width="30%">
-               <code>OctetString</code> 
+                <code>OctetString</code>
             </td>
             <td align="center" width="25%">
-               <code>byte[]</code> 
+                <code>byte[]</code>
             </td>
             <td width="30%">
-               <code><a href="#ASN1OctetString">ASN1OctetString</a></code> 
+                <code><a href="#ASN1OctetString">ASN1OctetString</a></code>
             </td>
-         </tr>
-         <tr>
+        </tr>
+        <tr>
             <td width="30%">
-               <code>PrintableString</code> 
+                <code>PrintableString</code>
             </td>
             <td align="center" width="25%">
-               <code>java.lang.String</code> 
+                <code>java.lang.String</code>
             </td>
             <td width="30%">
-               <code><a href="#ASN1StringType">ASN1StringType</a></code> 
+                <code><a href="#ASN1StringType">ASN1StringType</a></code>
             </td>
-         </tr>
-         <tr>
+        </tr>
+        <tr>
             <td width="30%">
-               <code>T61String</code> 
+                <code>T61String</code>
             </td>
             <td align="center" width="25%">
-               <code>java.lang.String</code> 
+                <code>java.lang.String</code>
             </td>
             <td width="30%">
-               <code><a href="#ASN1StringType">ASN1StringType</a></code> 
+                <code><a href="#ASN1StringType">ASN1StringType</a></code>
             </td>
-         </tr>
-         <tr>
+        </tr>
+        <tr>
             <td width="30%">
-               <code>IA5String</code> 
+                <code>IA5String</code>
             </td>
             <td align="center" width="25%">
-               <code>java.lang.String</code> 
+                <code>java.lang.String</code>
             </td>
             <td width="30%">
-               <code><a href="#ASN1StringType">ASN1StringType</a></code> 
+                <code><a href="#ASN1StringType">ASN1StringType</a></code>
             </td>
-         </tr>
-         <tr>
+        </tr>
+        <tr>
             <td width="30%">
-               <code>UTF8String</code> 
+                <code>UTF8String</code>
             </td>
             <td align="center" width="25%">
-               <code>java.lang.String</code> 
+                <code>java.lang.String</code>
             </td>
             <td width="30%">
-               <code><a href="#ASN1StringType">ASN1StringType</a></code> 
+                <code><a href="#ASN1StringType">ASN1StringType</a></code>
             </td>
-         </tr>
-         <tr>
+        </tr>
+        <tr>
             <td width="30%">
-               <code>BMPString</code> 
+                <code>BMPString</code>
             </td>
             <td align="center" width="25%">
-               <code>java.lang.String</code> 
+                <code>java.lang.String</code>
             </td>
             <td width="30%">
-               <code><a href="#ASN1StringType">ASN1StringType</a></code> 
+                <code><a href="#ASN1StringType">ASN1StringType</a></code>
             </td>
-         </tr>
-         <tr>
+        </tr>
+        <tr>
             <td width="30%">
-               <code>GeneralString</code> 
+                <code>GeneralString</code>
             </td>
             <td align="center" width="25%">
-               <code>java.lang.String</code> 
+                <code>java.lang.String</code>
             </td>
             <td width="30%">
-               <code><a href="#ASN1StringType">ASN1StringType</a></code> 
+                <code><a href="#ASN1StringType">ASN1StringType</a></code>
             </td>
-         </tr>
-         <tr>
+        </tr>
+        <tr>
             <td width="30%">
-               <code>TeletexString</code> 
+                <code>TeletexString</code>
             </td>
             <td align="center" width="25%">
-               <code>java.lang.String</code> 
+                <code>java.lang.String</code>
             </td>
             <td width="30%">
-               <code><a href="#ASN1StringType">ASN1StringType</a></code> 
+                <code><a href="#ASN1StringType">ASN1StringType</a></code>
             </td>
-         </tr>
-         <tr>
+        </tr>
+        <tr>
             <td width="30%">
-               <code>UniversalString</code> 
+                <code>UniversalString</code>
             </td>
             <td align="center" width="25%">
-               <code>java.lang.String</code> 
+                <code>java.lang.String</code>
             </td>
             <td width="30%">
-               <code><a href="#ASN1StringType">ASN1StringType</a></code> 
+                <code><a href="#ASN1StringType">ASN1StringType</a></code>
             </td>
-         </tr>
-         <tr>
+        </tr>
+        <tr>
             <td width="30%">
-               <code>UTCTime</code> 
+                <code>UTCTime</code>
             </td>
             <td align="center" width="25%">
-               <code>java.util.Date</code> 
+                <code>java.util.Date</code>
             </td>
             <td width="30%">
-               <code><a href="#ASN1UTCTime">ASN1UTCTime</a></code> 
+                <code><a href="#ASN1UTCTime">ASN1UTCTime</a></code>
             </td>
-         </tr>
-         <tr>
+        </tr>
+        <tr>
             <td width="30%">
-               <code>GeneralizedTime</code> 
+                <code>GeneralizedTime</code>
             </td>
             <td align="center" width="25%">
-               <code>java.util.Date</code> 
+                <code>java.util.Date</code>
             </td>
             <td width="30%">
-               <code><a href="#ASN1UTCTime">ASN1GeneralizedTime</a></code> 
+                <code><a href="#ASN1UTCTime">ASN1GeneralizedTime</a></code>
             </td>
-         </tr>
-         <tr>
+        </tr>
+        <tr>
             <th rowspan="3" class="TableHeading">
-               <a id="Constructed" name="Constructed">Constructed</a> 
+                <a id="Constructed" name="Constructed">Constructed</a>
             </th>
             <td width="30%">
-               <code>SEQUENCE</code>
+                <code>SEQUENCE</code>
             </td>
             <td align="center" width="25%">
-               <code>Object[]</code> 
+                <code>Object[]</code>
             </td>
             <td width="30%">
-               <code><a href="#ASN1Sequence">ASN1Sequence</a></code> 
+                <code><a href="#ASN1Sequence">ASN1Sequence</a></code>
             </td>
-         </tr>
-         <tr>
+        </tr>
+        <tr>
             <td width="30%">
-               <code>SEQUENCE OF</code>
+                <code>SEQUENCE OF</code>
             </td>
             <td align="center" width="25%">
-               <code>java.util.List</code> 
+                <code>java.util.List</code>
             </td>
             <td width="30%">
-               <code><a href="#ASN1SequenceOf">ASN1SequenceOf</a></code> 
+                <code><a href="#ASN1SequenceOf">ASN1SequenceOf</a></code>
             </td>
-         </tr>
-         <tr>
+        </tr>
+        <tr>
             <td width="30%">
-               <code>SET OF</code>
+                <code>SET OF</code>
             </td>
             <td width="25%" align="center">
-               <code>java.util.List</code> 
+                <code>java.util.List</code>
             </td>
             <td width="30%">
-               <code><a href="#ASN1SetOf">ASN1SetOf</a></code> 
+                <code><a href="#ASN1SetOf">ASN1SetOf</a></code>
             </td>
-         </tr>
-         <tr>
+        </tr>
+        <tr>
             <th rowspan="2" width="11%" class="TableHeading">
-               <a id="Tagged" name="Tagged">Tagged</a> 
+                <a id="Tagged" name="Tagged">Tagged</a>
             </th>
             <td width="30%">
-               <code>EXPLICIT</code> 
+                <code>EXPLICIT</code>
             </td>
             <td width="25%" style="text-align: center">
-               <i>based type</i> 
+                <i>based type</i>
             </td>
             <td width="30%">
-               <a href="#ASN1Explicit"><code>ASN1Explicit</code></a> 
+                <a href="#ASN1Explicit"><code>ASN1Explicit</code></a>
             </td>
-         </tr>
-         <tr>
+        </tr>
+        <tr>
             <td width="30%">
-               <code>IMPLICIT</code>
+                <code>IMPLICIT</code>
             </td>
             <td align="center" width="25%" style="text-align: center">
-               <i>based type</i> 
+                <i>based type</i>
             </td>
             <td width="30%">
-               <a href="#Class_ASNImplicit"><code>ASN1Implicit</code></a> 
+                <a href="#Class_ASNImplicit"><code>ASN1Implicit</code></a>
             </td>
-         </tr>
-         <tr>
+        </tr>
+        <tr>
             <th rowspan="2" width="11%" class="TableHeading">
-               <a id="Other" name="Other">Other</a> 
+                <a id="Other" name="Other">Other</a>
             </th>
             <td width="30%">
-               <code>ANY</code>
+                <code>ANY</code>
             </td>
             <td align="center" width="25%">
-               <code>byte[]</code> 
+                <code>byte[]</code>
             </td>
             <td width="30%">
-               <code><a href="#Class_ASNAny">ASN1Any</a></code> 
+                <code><a href="#Class_ASNAny">ASN1Any</a></code>
             </td>
-         </tr>
-         <tr>
+        </tr>
+        <tr>
             <td width="30%">
-               <code>CHOICE</code>
+                <code>CHOICE</code>
             </td>
             <td align="center" width="25%" style="text-align: center">
-               <i>one of chosen types</i> 
+                <i>one of chosen types</i>
             </td>
             <td width="30%">
-               <code><a href="#Class_ASNChoice">ASN1Choice</a></code> 
+                <code><a href="#Class_ASNChoice">ASN1Choice</a></code>
             </td>
-         </tr>
-      </table>
-      <p class="backtotop">
-         <a href="#Top">Back to Top</a>
-      </p>
-      <h2>
-         <a id="Harmony_Classes" name="Harmony_Classes"></a>Harmony ASN.1
-         Classes
-      </h2>
-      <p>
-         Basic ASN.1 types are in the
-         <code>org.apache.harmony.security.asn1</code> package in accordance
-         with the hierarchy shown in Figure 2.
-      </p>
-      <p style="text-align: center">
-         <img src="images/package_content.gif" alt="package" width="469"
-         height="352" />
-      </p>
-      <p class="special">
-         Figure 2: Class Hierarchy
-      </p>
-      <p>
-         The subsequent sections provide as short description of the classes
-         included in the package.
-      </p>
-      <p class="class">
-         <a id="Primitive_Types" name="Primitive_Types"></a>Primitive Types
-      </p>
-      <dl>
-         <dt>
-            <a id="ASN1Integer" name="ASN1Integer"></a>ASN1Integer
-         </dt>
-         <dd>
-            This class represents the ASN.1 <code>INTEGER</code> type that
-            denotes an arbitrary integer with positive, negative, or zero
-            values and any magnitude. Because an integer value is not
-            restricted, it is up to the application class to choose the Java<a
-            href="#*">*</a> type for storing the integer value, for example, an
-            instance of the <code>java.math.BigInteger</code> class. By
-            default, an integer value is stored in an array of bytes.
-         </dd>
-         <dt>
-            <a id="ASN1Enumerated" name="ASN1Enumerated"></a> ASN1Enumerated
-         </dt>
-         <dd>
-            This class represents the ASN.1 <code>ENUMERATED</code> type that
-            denotes a set of integer values. The implementation of this class
-            is similar to that of the <code>ASN1Integer</code> class.
-         </dd>
-         <dt>
-            <a id="ASN1Oid" name="ASN1Oid"></a>ASN1Oid
-         </dt>
-         <dd>
-            This class implements the ASN.1 <code>OBJECT IDENTIFIER</code>
-            type. This type is a sequence of integer components that identifies
-            an entity, such as an organization or an algorithm. Integer
-            components have no negative values. An <code>OBJECT
-            IDENTIFIER</code> value includes at least two components. The
-            corresponding Java<a href="#*">*</a> type is an array of integer
-            values.
-         </dd>
-         <dt>
-            <a id="ASN1Boolean" name="ASN1Boolean"></a> ASN1Boolean
-         </dt>
-         <dd>
-            This class implements the ASN.1 <code>BOOLEAN</code> type, which
-            corresponds to the <code>java.lang.Boolean</code> Java<a
-            href="#*">*</a> class.
-         </dd>
-      </dl>
-      <p class="class">
-         <a id="String_Types" name="String_Types"></a>String Types
-      </p>
-      <dl>
-         <dt>
-            <a id="ASN1StringType" name="ASN1StringType"></a>ASN1StringType
-         </dt>
-         <dd>
-            This is an abstract class that contains common functionality for
-            all ASN.1 string types, and includes the implementation of the
-            following types: <code>BMPString, IA5String, GeneralString,
-            PrintableString, TeletexString, UniversalString,</code> and
-            <code>UTF8String</code>. The class maps all these types to the
-            <code>java.lang.String</code> object. 
+        </tr>
+    </table>
+    <p class="backtotop">
+        <a href="#Top">Back to Top</a>
+    </p>
+    <h2>
+        <a id="Harmony_Classes" name="Harmony_Classes"></a>Harmony ASN.1 Classes
+    </h2>
+    <p>
+        Basic ASN.1 types are in the <code>org.apache.harmony.security.asn1</code> package
+        in accordance with the hierarchy shown in Figure 2.
+    </p>
+    <p style="text-align: center">
+        <img src="images/package_content.gif" alt="package" width="469" height="352" />
+    </p>
+    <p class="special">
+        Figure 2: Class Hierarchy
+    </p>
+    <p>
+        The subsequent sections provide as short description of the classes included in
+        the package.
+    </p>
+    <p class="class">
+        <a id="Primitive_Types" name="Primitive_Types"></a>Primitive Types
+    </p>
+    <dl>
+        <dt><a id="ASN1Integer" name="ASN1Integer"></a>ASN1Integer </dt>
+        <dd>
+            This class represents the ASN.1 <code>INTEGER</code> type that denotes an arbitrary
+            integer with positive, negative, or zero values and any magnitude. Because an integer
+            value is not restricted, it is up to the application class to choose the Java<a href="#*">*</a>
+            type for storing the integer value, for example, an instance of the <code>java.math.BigInteger</code>
+            class. By default, an integer value is stored in an array of bytes.
+        </dd>
+        <dt><a id="ASN1Enumerated" name="ASN1Enumerated"></a>ASN1Enumerated </dt>
+        <dd>
+            This class represents the ASN.1 <code>ENUMERATED</code> type that denotes a set
+            of integer values. The implementation of this class is similar to that of the <code>
+                ASN1Integer</code> class.
+        </dd>
+        <dt><a id="ASN1Oid" name="ASN1Oid"></a>ASN1Oid </dt>
+        <dd>
+            This class implements the ASN.1 <code>OBJECT IDENTIFIER</code> type. This type is
+            a sequence of integer components that identifies an entity, such as an organization
+            or an algorithm. Integer components have no negative values. An <code>OBJECT IDENTIFIER</code>
+            value includes at least two components. The corresponding Java<a href="#*">*</a>
+            type is an array of integer values.
+        </dd>
+        <dt><a id="ASN1Boolean" name="ASN1Boolean"></a>ASN1Boolean </dt>
+        <dd>
+            This class implements the ASN.1 <code>BOOLEAN</code> type, which corresponds to
+            the <code>java.lang.Boolean</code> Java<a href="#*">*</a> class.
+        </dd>
+    </dl>
+    <p class="class">
+        <a id="String_Types" name="String_Types"></a>String Types
+    </p>
+    <dl>
+        <dt><a id="ASN1StringType" name="ASN1StringType"></a>ASN1StringType </dt>
+        <dd>
+            This is an abstract class that contains common functionality for all ASN.1 string
+            types, and includes the implementation of the following types: <code>BMPString, IA5String,
+                GeneralString, PrintableString, TeletexString, UniversalString,</code> and <code>UTF8String</code>.
+            The class maps all these types to the <code>java.lang.String</code> object.
             <p class="note">
-               Note
+                Note
             </p>
             <p class="notetext">
-               The current implementation does not verify allowed characters
-               for any of ASN.1 restricted characters types. The class only
-               stores and retrieves contents bytes to and from the
-               <code>String</code> object.
+                The current implementation does not verify allowed characters for any of ASN.1 restricted
+                characters types. The class only stores and retrieves contents bytes to and from
+                the <code>String</code> object.
             </p>
-         </dd>
-      </dl>
-      <dl>
-         <dt>
-            <a id="ASN1BitString" name="ASN1BitString"></a>ASN1BitString
-         </dt>
-         <dd>
-            This class represents the ASN.1 <code>BitString</code> type. The
-            corresponding Java<a href="#*">*</a> class is
-            <code>BitString</code> included in the <code>asn1</code> package.
-            The class provides implementation for decoding or encoding
-            <code>BitString</code> objects. 
+        </dd>
+    </dl>
+    <dl>
+        <dt><a id="ASN1BitString" name="ASN1BitString"></a>ASN1BitString </dt>
+        <dd>
+            This class represents the ASN.1 <code>BitString</code> type. The corresponding Java<a
+                href="#*">*</a> class is <code>BitString</code> included in the <code>asn1</code>
+            package. The class provides implementation for decoding or encoding <code>BitString</code>
+            objects.
             <p class="note">
-               Note
+                Note
             </p>
             <p class="notetext">
-               A special use case for this ASN.1 type exists, when the type is
-               declared as <code>Named BitString</code>. For example:
+                A special use case for this ASN.1 type exists, when the type is declared as <code>Named
+                    BitString</code>. For example:
             </p>
-            <blockquote>
-               <blockquote>
-<pre>
+                    <pre>
     Keys ::= BIT STRING {
         Key1 (0),
         Key2 (1),
         MyKey (2)
     }
 </pre>
-               </blockquote>
-            </blockquote>
             <p class="notetext">
-               In this case, the BER specification [<a
-               href="#RULES_SPEC">3</a>] enables adding and removing any number
-               of trailing to and from the basic encoding. To provide a correct
-               type implementation, use the
-               <code>ASN1Bitstring.ASN1NamedBitList</code> class. By default,
-               the class maps the ASN.1 <code>Named BitString</code> type to an
-               array of primitive boolean values.
+                In this case, the BER specification [<a href="#RULES_SPEC">3</a>] enables adding
+                and removing any number of trailing to and from the basic encoding. To provide a
+                correct type implementation, use the <code>ASN1Bitstring.ASN1NamedBitList</code>
+                class. By default, the class maps the ASN.1 <code>Named BitString</code> type to
+                an array of primitive boolean values.
             </p>
-         </dd>
-         <dt>
-            <a id="ASN1OctetString" name="ASN1OctetString"></a>ASN1OctetString
-         </dt>
-         <dd>
-            This class implements the ASN.1 <code>OctetString</code> type,
-            which corresponds to the Java<a href="#*">*</a> type of an array of
-            bytes.
-         </dd>
-      </dl>
-      <dl>
-         <dt>
-            <a id="ASN1UTCTime" name="ASN1UTCTime"></a> ASN1UTCTime
-         </dt>
-         <dd>
-            This class represents the ASN.1 <code>UTCTime</code> type. The
-            corresponding Java<a href="#*">*</a> class is
-            <code>java.util.Date</code>.
-         </dd>
-         <dt>
-            <a id="ASN1GeneralizedTime"
-            name="ASN1GeneralizedTime"></a>ASN1GeneralizedTime
-         </dt>
-         <dd>
-            This class represents the ASN.1 <code>GeneralizedTime</code> type.
-            The corresponding Java<a href="#*">*</a> class is
-            <code>java.util.Date</code>.
-         </dd>
-      </dl>
-      <p class="class">
-         <a id="Constructed_Types" name="Constructed_Types"></a>Constructed
-         Types
-      </p>
-      <dl>
-         <dt>
-            <a id="ASN1Sequence" name="ASN1Sequence"></a> ASN1Sequence
-         </dt>
-         <dd>
-            The class represents a ASN.1 type consisting of an ordered
-            collection of more than one type. A type in the collection can be
-            optional or can have default values. If a type in the collection is
-            marked as optional or default, then its value may be absent in the
-            encoding of the sequence type. If a default type is absent, then
-            its default value is used.<br />
-            An instance of the class is initialized with a Java<a
-            href="#*">*</a> array of ASN.1 classes that corresponds to the
-            notation of a sequence type. The order of ASN.1 classes in an
-            initialization array must strictly correspond to the type.<br />
-            For example, if a sequence type has the following types collection:
-            <code>integer</code>, <code>boolean</code>, <code>ANY</code>, then
-            an initialization array must contain three class instances in the
-            same order: <code>ASN1Boolean</code>, <code>ASN1Integer</code>,
+        </dd>
+        <dt><a id="ASN1OctetString" name="ASN1OctetString"></a>ASN1OctetString </dt>
+        <dd>
+            This class implements the ASN.1 <code>OctetString</code> type, which corresponds
+            to the Java<a href="#*">*</a> type of an array of bytes.
+        </dd>
+    </dl>
+    <dl>
+        <dt><a id="ASN1UTCTime" name="ASN1UTCTime"></a>ASN1UTCTime </dt>
+        <dd>
+            This class represents the ASN.1 <code>UTCTime</code> type. The corresponding Java<a
+                href="#*">*</a> class is <code>java.util.Date</code>.
+        </dd>
+        <dt><a id="ASN1GeneralizedTime" name="ASN1GeneralizedTime"></a>ASN1GeneralizedTime </dt>
+        <dd>
+            This class represents the ASN.1 <code>GeneralizedTime</code> type. The corresponding
+            Java<a href="#*">*</a> class is <code>java.util.Date</code>.
+        </dd>
+    </dl>
+    <p class="class">
+        <a id="Constructed_Types" name="Constructed_Types"></a>Constructed Types
+    </p>
+    <dl>
+        <dt><a id="ASN1Sequence" name="ASN1Sequence"></a>ASN1Sequence </dt>
+        <dd>
+            The class represents a ASN.1 type consisting of an ordered collection of more than
+            one type. A type in the collection can be optional or can have default values. If
+            a type in the collection is marked as optional or default, then its value may be
+            absent in the encoding of the sequence type. If a default type is absent, then its
+            default value is used.<br />
+            An instance of the class is initialized with a Java<a href="#*">*</a> array of ASN.1
+            classes that corresponds to the notation of a sequence type. The order of ASN.1
+            classes in an initialization array must strictly correspond to the type.<br />
+            For example, if a sequence type has the following types collection: <code>integer</code>,
+            <code>boolean</code>, <code>ANY</code>, then an initialization array must contain
+            three class instances in the same order: <code>ASN1Boolean</code>, <code>ASN1Integer</code>,
             <code>ASN1Any</code>.
-         </dd>
-         <dt>
-            <a id="ASN1SequenceOf" name="ASN1SequenceOf"></a>ASN1SequenceOf
-         </dt>
-         <dd>
-            The <code>SEQUENCE OF</code> type denotes an ordered collection of
-            one or more values of the selected ASN.1 type. An instance of the
-            class is initialized with an instance of the ASN.1 class according
-            to the type notation. The passed instance is used to decode or
-            encode all values in an collection.
-         </dd>
-         <dt>
-            <a id="ASN1SetOf" name="ASN1SetOf"></a>ASN1SetOf
-         </dt>
-         <dd>
-            The <code>SET OF</code> type denotes an unordered collection of one
-            or more values of the selected ASN.1 type. This class is similar to
-            the <code>ASN1SequenceOf</code> class.
-         </dd>
-      </dl>
-      <p class="class">
-         <a id="Tagged_Types" name="Tagged_Types"></a>Tagged Types
-      </p>
-      <dl>
-         <dt>
-            <a id="ASN1Explicit" name="ASN1Explicit"></a>ASN1Explicit
-         </dt>
-         <dd>
-            The class implements the ASN.1 <code>EXPLICIT</code> type tagging.
-            <em>Explicit tagging</em> denotes a type derived from another type
-            by adding an outer tag to the base type. This type can be
-            represented as a sequence type with only one component, so that the
-            implementation class acts as a container for another ASN.1 type.
-         </dd>
-         <dt>
-            <a id="Class_ASNImplicit" name="Class_ASNImplicit"></a>ASN1Implicit
-         </dt>
-         <dd>
-            The class implements the ASN.1 <code>IMPLICIT</code> type tagging.
-            An <em>implicitly tagged type</em> is a type derived from another
-            type by changing a tag of the base type. The implementation class
-            for this type changes only the tag when decoding or encoding the
-            base type.
-         </dd>
-      </dl>
-      <p class="class">
-         <a id="Other_Types" name="Other_Types"></a>Other Types
-      </p>
-      <dl>
-         <dt>
-            <a id="Class_ASNAny" name="Class_ASNAny"></a>ASN1Any
-         </dt>
-         <dd>
-            The class implements the ASN.1 <code>ANY</code> type. The type
-            denotes any ASN.1 type that can be defined by a value of the
-            <code>OBJECT IDENTIFIER</code> or by an integer index. The class
-            handles only raw data represented as a Java<a href="#*">*</a> byte
-            array. It is up to the application class to select the appropriate
-            decoder or encoder for retrieving or storing the content
-            respectively.
-         </dd>
-         <dt>
-            <a id="Class_ASNChoice" name="Class_ASNChoice"></a>ASN1Choice
-         </dt>
-         <dd>
-            The class implements the ASN.1 <code>CHOICE</code> type. The type
-            represents a list of one more type alternatives with distinct tags.
-            an instance of the class is initialized with the Java<a
-            href="#*">*</a> array of ASN.1 classes, which corresponds to a type
+        </dd>
+        <dt><a id="ASN1SequenceOf" name="ASN1SequenceOf"></a>ASN1SequenceOf </dt>
+        <dd>
+            The <code>SEQUENCE OF</code> type denotes an ordered collection of one or more values
+            of the selected ASN.1 type. An instance of the class is initialized with an instance
+            of the ASN.1 class according to the type notation. The passed instance is used to
+            decode or encode all values in an collection.
+        </dd>
+        <dt><a id="ASN1SetOf" name="ASN1SetOf"></a>ASN1SetOf </dt>
+        <dd>
+            The <code>SET OF</code> type denotes an unordered collection of one or more values
+            of the selected ASN.1 type. This class is similar to the <code>ASN1SequenceOf</code>
+            class.
+        </dd>
+    </dl>
+    <p class="class">
+        <a id="Tagged_Types" name="Tagged_Types"></a>Tagged Types
+    </p>
+    <dl>
+        <dt><a id="ASN1Explicit" name="ASN1Explicit"></a>ASN1Explicit </dt>
+        <dd>
+            The class implements the ASN.1 <code>EXPLICIT</code> type tagging. <em>Explicit tagging</em>
+            denotes a type derived from another type by adding an outer tag to the base type.
+            This type can be represented as a sequence type with only one component, so that
+            the implementation class acts as a container for another ASN.1 type.
+        </dd>
+        <dt><a id="Class_ASNImplicit" name="Class_ASNImplicit"></a>ASN1Implicit </dt>
+        <dd>
+            The class implements the ASN.1 <code>IMPLICIT</code> type tagging. An <em>implicitly
+                tagged type</em> is a type derived from another type by changing a tag of the
+            base type. The implementation class for this type changes only the tag when decoding
+            or encoding the base type.
+        </dd>
+    </dl>
+    <p class="class">
+        <a id="Other_Types" name="Other_Types"></a>Other Types
+    </p>
+    <dl>
+        <dt><a id="Class_ASNAny" name="Class_ASNAny"></a>ASN1Any </dt>
+        <dd>
+            The class implements the ASN.1 <code>ANY</code> type. The type denotes any ASN.1
+            type that can be defined by a value of the <code>OBJECT IDENTIFIER</code> or by
+            an integer index. The class handles only raw data represented as a Java<a href="#*">*</a>
+            byte array. It is up to the application class to select the appropriate decoder
+            or encoder for retrieving or storing the content respectively.
+        </dd>
+        <dt><a id="Class_ASNChoice" name="Class_ASNChoice"></a>ASN1Choice </dt>
+        <dd>
+            The class implements the ASN.1 <code>CHOICE</code> type. The type represents a list
+            of one more type alternatives with distinct tags. an instance of the class is initialized
+            with the Java<a href="#*">*</a> array of ASN.1 classes, which corresponds to a type
             notation.<br />
-            For example, if a <code>CHOICE</code> type is specified as a list
-            of <code>boolean</code>, <code>OctetString</code> and
-            <code>UTCTime</code>, then an initialization array contains
-            instances of the <code>ASN1Boolean</code>,
-            <code>ASN1OctetString</code> and <code>ASN1UTCTime</code> classes.
-            During decoding or encoding, a required type alternative is
-            selected.
-         </dd>
-      </dl>
-      <p class="backtotop">
-         <a href="#Top">Back to Top</a>
-      </p>
-      <h2>
-         <a id="Encoding_Rules" name="Encoding_Rules"></a>Encoding Rules
-      </h2>
-      <p>
-         Encoding rules specify how to represent an ASN.1 type as a sequence of
-         octets. ASN.1 encoding rules are represented in the
-         <code>org.apache.harmony.security.asn1</code> package, as follows:
-      </p>
-      <ul>
-         <li>
-            <code>BerInputStream</code> and <code>DerInputStream</code> provide
-            decoding and verifying functionality for corresponding notation
-            rules.
-         </li>
-         <li>
-            <code>BerOutputStream</code> and <code>DerOutputStream</code>
-            provide the encoding functionality.
-         </li>
-      </ul>
-      <p class="backtotop">
-         <a href="#Top">Back to Top</a>
-      </p>
-      <h3>
-         <a id="Encoding" name="Encoding"></a>Encoding
-      </h3>
-      <p>
-         <em>Encoding</em> an object is the process of extracting all required
-         information from an object and storing it in a sequence of octets
-         according to the specified ASN.1 notation and encoding rules. The
-         common encoding functionality is implemented in the
-         <code>BerOutputStream</code> class. Encoding for DER is represented by
-         the <code>DEROutputStream</code> class.
-      </p>
-      <p>
-         The encoding of data for each ASN.1 type includes:
-      </p>
-      <ul>
-         <li>
-            identifier octets (for example, tag)
-         </li>
-         <li>
-            length octets
-         </li>
-         <li>
-            content octets
-         </li>
-         <li>
-            end-of-content octets
-         </li>
-      </ul>
-      <p class="note">
-         DER Encoding
-      </p>
-      <p class="notetext">
-         In contrast to BER, DER enables using only the definite form of length
-         encoding. That is why, before encoding an ASN.1 type value, the ASN.1
-         framework must obtain the length of the value. This requirement
-         determines the whole process of DER encoding: to calculate the length
-         of a constructed ASN.1 type, the framework calculates lengths of its
-         components, which can also be constructed, and so on. DER encoding
-         goes in the following stages:
-      </p>
-      <ul class="notetext">
-         <li>
-            <em>Collection</em>: Step by step, the DER encoder extracts all
-            data to be encoded, processes the data, calculates an encoding
-            length for each item, and stores all calculations and processed
-            data. Then, the encoder calculates the overall encoding length and
-            allocates required space.
-         </li>
-         <li>
-            <em>Encoding</em>: The DER encoder retrieves stored information,
-            encodes it according to the rules and writes the encoding to the
-            allocated byte array.
-         </li>
-      </ul>
-      <h3>
-         <a id="Decoding" name="Decoding"></a>Decoding
-      </h3>
-      <p>
-         <em>Decoding</em> or verifying the provided encoded form is a
-         sequential process of parsing strings of octets according to the
-         specified ASN.1 notation and encoding rules.
-      </p>
-      <p>
-         An iteration of decoding an ASN.1 type includes decoding its tag,
-         length, and content octets. The class <code>BerInputStream</code>
-         provides a common decoding implementation for all basic ASN.1 types.
-         To provide specific decoding for a basic ASN.1 type, a derived class
-         must override one of the corresponding methods. For example,
-         <code>DerInputStream</code> provides a custom implementation for
-         decoding the <code>ASN.1 Boolean</code> type by overriding the method
-         <code>readBoolean()</code>.
-      </p>
-      <p class="backtotop">
-         <a href="#Top">Back to Top</a>
-      </p>
-      <h2>
-         <a id="Notations_Implementation"
-         name="Notations_Implementation"></a>Implementing ASN.1 Notations
-      </h2>
-      <h3>
-         <a id="Basic_Classes" name="Basic_Classes"></a>Basic Classes
-      </h3>
-      <p>
-         In the current framework, the basic classes meet the following
-         requirements:
-      </p>
-      <ul>
-         <li>
-            All basic classes are thread-safe classes.<br />
-             This means that an instance of an ASN.1 class can be used by many
-            threads simultaneously for decoding or encoding a particular class
-            of Java<a href="#*">*</a> objects. An instance of an ASN.1 class
-            does not keep any specific data for a selected object. It only
-            provides a way for a decoder stream to store decoded data in a
-            Java<a href="#*">*</a> object, and a way for an encoder stream to
-            extract a data to be encoded from a Java<a href="#*">*</a> object.
-         </li>
-         <li>
-            All classes for string and primitive ASN.1 types provide access to
-            a reusable class instance via the static <code>getInstance()</code>
-            method.<br />
-             If a separate instance of an ASN.1 class is not required, this
-            method is used instead of a constructor. A constructor is provided
-            for inheritance purposes only.
-         </li>
-      </ul>
-      <p class="backtotop">
-         <a href="#Top">Back to Top</a>
-      </p>
-      <h3>
-         <a id="Custom_classes" name="Custom_classes"></a>Custom Classes
-      </h3>
-      <p>
-         Classes from the <code>asn1</code> package that represent ASN.1 basic
-         types are used as building blocks for implementing a <em>custom</em>
-         ASN.1 encoding or decoding class. A custom ASN.1 class provides
-         mapping of an abstract ASN.1 type to a definite Java<a href="#*">*</a>
-         class.
-      </p>
-      <p>
-         Two approaches for implementing custom ASN.1 classes are available.
-         Custom classes can be designed as singleton Java<a href="#*">*</a>
-         classes or not. The choice depends on further use of the class
-         decoder. The singleton approach is not efficient when decoding only
-         one Java<a href="#*">*</a> object. However, for decoding a series of
-         encodings (for example, with an application server), the singleton
-         approach is rather effective because only one reusable decoder
-         instance exists. Creating a new decoder object for each decoded or
-         encoded Java<a href="#*">*</a> object leads to performance penalties.
-      </p>
-      <p>
-         To implement the singleton approach, a custom ASN.1 class must meet
-         the following requirements:
-      </p>
-      <ul>
-         <li>
-            Class has only one reusable instance and provides a way to access
-            it.
-         </li>
-         <li>
-            Class is thread-safe. Thread safety is provided by passing all
-            required data via parameters of methods. All data specific for a
-            Java<a href="#*">*</a> object is stored in the decoding or encoding
-            stream.
-         </li>
-      </ul>
-      <p class="example">
-         Example 3
-      </p>
-      <p class="exampletext">
-         This example illustrates the singleton approach to static instances of
-         ASN.1 custom classes for the <code>Extensions</code> and
-         <code>Extension</code> classes used in <a href="#example2">Example
-         2</a> . For this, create an instance of a custom ASN.1 class as an
-         instance of an anonymous class as shown below.
-      </p>
-      <blockquote>
-<pre>
+            For example, if a <code>CHOICE</code> type is specified as a list of <code>boolean</code>,
+            <code>OctetString</code> and <code>UTCTime</code>, then an initialization array
+            contains instances of the <code>ASN1Boolean</code>, <code>ASN1OctetString</code>
+            and <code>ASN1UTCTime</code> classes. During decoding or encoding, a required type
+            alternative is selected.
+        </dd>
+    </dl>
+    <p class="backtotop">
+        <a href="#Top">Back to Top</a>
+    </p>
+    <h2>
+        <a id="Encoding_Rules" name="Encoding_Rules"></a>Encoding Rules
+    </h2>
+    <p>
+        Encoding rules specify how to represent an ASN.1 type as a sequence of octets. ASN.1
+        encoding rules are represented in the <code>org.apache.harmony.security.asn1</code>
+        package, as follows:
+    </p>
+    <ul>
+        <li><code>BerInputStream</code> and <code>DerInputStream</code> provide decoding and
+            verifying functionality for corresponding notation rules. </li>
+        <li><code>BerOutputStream</code> and <code>DerOutputStream</code> provide the encoding
+            functionality. </li>
+    </ul>
+    <p class="backtotop">
+        <a href="#Top">Back to Top</a>
+    </p>
+    <h3>
+        <a id="Encoding" name="Encoding"></a>Encoding
+    </h3>
+    <p>
+        <em>Encoding</em> an object is the process of extracting all required information
+        from an object and storing it in a sequence of octets according to the specified
+        ASN.1 notation and encoding rules. The common encoding functionality is implemented
+        in the <code>BerOutputStream</code> class. Encoding for DER is represented by the
+        <code>DEROutputStream</code> class.
+    </p>
+    <p>
+        The encoding of data for each ASN.1 type includes:
+    </p>
+    <ul>
+        <li>identifier octets (for example, tag) </li>
+        <li>length octets </li>
+        <li>content octets </li>
+        <li>end-of-content octets </li>
+    </ul>
+    <p class="note">
+        DER Encoding
+    </p>
+    <p class="notetext">
+        In contrast to BER, DER enables using only the definite form of length encoding.
+        That is why, before encoding an ASN.1 type value, the ASN.1 framework must obtain
+        the length of the value. This requirement determines the whole process of DER encoding:
+        to calculate the length of a constructed ASN.1 type, the framework calculates lengths
+        of its components, which can also be constructed, and so on. DER encoding goes in
+        the following stages:
+    </p>
+    <ul class="notetext">
+        <li><em>Collection</em>: Step by step, the DER encoder extracts all data to be encoded,
+            processes the data, calculates an encoding length for each item, and stores all
+            calculations and processed data. Then, the encoder calculates the overall encoding
+            length and allocates required space. </li>
+        <li><em>Encoding</em>: The DER encoder retrieves stored information, encodes it according
+            to the rules and writes the encoding to the allocated byte array. </li>
+    </ul>
+    <h3>
+        <a id="Decoding" name="Decoding"></a>Decoding
+    </h3>
+    <p>
+        <em>Decoding</em> or verifying the provided encoded form is a sequential process
+        of parsing strings of octets according to the specified ASN.1 notation and encoding
+        rules.
+    </p>
+    <p>
+        An iteration of decoding an ASN.1 type includes decoding its tag, length, and content
+        octets. The class <code>BerInputStream</code> provides a common decoding implementation
+        for all basic ASN.1 types. To provide specific decoding for a basic ASN.1 type,
+        a derived class must override one of the corresponding methods. For example, <code>DerInputStream</code>
+        provides a custom implementation for decoding the <code>ASN.1 Boolean</code> type
+        by overriding the method <code>readBoolean()</code>.
+    </p>
+    <p class="backtotop">
+        <a href="#Top">Back to Top</a>
+    </p>
+    <h2>
+        <a id="Notations_Implementation" name="Notations_Implementation"></a>Implementing
+        ASN.1 Notations
+    </h2>
+    <h3>
+        <a id="Basic_Classes" name="Basic_Classes"></a>Basic Classes
+    </h3>
+    <p>
+        In the current framework, the basic classes meet the following requirements:
+    </p>
+    <ul>
+        <li>All basic classes are thread-safe classes.<br />
+            This means that an instance of an ASN.1 class can be used by many threads simultaneously
+            for decoding or encoding a particular class of Java<a href="#*">*</a> objects. An
+            instance of an ASN.1 class does not keep any specific data for a selected object.
+            It only provides a way for a decoder stream to store decoded data in a Java<a href="#*">*</a>
+            object, and a way for an encoder stream to extract a data to be encoded from a Java<a
+                href="#*">*</a> object. </li>
+        <li>All classes for string and primitive ASN.1 types provide access to a reusable class
+            instance via the static <code>getInstance()</code> method.<br />
+            If a separate instance of an ASN.1 class is not required, this method is used instead
+            of a constructor. A constructor is provided for inheritance purposes only. </li>
+    </ul>
+    <p class="backtotop">
+        <a href="#Top">Back to Top</a>
+    </p>
+    <h3>
+        <a id="Custom_classes" name="Custom_classes"></a>Custom Classes
+    </h3>
+    <p>
+        Classes from the <code>asn1</code> package that represent ASN.1 basic types are
+        used as building blocks for implementing a <em>custom</em> ASN.1 encoding or decoding
+        class. A custom ASN.1 class provides mapping of an abstract ASN.1 type to a definite
+        Java<a href="#*">*</a> class.
+    </p>
+    <p>
+        Two approaches for implementing custom ASN.1 classes are available. Custom classes
+        can be designed as singleton Java<a href="#*">*</a> classes or not. The choice depends
+        on further use of the class decoder. The singleton approach is not efficient when
+        decoding only one Java<a href="#*">*</a> object. However, for decoding a series
+        of encodings (for example, with an application server), the singleton approach is
+        rather effective because only one reusable decoder instance exists. Creating a new
+        decoder object for each decoded or encoded Java<a href="#*">*</a> object leads to
+        performance penalties.
+    </p>
+    <p>
+        To implement the singleton approach, a custom ASN.1 class must meet the following
+        requirements:
+    </p>
+    <ul>
+        <li>Class has only one reusable instance and provides a way to access it. </li>
+        <li>Class is thread-safe. Thread safety is provided by passing all required data via
+            parameters of methods. All data specific for a Java<a href="#*">*</a> object is
+            stored in the decoding or encoding stream. </li>
+    </ul>
+    <p class="example">
+        Example 3
+    </p>
+    <p class="exampletext">
+        This example illustrates the singleton approach to static instances of ASN.1 custom
+        classes for the <code>Extensions</code> and <code>Extension</code> classes used
+        in <a href="#example2">Example 2</a> . For this, create an instance of a custom
+        ASN.1 class as an instance of an anonymous class as shown below.
+    </p>
+        <pre>
 class Extensions {
     // instance of decoder/encoder
     public static final ASN1SequenceOf ASN1 =
@@ -1124,59 +968,52 @@
 
 }
 </pre>
-      </blockquote>
-      <p>
-         The <code>static final ASN1</code> field instance provides a mapping
-         between the Java<a href="#*">*</a> <code>Extension</code> class and
-         its ASN.1 notation. The field is initialized so that it reflects the
-         ASN.1 notation of the class: it is the instance of the
-         <code>ASN1Sequence</code> class that is initialized with instances of
-         the <code>ASN1Oid</code>, <code>ASN1Boolean</code> and
-         <code>ASN1OctetString</code> classes.
-      </p>
-      <p>
-         The <code>Extensions</code> class has a similar field. The field also
-         reflects the ASN.1 notation: it is the instance of the
-         <code>ASN1SequenceOf</code> class and it is initialized by the
-         <code>ASN1</code> field from the <code>Extension</code> class.
-      </p>
-      <p>
-         Figure 3 displays the correspondence between the application object
-         tree and the object tree of ASN.1 custom classes.
-      </p>
-      <p style="text-align: center">
-         <img src="images/example3.gif" alt="Tree" />
-      </p>
-      <p class="special">
-         Figure 3: Java Object and ASN.1 Custom Class Trees
-      </p>
-      <p class="backtotop">
-         <a href="#Top">Back to Top</a>
-      </p>
-      <h1>
-         Appendix: <a id="Appendix" name="Appendix"></a>Usage Examples
-      </h1>
-      <p>
-         This section demonstrates the usage of the ASN.1 framework.
-      </p>
-      <h3>
-         ASN.1 Boolean
-      </h3>
-      <p>
-         An abstract type can be defined as <code>ASN.1 Boolean</code>, for
-         example:
-      </p>
-      <blockquote>
-<pre>
+    <p>
+        The <code>static final ASN1</code> field instance provides a mapping between the
+        Java<a href="#*">*</a> <code>Extension</code> class and its ASN.1 notation. The
+        field is initialized so that it reflects the ASN.1 notation of the class: it is
+        the instance of the <code>ASN1Sequence</code> class that is initialized with instances
+        of the <code>ASN1Oid</code>, <code>ASN1Boolean</code> and <code>ASN1OctetString</code>
+        classes.
+    </p>
+    <p>
+        The <code>Extensions</code> class has a similar field. The field also reflects the
+        ASN.1 notation: it is the instance of the <code>ASN1SequenceOf</code> class and
+        it is initialized by the <code>ASN1</code> field from the <code>Extension</code>
+        class.
+    </p>
+    <p>
+        Figure 3 displays the correspondence between the application object tree and the
+        object tree of ASN.1 custom classes.
+    </p>
+    <p style="text-align: center">
+        <img src="images/example3.gif" alt="Tree" />
+    </p>
+    <p class="special">
+        Figure 3: Java Object and ASN.1 Custom Class Trees
+    </p>
+    <p class="backtotop">
+        <a href="#Top">Back to Top</a>
+    </p>
+    <h1>
+        Appendix: <a id="Appendix" name="Appendix"></a>Usage Examples
+    </h1>
+    <p>
+        This section demonstrates the usage of the ASN.1 framework.
+    </p>
+    <h3>
+        ASN.1 Boolean
+    </h3>
+    <p>
+        An abstract type can be defined as <code>ASN.1 Boolean</code>, for example:
+    </p>
+        <pre>
 MyBooleanType ::= BOOLEAN;
 </pre>
-      </blockquote>
-      <p>
-         Then the following code can be used to decode and encode values of
-         this type:
-      </p>
-      <blockquote>
-<pre>
+    <p>
+        Then the following code can be used to decode and encode values of this type:
+    </p>
+        <pre>
 // represents encoded ASN.1 Boolean type: false value
 byte encoding[] = new byte[] {0x01, 0x01, 0x00};
 
@@ -1191,29 +1028,23 @@
 // an array value equals to {0x01, 0x01, 0xFF}
 byte enc[] = asn1.encode(Boolean.TRUE);
 </pre>
-      </blockquote>
-      <h3>
-         ASN.1 Tagged Types
-      </h3>
-      <p>
-         The following ASN.1 notation can be used to define a tagged type:
-      </p>
-      <blockquote>
-<pre>
+    <h3>
+        ASN.1 Tagged Types
+    </h3>
+    <p>
+        The following ASN.1 notation can be used to define a tagged type:
+    </p>
+        <pre>
 MyTaggedType ::= [APPLICATION 0] EXPLICIT BOOLEAN;
 </pre>
-      </blockquote>
-      <p>
-         By default, a tagged type, <code>MyTaggedType</code>, is mapped to the
-         same Java<a href="#*">*</a> type as a basic type, see ASN.1
-         <code>BOOLEAN</code> above.
-      </p>
-      <p>
-         Then the following code can be used to decode and encode the values of
-         this type:
-      </p>
-      <blockquote>
-<pre>
+    <p>
+        By default, a tagged type, <code>MyTaggedType</code>, is mapped to the same Java<a
+            href="#*">*</a> type as a basic type, see ASN.1 <code>BOOLEAN</code> above.
+    </p>
+    <p>
+        Then the following code can be used to decode and encode the values of this type:
+    </p>
+        <pre>
 // represents encoded explicitly tagged ASN.1 Boolean type: false value
 byte encoding[] = new byte[] {0x60, 0x03, 0x01, 0x01, 0x00};
  
@@ -1232,33 +1063,27 @@
 // an array value equals to {0x60, 0x03,0x01, 0x01, 0xFF}
 byte enc[] = asn1.encode(Boolean.TRUE);
 </pre>
-      </blockquote>
-      <h3>
-         ASN.1 Sequence Type
-      </h3>
-      <p>
-         A constructed ASN.1 type notation can go as follows.
-      </p>
-      <blockquote>
-<pre>
+    <h3>
+        ASN.1 Sequence Type
+    </h3>
+    <p>
+        A constructed ASN.1 type notation can go as follows.
+    </p>
+        <pre>
 MyConstructedType ::= SEQUENCE {
     classVersion INTEGER,
     isExtendable BOOLEAN DEFAULT FALSE
 }
 </pre>
-      </blockquote>
-      <p>
-         By default, a sequence type is mapped to an array of objects. In the
-         example, it is an array of two objects: the first object represents
-         <code>classVersion</code> and the second object represents the
-         <code>isExtendable</code> flag.
-      </p>
-      <p>
-         The following code can be used to decode and encode the values of this
-         type:
-      </p>
-      <blockquote>
-<pre>
+    <p>
+        By default, a sequence type is mapped to an array of objects. In the example, it
+        is an array of two objects: the first object represents <code>classVersion</code>
+        and the second object represents the <code>isExtendable</code> flag.
+    </p>
+    <p>
+        The following code can be used to decode and encode the values of this type:
+    </p>
+        <pre>
 // create an instance custom decoder/encoder
 ASN1Type asn1 =
     new ASN1Sequence(new ASN1Type[] {ASN1Integer.getInstance(),    // classVersion
@@ -1281,14 +1106,12 @@
 // second value (ASN.1 Boolean) is mapped by default to a Boolean object
 Boolean isCritical = (Boolean)value[1]; 
 </pre>
-      </blockquote>
-      <p>
-         When it is necessary to change the default mapping of an array of
-         objects for the ASN.1 <code>Sequence</code> type to a custom Java<a
-         href="#*">*</a> class, two methods are overridden.
-      </p>
-      <blockquote>
-<pre>
+    <p>
+        When it is necessary to change the default mapping of an array of objects for the
+        ASN.1 <code>Sequence</code> type to a custom Java<a href="#*">*</a> class, two methods
+        are overridden.
+    </p>
+        <pre>
 // class for storing MyConstructedType values
 class A {
     int version;
@@ -1343,67 +1166,55 @@
 a2.isExtendable = true;
 byte enc[] = asn1.encode(a);
 </pre>
-      </blockquote>
-      <p class="backtotop">
-         <a href="#Top">Back to Top</a>
-      </p>
-      <h1>
-         <a id="References" name="References"></a>References
-      </h1>
-      <p>
-         [<a id="JAVA_API_SPEC" name="JAVA_API_SPEC"></a>1] Java API
-         Specification, <a href="http://java.sun.com/j2se/1.5.0/docs/api/"
-         target="_blank">http://java.sun.com/j2se/1.5.0/docs/api/</a>
-      </p>
-      <p>
-         [<a id="ASN_SPEC" name="ASN_SPEC"></a>2] Abstract Syntax Notation One
-         (ASN.1) Specification of Basic Notation ITU-T Rec. X.680 (2002) |
-         ISO/IEC 8824-1:2002
-      </p>
-      <p>
-         [<a id="RULES_SPEC" name="RULES_SPEC"></a>3] Specification of Basic
-         Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished
-         Encoding Rules (DER) ITU-T Rec. X.690 (2002) | ISO/IEC 8825-1:2002
-      </p>
-      <p>
-         [<a id="INFO_SITE" name="INFO_SITE"></a>4] ASN.1 Information Site, <a
-         href="http://asn1.elibel.tm.fr/en/standards/index.htm"
-         target="_blank">http://asn1.elibel.tm.fr/en/standards/index.htm</a>
-      </p>
-      <p>
-         [<a id="LAYMAN_GUIDE" name="LAYMAN_GUIDE"></a>5] <em>A Layman's Guide
-         to a Subset of ASN.1, BER, and DER,</em> <a
-         href="http://luca.ntop.org/Teaching/Appunti/asn1.html"
-         target="_blank">http://luca.ntop.org/Teaching/Appunti/asn1.html</a>
-      </p>
-      <p>
-         [<a id="EBOOK1" name="EBOOK1"></a>6] Olivier Dubuisson, translated by
-         Philippe Fouquart, <em>ASN.1 - Communication between heterogeneous
-         systems</em>, <a href="http://www.oss.com/asn1/dubuisson.html"
-         target="_blank">http://www.oss.com/asn1/dubuisson.html</a>
-      </p>
-      <p>
-         [<a id="EBOOK2" name="EBOOK2"></a>7] Professor John Larmouth,
-         <em>ASN.1 Complete</em>, <a
-         href="http://www.oss.com/asn1/larmouth.html"
-         target="_blank">http://www.oss.com/asn1/larmouth.html</a>
-      </p>
-      <p>
-         [<a id="RFC" name="RFC"></a>8] The Internet Engineering Task Force,
-         Requests for Comments, <a href="http://www.ietf.org/"
-         target="_blank">http://www.ietf.org/</a>
-      </p>
-      <p class="backtotop">
-         <a href="#Top">Back to Top</a>
-      </p>
-      
-      <p>
-         <a id="*" name="*">*</a> Other brands and names are the property of
-         their respective owners.
-      </p>
-   </body>
+    <p class="backtotop">
+        <a href="#Top">Back to Top</a>
+    </p>
+    <h1>
+        <a id="References" name="References"></a>References
+    </h1>
+    <p>
+        [<a id="JAVA_API_SPEC" name="JAVA_API_SPEC"></a>1] Java API Specification, <a href="http://java.sun.com/j2se/1.5.0/docs/api/"
+            target="_blank">http://java.sun.com/j2se/1.5.0/docs/api/</a>
+    </p>
+    <p>
+        [<a id="ASN_SPEC" name="ASN_SPEC"></a>2] Abstract Syntax Notation One (ASN.1) Specification
+        of Basic Notation ITU-T Rec. X.680 (2002) | ISO/IEC 8824-1:2002
+    </p>
+    <p>
+        [<a id="RULES_SPEC" name="RULES_SPEC"></a>3] Specification of Basic Encoding Rules
+        (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER) ITU-T
+        Rec. X.690 (2002) | ISO/IEC 8825-1:2002
+    </p>
+    <p>
+        [<a id="INFO_SITE" name="INFO_SITE"></a>4] ASN.1 Information Site, <a href="http://asn1.elibel.tm.fr/en/standards/index.htm"
+            target="_blank">http://asn1.elibel.tm.fr/en/standards/index.htm</a>
+    </p>
+    <p>
+        [<a id="LAYMAN_GUIDE" name="LAYMAN_GUIDE"></a>5] <em>A Layman's Guide to a Subset of
+            ASN.1, BER, and DER,</em> <a href="http://luca.ntop.org/Teaching/Appunti/asn1.html"
+                target="_blank">http://luca.ntop.org/Teaching/Appunti/asn1.html</a>
+    </p>
+    <p>
+        [<a id="EBOOK1" name="EBOOK1"></a>6] Olivier Dubuisson, translated by Philippe Fouquart,
+        <em>ASN.1 - Communication between heterogeneous systems</em>, <a href="http://www.oss.com/asn1/dubuisson.html"
+            target="_blank">http://www.oss.com/asn1/dubuisson.html</a>
+    </p>
+    <p>
+        [<a id="EBOOK2" name="EBOOK2"></a>7] Professor John Larmouth, <em>ASN.1 Complete</em>,
+        <a href="http://www.oss.com/asn1/larmouth.html" target="_blank">http://www.oss.com/asn1/larmouth.html</a>
+    </p>
+    <p>
+        [<a id="RFC" name="RFC"></a>8] The Internet Engineering Task Force, Requests for
+        Comments, <a href="http://www.ietf.org/" target="_blank">http://www.ietf.org/</a>
+    </p>
+    <p class="backtotop">
+        <a href="#Top">Back to Top</a>
+    </p>
+    <p>
+        <a id="*" name="*">*</a> Other brands and names are the property of their respective
+        owners.
+    </p>
+</body>
 </html>
-
-