To order this title, and for more information, click here
By John Larmouth
Description
ASN.1 Complete teaches you everything you need to know about ASN.1-whether you're specifying a new protocol or implementing
an existing one in a software or hardware development project. Inside, the author begins with an overview of ASN.1's most commonly encountered
features, detailing and illustrating standard techniques for using them. He then goes on to apply the same practice-oriented approach
to all of the notation's other features, providing you with an easy-to-navigate, truly comprehensive tutorial.
The book also includes
thorough documentation of both the Basic and the Packed Encoding Rules-indispensable coverage for anyone doing hand-encoding, and a valuable
resource for anyone wanting a deeper understanding of how ASN.1 and ASN.1 tools work. The concluding section takes up the history of
ASN.1, in terms of both the evolution of the notation itself and the role it has played in hundreds of protocols and thousands of applications
developed since its inception.
Features
* Covers all the features-common and not so common-available to you when writing a
protocol specification using ASN.1.* Teaches you to read, understand, and implement a specification written using ASN.1.* Explains how
ASN.1 tools work and how to use them.* Contains hundreds of detailed examples, all verified using OSS's ASN.1 Tools package.* Considers
ASN.1 in relation to other protocol specification standards.
Contents Contents
Foreword
Introduction
1. The global communications infrastructure
2. What exactly is ASN.1?
3. The development process
with ASN.1
4. Structure of the text.
SECTION I - ASN.1 OVERVIEW
Chapter 1 - Specification of protocols
1. What is a protocol?
2. Protocol specification - some basic concepts
2.1 Layering and protocol "holes"
2.2 Early developments of layering
2.3 The disadvantages
of layering - keep it simple!
2.4 Extensibility
2.5 Abstract and transfer syntax
2.6 Command line or statement-based approaches
2.7 Use of an Interface Definition Language
3. More on abstract and transfer syntaxes
3.1 Abstract values and types
3.2 Encoding
abstract values
4. Evaluative discussion
4.1 There are many ways of skinning a cat - does it matter?
4.2 Early work with multiple
transfer syntaxes
4.3 Benefits
5. Protocol specification and implementation - a series of case studies
5.1 Octet sequences and
fields within octets
5.2 The TLV approach
5.3 The EDIFACT graphical syntax
5.4 Use of BNF to specify a character-based syntax
5.5
Specification and implementation using ASN.1 - early 1980s
5.6 Specification and implementation using ASN.1 - 1990's
Chapter
2 - Introduction to ASN.1
1. Introduction
2. The example
2.1 The top-level type
2.2 Bold is what matters!
2.3 Names in italics
are used to tie things together
2.4 Names in normal font are the names of fields/elements/items
2.5 Back to the example!
2.6 The
BranchIdentification type
2.7 Those tags
3. Getting rid of the different fonts
4. Tying up some lose ends
4.1 Summary of type
and value assignments
4.2 The form of names
4.3 Layout and comment
5. So what else do you need to know?
Chapter 3 - Structuring
an ASN.1 specification
1. An example
2. Publication style for ASN.1 specifications
2.1 Use of line-numbers.
2.2 Duplicating the
ASN.1 text
2.3 Providing machine-readable copy
3. Returning to the module header!
3.1 Syntactic discussion
3.2 The tagging
environment
3.2.1 An environment of explicit tagging
3.2.2 An environment of implicit tagging
3.2.3 An environment of automatic
tagging
3.3 The extensibility environment
4. Exports/imports statements
5. Refining our structure
6. Complete specifications
7. Conclusion
Chapter 4 - The basic data types and construction mechanisms - closure
1. Illustration by example
2. Discussion
of the built-in types
2.1 The BOOLEAN type
2.2 The INTEGER type
2.3 The ENUMERATED type
2.4 The REAL type
2.5 The BIT STRING type
2.6 The OCTET STRING type
2.7 The NULL type
2.8 Some character string types
2.9 The OBJECT IDENTIFIER type
2.10 The ObjectDescriptor
type
2.11 The two ASN.1 date/time types
3. Additional notational constructs
3.1 The selection-type notation
3.2 The COMPONENTS
OF notation
3.3 SEQUENCE or SET?
3.4 SEQUENCE, SET, and CHOICE (etc) value-notation
4. What else is in X.680/ISO 8824-1?
Chapter 5 - Reference to more complex areas
1. Object identifiers
2. Character string types
3. Subtyping
4. Tagging
5. Extensibility,
exceptions and version brackets
6. Hole types
7. Macros
8. Information object classes and objects and object sets
9. Other types
of constraints
10. Parameterization
12. The ASN.1 semantic model
13. Conclusion
Chapter 6 - Using an ASN.1 compiler
1. The
route to an implementation
2. What is an ASN.1 compiler?
3. The overall features of an ASN.1-compiler-tool
4. Use of a simple library
of encode/decode routines
4.1 Encoding
4.2 Decoding
5. Using an ASN.1-compiler-tool
5.1 Basic considerations
5.2 What do
tool designers have to decide?
5.3 The mapping to a programming-language data structure
5.4 Memory and CPU trade-offs at run-time
5.5 Control of a tool
6. Use of the "OSS ASN.1 Tools" product
7. What makes one ASN.1-comiler-tool better than another?
8. Conclusion
Chapter 7 - Management and design issues for ASN.1 specification and implementation
1. Global issues for management decisions
1.1 Specification
1.1.1 To use ASN.1 or not!
1.1.2 To copy or not?
1.2 Implementation - setting the budget
1.2.1 Getting
the specs
1.2.2 Training courses, tutorials, and consultants
1.3 Implementation platform and tools
2. Issues for specifiers
2.1 Guiding principles
2.2 Decisions on style
2.3 Your top-level type
2.4 Integer sizes and bounds
2.5 Extensibility issues
2.6 Exception handling
2.6.1 The requirement
2.6.2 Common forms of exception handling
2.6.2.1 SEQUENCE and SET
2.6.2.2 CHOICE
2.6.2.3 INTEGER and ENUMERATED
2.6.2.4 Extensible strings
2.6.2.5 Extensible bounds on SET OF and SEQUENCE OF
2.6.2.6 Use of
extensible object sets in constraints
2.6.2.7 Summary
2.6.3 ASN.1-specified default exception handling
2.6.4 Use of the formal
exception specification notation
2.7 Parameterization issues
2.8 Unconstrained open types
2.9 Tagging issues
2.10 Keeping it
simple
3. Issues for implementors
3.1 Guiding principles
3.2 Know your tool
3.3 Sizes of integers
3.4 Ambiguities and implementation-dependencies
in specifications
3.5 Corrigenda
3.6 Extensibility and exception handling
3.7 Care with hand encodings
3.8 Mailing lists
3.9
Good engineering - version 2
will
come!
4. Conclusion
SECTION II - FURTHER DETAILS
Chapter 1 - The object identifier type
1. Introduction
2. The object identifier tree
3. Information objects
4. Value notation
5. Uses of the object identifier type
Chapter 2 - The character string types
1. Introduction
2. NumericString
3. PrintableString
4. VisibleString (ISO646String)
5. IA5String
6. TeletexString (T61String)
7. VideotexString
8. GraphicString
9. GeneralString
10. UniversalString
11. BMPString
12. UTF8String
13. Recommended character string types
14. Value notation for character string types
15. The ASN.1-CHARACTER-MODULE
16. Conclusion
Chapter 3 - Subtyping
1. Introduction
2. Basic concepts and set arithmetic
3. Single value subtyping
4.
Value range subtyping
5. Permitted alphabet constraints
6. Size constraints
7. Contained sub-type constraints
8. Inner Subtyping
8.1 Introduction
8.2 Subsetting Wineco-Protocol
8.3 Inner subtyping of an array
9 Conclusion
Chapter 4 - Tagging
1. Review
of earlier discussions
2. The tag name-space
3. An abstract model of tagging
4. The rules for when tags are required to be distinct
5. Automatic tagging
6. Conclusion
Chapter 5 - Extensibility, Exceptions, and Version Brackets
1. The extensibility concept
2. The extension marker
3. The exception specification
4. Where can the ellipsis be placed?
5. Version brackets
6. The {...}
notation
7. Interaction between extensibility and tagging
8. Concluding remarks
Chapter 6 - Information Object Classes, Constraints,
and Parameterization
1. The need for "holes" and notational support for them
1.1 OSI Layering
1.2 Hole support in ASN.1
2. The ROSE invocation model
2.1 Introduction
2.2 Responding to the INVOKE message
3. The use of tables to complete the user
specification
3.1 From specific to general
4. From tables to Information Object Classes
5. The ROSE OPERATION and ERROR Object
Class definitions
6. Defining the Information Objects
7. Defining an Information Object Set
8. Using the information to complete
the ROSE protocol
9. The need for parameterization
10. What has not been said yet?
Chapter 7 - More on classes, constraints,
and parameterization
1. Information Object Class Fields
1.1 Type fields
1.2 Fixed type value fields
1.3 Variable type value
fields
1.4 Fixed type value set fields
1.5 Variable type value set fields
1.6 Object fields
1.7 Object set fields
1.8 Extended
field names
2. Variable syntax for Information Object definition
3. Constraints re-visited - the user-defined constraint
4.
The full story on parameterization
4.1 What can be parameterized and be a parameter?
4.2 Parameters of the abstract syntax
4.3
Making your requirements explicit
4.3.1 The TYPE-IDENTIFIER class
4.3.2 An example - X.400 headers
4.3.3 Use of a simple SEQUENCE
4.3.4 Use of an extensible SEQUENCE
4.3.5 Moving to an information object set definition
4.3.6 The object set "Headers"
4.4
The (empty) extensible information object set
5. Other provision for "holes"
5.1 ANY
5.2 ANY DEFINED BY
5.3 EXTERNAL
5.4
EMBEDDED PDV
5.5 CHARACTER STRING
5.6 OCTET STRING and BIT STRING
6. Remarks to conclude Section II
SECTION III - ENCODINGS
Chapter 1 - Introduction to encoding rules
1. What are encoding rules, and why the chapter sub-title?
2. What are the advantages
of the encoding rules approach?
3. Defining encodings - the TLV approach
4. Extensibility or "future proofing"
5. First attempts
at PER - start with BER and remove redundant octets
6. Some of the principles of PER
6.1 Breaking out of the BER straight-jacket
6.2 How to cope with other problems that a "T" solves?
6.3 Do we still need T and L for SEQUENCE and SET headers?
6.4 Aligned and
Unaligned PER
7. Extensibility - you have to have it!
8. What more do you need to know about PER?
9. Experience with PER
10.
Distinguished and Canonical Encoding Rules
11. Conclusion
Chapter 2 - The Basic Encoding Rules
1. Introduction
2. General
issues
2.1 Notation for bit numbers and diagrams
2.2 The identifier octets
2.3 The length octets
2.3.1 The short form
2.3.2
The long form
2.3.3 The indefinite form
2.3.4 Discussion of length variants
3. Encodings of the V part of the main types
3.1 Encoding a NULL value
3.2 Encoding a BOOLEAN value
3.3 Encoding an INTEGER value
3.4 Encoding an ENUMERATED value
3.5
Encoding a REAL value
3.5.1 Encoding base 10 values
3.5.2 Encoding base 2 values
3.5.3 Encoding the special real values
3.6
Encoding an OCTET STRING value
3.7 Encoding a BIT STRING value
3.8 Encoding values of tagged types
3.9 Encoding values of CHOICE
types
3.10 Encoding SEQUENCE OF values
3.11 Encoding SET OF values
3.12 Encoding SEQUENCE and SET values
3.13 Handling of OPTIONAL
and DEFAULT elements in sequence and set
3.14 Encoding OBJECT IDENTIFIER values
3.15 Encoding character string values
3.16 Encoding
values of the time types
4. Encodings for more complex constructions
4.1 Open types
4.2 The embedded pdv type and the external
type
4.3 The INSTANCE OF type
4.4 The CHARACTER STRING type
5. Conclusion 286
Chapter 3 - The Packed Encoding Rules
1.
Introduction
2. Structure of a PER encoding
2.1 General form
2.2 Partial octet alignment and PER variants
2.3 Canonical encodings
2.4 The outer level complete encoding
3. Encoding values of extensible types
4. PER-visible constraints
4.1 The concept
4.2
The effect of variable parameters
4.3 Character strings with variable length encodings
4.4 Now let's get complicated!
5. Encoding
INTEGERs - preparatory discussion
6. Effective size and alphabet constraints.
6.1 Statement of the problem
6.2 Effective size
constraint
6.3 Effective alphabet constraint
7. Canonical order of tags
8. Encoding an unbounded count
8.1 The three forms
of length encoding
8.2 Encoding "normally small" values
8.3 Comments on encodings of unbounded counts
9. Encoding the OPTIONAL
bit-map and the CHOICE index.
9.1 The OPTIONAL bit-map
9.2 The CHOICE index
10. Encoding NULL and BOOLEAN values.
11. Encoding
INTEGER values.
11.1 Unconstrained integer types
11.2 Semi-constrained integer types
11.3 Constrained integer types
11.4 And if
the constraint on the integer is extensible?
12. Encoding ENUMERATED values.
13. Encoding length determinants of strings etc
14. Encoding character string values.
14.1 Bits per character
14.2 Padding bits
14.3 Extensible character string types
15. Encoding SEQUENCE and SET values.
15.1 Encoding DEFAULT values
15.2 Encoding extension additions
16. Encoding CHOICE values.
17. Encoding SEQUENCE OF and SET OF values.
18. Encoding REAL and OBJECT IDENTIFIER values.
19. Encoding an Open Type
20. Encoding
of the remaining types
21. Conclusion
Chapter 4 - Other ASN.1-related encoding rules
1. Why do people suggest new encoding rules?
2. LWER - Light-Weight Encoding Rules
2.1 The LWER approach
2.2 The way to proceed was agreed
2.3 Problems, problems, problems
2.4 The demise of LWER
3. MBER - Minimum Bit Encoding Rules
4. OER - Octet Encoding Rules
5. XER - XML (Extended Mark-up Language)
Encoding Rules
6. BACnetER - BAC (Building Automation Committee) net Encoding Rules
7. Encoding Control Specifications
SECTION
IV - HISTORY AND APPLICATIONS
Chapter 1 - The development of ASN.1
1. People
2. Going round in circles?
3. Who produces Standards?
4. The numbers game
5. The early years - X.409 and all that
5.1 Drafts are exchanged and the name ASN.1 is assigned
5.2 Splitting
BER from the notation
5.3 When are changes technical changes?
5.4 The near-demise of ASN.1 - OPERATION and ERROR
6. Organization
and re-organization!
7. The tool vendors
8. Object identifiers
8.1 Long or short, human or computer friendly, that is the question
8.2 Where should the object identifier tree be defined?
8.3 The battle for top-level arcs and the introduction of RELATIVE OIDs
9. The REAL type
10. Character string types - let's try to keep it short!
10.1 From the beginning to ASCII
10.2 The emergence
of the international register of character sets
10.3 The development if ISO 8859
10.4 The emergence of ISO 10646 and Unicode
10.4.1 The four-dimensional architecture
10.4.2 Enter Unicode
10.4.3 The final compromise
10.5 And the impact of all this on
ASN.1?
11. ANY, macros, and Information Objects - hard to keep that short (even the heading has gone to two lines)!
12. The ASN.1(1990)
controversy
13. The emergence of PER
13.1 The first attempt - PER-2
13.2 The second attempt - PER-1
14. DER and CER
15.
Semantic models and all that - ASN.1 in the late 1990s
16. What got away?
Chapter 2 - Applications of ASN.1
1. Introduction
2. The origins in X.400
3. The move into Open Systems Interconnection (OSI) and ISO
4. Use within the protocol testing community
5. Use within the Integrated Services Digital Network (ISDN)
6. Use in ITU-T and multimedia standards
7. Use in European and American
standardization groups
8. Use for managing computer-controlled systems
9. Use in PKCS and PKIX and SET and other security-related
protocols
10. Use in other Internet specifications
11. Use in major corporate enterprises and agencies
12. Conclusion
APPENDICES
1. The Wineco protocol scenario
2. The full protocol for Wineco
3. Compiler output for C support for the Wineco protocol
4. Compiler
output for Java support for the Wineco protocol
5. ASN.1 resources via the Web
INDEX
Contents
Foreword
Introduction
1 The global communications infrastructure
2 What exactly is ASN.1?
3 The development process with ASN.1
4 Structure of the
text.
SECTION I - ASN.1 OVERVIEW
Chapter 1 - Specification of protocols
1 What is a protocol?
2 Protocol specification
- some basic concepts
2.1 Layering and protocol "holes"
2.2 Early developments of layering
2.3 The disadvantages of layering - keep
it simple!
2.4 Extensibility
2.5 Abstract and transfer syntax
2.6 Command line or statement-based approaches
2.7 Use of an Interface
Definition Language
3 More on abstract and transfer syntaxes
3.1 Abstract values and types
3.2 Encoding abstract values
4 Evaluative discussion
4.1 There are many ways of skinning a cat - does it matter?
4.2 Early work with multiple transfer syntaxes
4.3 Benefits
5 Protocol specification and implementation - a series of case studies
5.1 Octet sequences and fields within
octets
5.2 The TLV approach
5.3 The EDIFACT graphical syntax
5.4 Use of BNF to specify a character-based syntax
5.5 Specification
and implementation using ASN.1 - early 1980s
5.6 Specification and implementation using ASN.1 - 1990's
Chapter 2 - Introduction
to ASN.1
1 Introduction
2 The example
2.1 The top-level type
2.2 Bold is what matters!
2.3 Names in italics are used to tie
things together
2.4 Names in normal font are the names of fields/elements/items
2.5 Back to the example!
2.6 The BranchIdentification
type
2.7 Those tags
3 Getting rid of the different fonts
4 Tying up some lose ends
4.1 Summary of type and value assignments
4.2 The form of names
4.3 Layout and comment
5 So what else do you need to know?
Chapter 3 - Structuring an ASN.1 specification
1 An example
2 Publication style for ASN.1 specifications
2.1 Use of line-numbers.
2.2 Duplicating the ASN.1 text
2.3 Providing
machine-readable copy
3 Returning to the module header!
3.1 Syntactic discussion
3.2 The tagging environment
3.2.1 An environment
of explicit tagging
3.2.2 An environment of implicit tagging
3.2.3 An environment of automatic tagging
3.3 The extensibility environment
4 Exports/imports statements
5 Refining our structure
6 Complete specifications
7 Conclusion
Chapter 4 - The basic data
types and construction mechanisms - closure
1 Illustration by example
2 Discussion of the built-in types
2.1 The BOOLEAN type
2.2 The INTEGER type
2.3 The ENUMERATED type
2.4 The REAL type
2.5 The BIT STRING type
2.6 The OCTET STRING type
2.7 The NULL
type
2.8 Some character string types
2.9 The OBJECT IDENTIFIER type
2.10 The ObjectDescriptor type
2.11 The two ASN.1 date/time
types
3 Additional notational constructs
3.1 The selection-type notation
3.2 The COMPONENTS OF notation
3.3 SEQUENCE or SET?
3.4 SEQUENCE, SET, and CHOICE (etc) value-notation
4 What else is in X.680/ISO 8824-1?
Chapter 5 - Reference to more complex
areas
1 Object identifiers
2 Character string types
3 Subtyping
4 Tagging
5 Extensibility, exceptions and version brackets
6 Hole types
7 Macros
8 Information object classes and objects and object sets
9 Other types of constraints
10 Parameterization
12 The ASN.1 semantic model
13 Conclusion
Chapter 6 - Using an ASN.1 compiler
1 The route to an implementation
2 What
is an ASN.1 compiler?
3 The overall features of an ASN.1-compiler-tool
4 Use of a simple library of encode/decode routines
4.1
Encoding
4.2 Decoding
5 Using an ASN.1-compiler-tool
5.1 Basic considerations
5.2 What do tool designers have to decide?
5.3 The mapping to a programming-language data structure
5.4 Memory and CPU trade-offs at run-time
5.5 Control of a tool
6
Use of the "OSS ASN.1 Tools" product
7 What makes one ASN.1-comiler-tool better than another?
8 Conclusion
Chapter 7 - Management
and design issues for ASN.1 specification and implementation
1 Global issues for management decisions
1.1 Specification
1.1.1
To use ASN.1 or not!
1.1.2 To copy or not?
1.2 Implementation - setting the budget
1.2.1 Getting the specs
1.2.2 Training
courses, tutorials, and consultants
1.3 Implementation platform and tools
2 Issues for specifiers
2.1 Guiding principles
2.2 Decisions on style
2.3 Your top-level type
2.4 Integer sizes and bounds
2.5 Extensibility issues
2.6 Exception handling
2.6.1 The requirement
2.6.2 Common forms of exception handling
2.6.2.1 SEQUENCE and SET
2.6.2.2 CHOICE
2.6.2.3 INTEGER and
ENUMERATED
2.6.2.4 Extensible strings
2.6.2.5 Extensible bounds on SET OF and SEQUENCE OF
2.6.2.6 Use of extensible object sets
in constraints
2.6.2.7 Summary
2.6.3 ASN.1-specified default exception handling
2.6.4 Use of the formal exception specification
notation
2.7 Parameterization issues
2.8 Unconstrained open types
2.9 Tagging issues
2.10 Keeping it simple
3 Issues
for implementors
3.1 Guiding principles
3.2 Know your tool
3.3 Sizes of integers
3.4 Ambiguities and implementation-dependencies
in specifications
3.5 Corrigenda
3.6 Extensibility and exception handling
3.7 Care with hand encodings
3.8 Mailing lists
3.9
Good engineering - version 2
will
come!
4 Conclusion
SECTION II - FURTHER DETAILS
Chapter 1 - The object identifier type
1 Introduction
2 The object identifier tree
3 Information objects
4 Value notation
5 Uses of the object identifier
type
Chapter 2 - The character string types
1 Introduction
2 NumericString
3 PrintableString
4 VisibleString (ISO646String)
5 IA5String
6 TeletexString (T61String)
7 VideotexString
8 GraphicString
9 GeneralString
10 UniversalString
11 BMPString
12 UTF8String
13 Recommended character string types
14 Value notation for character string types
15 The
ASN.1-CHARACTER-MODULE
16 Conclusion
Chapter 3 - Subtyping
1 Introduction
2 Basic concepts and set arithmetic
3 Single
value subtyping
4 Value range subtyping
5 Permitted alphabet constraints
6 Size constraints
7 Contained sub-type constraints
8 Inner Subtyping
8.1 Introduction
8.2 Subsetting Wineco-Protocol
8.3 Inner subtyping of an array
9 Conclusion
Chapter
4 - Tagging
1 Review of earlier discussions
2 The tag name-space
3 An abstract model of tagging
4 The rules for when tags
are required to be distinct
5 Automatic tagging
6 Conclusion
Chapter 5 - Extensibility, Exceptions, and Version Brackets
1 The extensibility concept
2 The extension marker
3 The exception specification
4 Where can the ellipsis be placed?
5 Version brackets
6 The {...} notation
7 Interaction between extensibility and tagging
8 Concluding remarks
Chapter
6 - Information Object Classes, Constraints, and Parameterization
1 The need for "holes" and notational support for them
1.1 OSI
Layering
1.2 Hole support in ASN.1
2 The ROSE invocation model
2.1 Introduction
2.2 Responding to the INVOKE message
3 The use of tables to complete the user specification
3.1 From specific to general
4 From tables to Information Object Classes
5 The ROSE OPERATION and ERROR Object Class definitions
6 Defining the Information Objects
7 Defining an Information Object
Set
8 Using the information to complete the ROSE protocol
9 The need for parameterization
10 What has not been said yet?
Chapter 7 - More on classes, constraints, and parameterization
1 Information Object Class Fields
1.1 Type fields
1.2 Fixed
type value fields
1.3 Variable type value fields
1.4 Fixed type value set fields
1.5 Variable type value set fields
1.6 Object
fields
1.7 Object set fields
1.8 Extended field names
2 Variable syntax for Information Object definition
3 Constraints
re-visited - the user-defined constraint
4 The full story on parameterization
4.1 What can be parameterized and be a parameter?
4.2 Parameters of the abstract syntax
4.3 Making your requirements explicit
4.3.1 The TYPE-IDENTIFIER class
4.3.2 An example
- X.400 headers
4.3.3 Use of a simple SEQUENCE
4.3.4 Use of an extensible SEQUENCE
4.3.5 Moving to an information object set definition
4.3.6 The object set "Headers"
4.4 The (empty) extensible information object set
5 Other provision for "holes"
5.1 ANY
5.2 ANY DEFINED BY
5.3 EXTERNAL
5.4 EMBEDDED PDV
5.5 CHARACTER STRING
5.6 OCTET STRING and BIT STRING
6 Remarks to conclude
Section II
SECTION III - ENCODINGS
Chapter 1 - Introduction to encoding rules
1 What are encoding rules, and why the chapter
sub-title?
2 What are the advantages of the encoding rules approach?
3 Defining encodings - the TLV approach
4 Extensibility
or "future proofing"
5 First attempts at PER - start with BER and remove redundant octets
6 Some of the principles of PER
6.1 Breaking out of the BER straight-jacket
6.2 How to cope with other problems that a "T" solves?
6.3 Do we still need T and L
for SEQUENCE and SET headers?
6.4 Aligned and Unaligned PER
7 Extensibility - you have to have it!
8 What more do you need
to know about PER?
9 Experience with PER
10 Distinguished and Canonical Encoding Rules
11 Conclusion
Chapter 2 - The
Basic Encoding Rules
1 Introduction
2 General issues
2.1 Notation for bit numbers and diagrams
2.2 The identifier octets
2.3 The length octets
2.3.1 The short form
2.3.2 The long form
2.3.3 The indefinite form
2.3.4 Discussion of length variants
3 Encodings of the V part of the main types
3.1 Encoding a NULL value
3.2 Encoding a BOOLEAN value
3.3 Encoding an INTEGER
value
3.4 Encoding an ENUMERATED value
3.5 Encoding a REAL value
3.5.1 Encoding base 10 values
3.5.2 Encoding base 2 values
3.5.3 Encoding the special real values
3.6 Encoding an OCTET STRING value
3.7 Encoding a BIT STRING value
3.8 Encoding values
of tagged types
3.9 Encoding values of CHOICE types
3.10 Encoding SEQUENCE OF values
3.11 Encoding SET OF values
3.12 Encoding
SEQUENCE and SET values
3.13 Handling of OPTIONAL and DEFAULT elements in sequence and set
3.14 Encoding OBJECT IDENTIFIER values
3.15 Encoding character string values
3.16 Encoding values of the time types
4 Encodings for more complex constructions
4.1 Open types
4.2 The embedded pdv type and the external type
4.3 The INSTANCE OF type
4.4 The CHARACTER STRING type
5 Conclusion
286
Chapter 3 - The Packed Encoding Rules
1 Introduction
2 Structure of a PER encoding
2.1 General form
2.2 Partial octet
alignment and PER variants
2.3 Canonical encodings
2.4 The outer level complete encoding
3 Encoding values of extensible types
4 PER-visible constraints
4.1 The concept
4.2 The effect of variable parameters
4.3 Character strings with variable length
encodings
4.4 Now let's get complicated!
5 Encoding INTEGERs - preparatory discussion
6 Effective size and alphabet constraints.
6.1 Statement of the problem
6.2 Effective size constraint
6.3 Effective alphabet constraint
7 Canonical order of tags
8 Encoding an unbounded count
8.1 The three forms of length encoding
8.2 Encoding "normally small" values
8.3 Comments on encodings
of unbounded counts
9 Encoding the OPTIONAL bit-map and the CHOICE index.
9.1 The OPTIONAL bit-map
9.2 The CHOICE index
10 Encoding NULL and BOOLEAN values.
11 Encoding INTEGER values.
11.1 Unconstrained integer types
11.2 Semi-constrained integer
types
11.3 Constrained integer types
11.4 And if the constraint on the integer is extensible?
12 Encoding ENUMERATED values.
13 Encoding length determinants of strings etc
14 Encoding character string values.
14.1 Bits per character
14.2 Padding
bits
14.3 Extensible character string types
15 Encoding SEQUENCE and SET values.
15.1 Encoding DEFAULT values
15.2 Encoding
extension additions
16 Encoding CHOICE values.
17 Encoding SEQUENCE OF and SET OF values.
18 Encoding REAL and OBJECT IDENTIFIER
values.
19 Encoding an Open Type
20 Encoding of the remaining types
21 Conclusion
Chapter 4 - Other ASN.1-related encoding
rules
1 Why do people suggest new encoding rules?
2 LWER - Light-Weight Encoding Rules
2.1 The LWER approach
2.2 The way
to proceed was agreed
2.3 Problems, problems, problems
2.4 The demise of LWER
3 MBER - Minimum Bit Encoding Rules
4 OER
- Octet Encoding Rules
5 XER - XML (Extended Mark-up Language) Encoding Rules
6 BACnetER - BAC (Building Automation Committee)
net Encoding Rules
7 Encoding Control Specifications
SECTION IV - HISTORY AND APPLICATIONS
Chapter 1 - The development of
ASN.1
1 People
2 Going round in circles?
3 Who produces Standards?
4 The numbers game
5 The early years - X.409
and all that
5.1 Drafts are exchanged and the name ASN.1 is assigned
5.2 Splitting BER from the notation
5.3 When are changes technical
changes?
5.4 The near-demise of ASN.1 - OPERATION and ERROR
6 Organization and re-organization!
7 The tool vendors
8
Object identifiers
8.1 Long or short, human or computer friendly, that is the question
8.2 Where should the object identifier tree
be defined?
8.3 The battle for top-level arcs and the introduction of RELATIVE OIDs
9 The REAL type
10 Character string types
- let's try to keep it short!
10.1 From the beginning to ASCII
10.2 The emergence of the international register of character sets
10.3 The development if ISO 8859
10.4 The emergence of ISO 10646 and Unicode
10.4.1 The four-dimensional architecture
10.4.2
Enter Unicode
10.4.3 The final compromise
10.5 And the impact of all this on ASN.1?
11 ANY, macros, and Information Objects
- hard to keep that short (even the heading has gone to two lines)!
12 The ASN.1(1990) controversy
13 The emergence of PER
13.1 The first attempt - PER-2
13.2 The second attempt - PER-1
14 DER and CER
15 Semantic models and all that - ASN.1 in
the late 1990s
16 What got away?
Chapter 2 - Applications of ASN.1
1 Introduction
2 The origins in X.400
3 The move
into Open Systems Interconnection (OSI) and ISO
4 Use within the protocol testing community
5 Use within the Integrated Services
Digital Network (ISDN)
6 Use in ITU-T and multimedia standards
7 Use in European and American standardization groups
8 Use
for managing computer-controlled systems
9 Use in PKCS and PKIX and SET and other security-related protocols
10 Use in other
Internet specifications
11 Use in major corporate enterprises and agencies
12 Conclusion
APPENDICES
1 The Wineco protocol
scenario
2 The full protocol for Wineco
3 Compiler output for C support for the Wineco protocol
4 Compiler output for Java support
for the Wineco protocol
5 ASN.1 resources via the Web
INDEX
Bibliographic & ordering Information Paperback, 472 pages, publication date: OCT-1999
ISBN-13: 978-0-12-233435-1
ISBN-10: 0-12-233435-3
Imprint: MORGAN KAUFFMAN Price:Order form EUR 64.95 GBP 42.99 USD 74.95
Books and book related electronic products are priced in US dollars (USD), euro (EUR), and Great Britain Pounds (GBP). USD prices apply to the Americas and Asia Pacific. EUR prices apply in Europe and the Middle East. GBP prices apply to the UK and all other countries.