Browse Prior Art Database

Extensible, Language Independent Method of Specification for Aribtrary ASN.1 Values

IP.com Disclosure Number: IPCOM000112217D
Original Publication Date: 1994-Apr-01
Included in the Prior Art Database: 2005-Mar-27
Document File: 4 page(s) / 139K

Publishing Venue

IBM

Related People

Allen, WC: AUTHOR [+4]

Abstract

A method is disclosed for the representation of extensible information in a language-independent method capable of being transmitted between processes on the same or different systems.

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 34% of the total text.

Extensible, Language Independent Method of Specification for Aribtrary
ASN.1 Values

      A method is disclosed for the representation of extensible
information in a language-independent method capable of being
transmitted between processes on the same or different systems.

      Abstract Syntax Notation 1 (ISO/IEC 8824) allows the definition
of system independent data types of arbitrary complexity.  Values of
these data types must be defined, transmitted between processes and
analyzed by the processes.  There are several methods used to
represent and transmit the values of ASN.1 types in current
implementations.  These include:

1.  Basic Encoding Rules (BER) --  a self-delimiting binary
    representation for data that is explicitly designed to be machine
    independent.  Parsing it can be extremely difficult.  For
    example, there are three methods of encoding the lengths of
    elements, 7-bit numeric representations within OBJECT IDENTIFIERs
    (the high order bit is used as a communication bit), and several
    different methods for encoding real numbers.

2.  A large number of separate data structures, one for each element
    of the ASN.1.  These structures are defined in a specific
    programming language, and they must be processed one element at a
    time.

3.  A large buffer containing a variable number of concatenated data
    structures, each of which contains pointers to other structures
    within the buffers (represented as offsets from the start of the
    buffer).  This is also programming language dependent.  It
    requires many fewer interactions than the previous method but it
    is (at best) not very intuitive.

      It would better if these values could be defined in such a way
that they could be defined in such a way that they could be processed
by applications written in any language, easily parsed with basic
utilities and easily understood by the programmers that will need to
write applications.

      This method is embodied by an API that represents these values
in a human readable format that can be understood by any programming
language.  A value is formatted into a character string following a
few simple rules.  Translating the value into a character string
eliminates the need for pointers, data structures, specific
programming languages and even concerns for byte order of integers
and word sizes.

      The basic rules for construction of values are very simple.
Some special syntaxes have been defined for common data types.  In
all cases in which a special format is supported, the normal rules
may also be followed.

Rules for building values:

1.  Each value passed to the API must include three basic pieces of
    information.

    a.  Module name

    b.  Type name

    c.  A string containing the value

2.  Within the value string, each primitive element of the ASN.1 data
    structure is input as a <label> <va...