Home | Site map | Elsevier websites | Alerts
Elsevier
Product information search
Search all Elsevier sites
Search
Advanced Product Search
Go to Elsevier home page
SiteStat.jsp
ASN.1 COMPLETE
ASN.1 CompleteTo 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.

See also information about conditions of sale & ordering procedures, and links to our regional sales offices.

077/743
Last update: 25 Aug 2008
Book contents
Table of contents
Reviews
Submit your review
Bookmark this page
Recommend this publication
Overview of all books
Printer-friendly version   Printer-friendly version
 Home | Site map | Privacy policy | Terms and Conditions | Feedback | A Reed Elsevier company
 Copyright © 2008 Elsevier B.V. All rights reserved.