Dieses Buch soll den Einstieg und die Grundlage für all diejenigen ASN.1-Benutzer bilden, die im Rahmen der anwendungsorientierten Kommunikation tätig und in irgendeiner Position mit internationalen Normen konfrontiert sind. Neben diesem Zielbereich bietet sich ASN.1 auch für Unternehmen und Forschungsinstitute an, die für Spezialbereiche eigene Anwendungsprotokolle definieren wollen oder müssen, da viele Bereiche von den Normungsaktivitäten noch nicht abgedeckt sind.
Letztlich ist es kein einfaches Vorhaben, einerseits den Anfänger in die "Geheimnisse" von ASN.1 einzuführen, sowie andererseits auch dem erfahrenen ASN.1-Benutzer ein Nachschlagewerk an die Hand zu geben. Um diesen Konflikt zu lösen, wird zunächst einleitend erläutert, wofür ASN.1 konzipiert wurde und wofür nicht. Außerdem wird anhand eines einfachen Protokollbeispiels die Verwendung von ASN.1 sukzessive eingeführt, so daß die wichtigsten Begriffe für den Anfänger klar werden sollten.
Inhalt:
1 Einführung und Abgrenzung 15
1.1 Was ist ASN.1 ? 15
1.2 Abstrakte Syntaxnotation 17
1.3 Einige Begriffe 20
1.4 Abgrenzung 23
1.4.1 Spezifikationssprache ASN.1 ? 23
1.4.2 Programmiersprache ASN.1 ? 27
1.4.3 Abfragesprache ASN.1 ? 29
1.5 Einsatzbereiche von ASN.1 30
1.6 Zusammenfassung 32
2 Begriffe und Grundlagen der Darstellungsschicht 33
2.1 Funktionalität und Aufgaben 33
2.2 Schnittstelle zur Anwendungsschicht 35
2.3 Funktionalität 37
2.3.1 Verhandlung der Transfersyntax 37
2.3.2 Operationen auf Darstellungskontexten 37
2.3.3 Übertragung von Benutzerdaten 38
2.4 Dienstschnittstelle der Darstellungsschicht 39
2.5 Verwendung von ASN.1 in OSI-Anwendungsstandards 41
3 Systematischer Einsatz von ASN.1 43
3.1 Ein einfaches Protokollbeispiel 43
3.2 Schreibweise von ASN.1-Definitionen 47
3.2.1 Eingabeformat 48
3.2.2 Namen 48
3.2.3 Kommentare 49
3.3 Moduldefinition 50
3.4 Grobspezifikation 51
3.5 Eindeutige Typ-Kennzeichnung - Das Tag 54
3.6 Platzhalter für weitere Typen - ANY 58
3.7 Elementare ASN.1-Typen im Überblick 58
3.8 ASN.1-Wertenotation 61
3.8.1 Wahrheitswerte 62
3.8.2 Zahlenwerte 62
3.8.3 Binärfolgen 62
3.8.4 Hexadezimalfolgen 62
3.8.5 Zeichenfolgen 63
3.9 ASN.1-Wertedefinition 63
3.10 Typdefinitionen mit SET und SEQUENCE 64
3.11 Kompaktere Schreibweise mit Bezeichnern 68
3.12 Hervorheben von Zahlenwerten 69
3.13 Vervollständigung der FTS-Definitionen 73
3.14 Externe Typreferenzen 74
3.15 Weitere ASN.1-Typen 75
3.16 Makro-Erweiterungen 75
3.17 Spezifikation der prozeduralen Aspekte mit ASN.1 76
3.18 Abschließende Bemerkungen 78
4 Syntax und Semantik von ASN.1 79
4.1 Einleitung 79
4.2 Syntax und Semantik einer Sprache 79
4.3 Syntaktische Beschreibungsmittel 81
4.4 Der ASN.1-Zeichensatz 83
4.5 Terminale Symbole von ASN.1 84
4.5.1 Syntaktische Einheiten 84
4.5.2 Einzelne ASN.1-Zeichen 85
4.5.3 ASN.1-Schlüsselwörter 85
4.6 ASN.1-Moduldefinition 86
4.7 Typ- und Wertzuweisungen 88
4.8 Zugriff auf Typen und Werte in anderen Modulen 88
4.9 Allgemeine Typ- und Wertedefinitionen 89
4.9.1 Typdefinition 89
4.9.2 Benannte Typen 90
4.9.3 Wertedefinitionen 91
4.9.4 Benannte Werte 91
4.9.5 Zuordnung von Werten zu Typen 92
4.10 Referenzen auf Typ- und Wertedefinitionen 92
4.11 Einfache ASN.1-Typen 93
4.11.1 ASN.1-Typ BOOLEAN 93
4.11.2 ASN.1-Typ INTEGER 93
4.11.3 ASN.1-Typ BIT STRING 95
4.11.4 ASN.1-Typ OCTET STRING 98
4.11.5 ASN.1-Typ NULL 99
4.12 Zusammengesetzte ASN.1-Typen 100
4.12.1 Allgemeine Prinzipien zur Typkonstruktion 100
4.12.2 ASN.1-Typ SEQUENCE 101
4.12.3 ASN.1-Typ SEQUENCE OF 104
4.12.4 ASN.1-Typ SET 105
4.12.5 ASN.1-Typ SETOF 105
4.12.6 ASN.1-Typ CHOICE 106
4.12.7 ASN.1 Selektionstypen 108
4.12.8 ASN.1 Tagged-Typen 108
4.13 ASN.1-Typ ANY 111
4.14 Vordefinierte Zeichensätze in ASN.1 111
4.15 ASN.1-Typ OBJECT IDENTIFIER 113
4.15.1 CCITT-Objektbezeichner 115
4.15.2 ISO-Objektbezeichner 115
4.15.3 Joint-ISO-CCITT- Objektbezeichner 116
4.15.4 Produktionen für OBJECT IDENTIFIER 116
4.16 Nützliche Typdefinitionen 118
4.16.1 Zeitdarstellungen 119
4.16.1.1 UTCTime 119
4.16.1.2 GeneralizedTime 120
4.16.2 ASN.1-Typ ObjectDescriptor 122
4.16.3 ASN.1-Typ EXTERNAL 123
5 ASN.1-Makros 127
5.1 Überblick 127
5.2 Neue syntaktische Einheiten 128
5.3 Neue SchlüsselwÜrter 129
5.4 Notation der Makrodefinition 130
5.5 Makro-Beispiele 134
5.5.1 Das FLOAT-Makro 134
5.5.2 Das Operation-Makro 135
5.5.3 Das Application Service Element-Makro 138
5.5.4 Expandierung der Makronotation CMIS/CMIP-Beispiel 139
5.5.5 Protokollarchitektur des OSI-Managements 141
5.5.6 Expandierung von m-Get 142
5.5.7 Remote Operation Service Elements 146
6 Basic Encoding Rules for ASN.1 149
6.1 Bezeichnungen 149
6.2 Struktur einer Kodierung 150
6.2.1 Bezeichnerfeld 151
6.2.2 Längenfeld 153
6.2.2.1 Bestimmte Form der Längenkodierung 154
6.2.2.2 Unbestimmte Form der Längenkodierung 155
6.2.3 Inhaltsfeld 156
6.2.4 Endefeld 156
6.3 Kodierung von BOOLEAN-Werten 156
6.4 Kodierung von INTEGER-Werten 157
6.5 Kodierung von BITSTRING-Werten 157
6.6 Kodierung von Oktettstring-Werten 161
6.7 Kodierung eines NULL-Wertes 162
6.8 Kodierung eines SEQUENCE-Wertes 162
6.9 Kodierung eines SEQUENCE OF-Wertes 164
6.10 Kodierung eines SET-Wertes 164
6.11 Kodierung eines SET OF-Wertes 165
6.12 Kodierung eines CHOICE-Wertes 165
6.13 Kodierung eines TAGGED-Wertes 166
6.14 Kodierung eines ANY-Wertes 168
6.15 Kodierung eines OBJECTIDENTIFIER-Wertes 168
6.16 Kodierung von Zeichensatz-Werten 171
6.17 Kodierung von nützlichen ASN.1-Typen 174
6.18 Identifikation der Basic Encoding Rules 174
6.19 Kodierung eines Personal-Stammsatzes 175
7 Erweiterungen durch X.208 181
7.1 Übersicht 181
7.2 Neue Schlüsselwörter 181
7.3 Modulidentifikation, Export und Import 182
7.4 Definition von Typen und Werten 185
7.5 Default-Tags 185
7.6 Aufzählungstypen 187
7.7 Untertypen 188
7.7.1 Explizite Werteselektion 189
7.7.2 INCLUDES-Anweisung 189
7.7.3 Wertebereichsbeschränkung 189
7.7 4 Längenbeschränkung 191
7.7.5 Zeichensatzbeschränkung 191
7.7.6 Innere Untermengenbildung 192
7.8 Gleitpunktzahlen 195
7.9 ANY-Erweiterungen 197
7.10 Tags 198
8 Ein ASN.1-Syntaxüberprüfer 199
8.1 Übersicht 199
8.2 Spracherkennung 199
8.3 Programm zur syntaktischen Überprüfung 202
8.4 Lexikalische Analyse 210
8.5 Programm zur lexikalischen Analyse 214
9 Anhang 219
9.1 Literaturverzeichnis 219
9.2 Stichwortverzeichnis 221
Letztlich ist es kein einfaches Vorhaben, einerseits den Anfänger in die "Geheimnisse" von ASN.1 einzuführen, sowie andererseits auch dem erfahrenen ASN.1-Benutzer ein Nachschlagewerk an die Hand zu geben. Um diesen Konflikt zu lösen, wird zunächst einleitend erläutert, wofür ASN.1 konzipiert wurde und wofür nicht. Außerdem wird anhand eines einfachen Protokollbeispiels die Verwendung von ASN.1 sukzessive eingeführt, so daß die wichtigsten Begriffe für den Anfänger klar werden sollten.
Inhalt:
1 Einführung und Abgrenzung 15
1.1 Was ist ASN.1 ? 15
1.2 Abstrakte Syntaxnotation 17
1.3 Einige Begriffe 20
1.4 Abgrenzung 23
1.4.1 Spezifikationssprache ASN.1 ? 23
1.4.2 Programmiersprache ASN.1 ? 27
1.4.3 Abfragesprache ASN.1 ? 29
1.5 Einsatzbereiche von ASN.1 30
1.6 Zusammenfassung 32
2 Begriffe und Grundlagen der Darstellungsschicht 33
2.1 Funktionalität und Aufgaben 33
2.2 Schnittstelle zur Anwendungsschicht 35
2.3 Funktionalität 37
2.3.1 Verhandlung der Transfersyntax 37
2.3.2 Operationen auf Darstellungskontexten 37
2.3.3 Übertragung von Benutzerdaten 38
2.4 Dienstschnittstelle der Darstellungsschicht 39
2.5 Verwendung von ASN.1 in OSI-Anwendungsstandards 41
3 Systematischer Einsatz von ASN.1 43
3.1 Ein einfaches Protokollbeispiel 43
3.2 Schreibweise von ASN.1-Definitionen 47
3.2.1 Eingabeformat 48
3.2.2 Namen 48
3.2.3 Kommentare 49
3.3 Moduldefinition 50
3.4 Grobspezifikation 51
3.5 Eindeutige Typ-Kennzeichnung - Das Tag 54
3.6 Platzhalter für weitere Typen - ANY 58
3.7 Elementare ASN.1-Typen im Überblick 58
3.8 ASN.1-Wertenotation 61
3.8.1 Wahrheitswerte 62
3.8.2 Zahlenwerte 62
3.8.3 Binärfolgen 62
3.8.4 Hexadezimalfolgen 62
3.8.5 Zeichenfolgen 63
3.9 ASN.1-Wertedefinition 63
3.10 Typdefinitionen mit SET und SEQUENCE 64
3.11 Kompaktere Schreibweise mit Bezeichnern 68
3.12 Hervorheben von Zahlenwerten 69
3.13 Vervollständigung der FTS-Definitionen 73
3.14 Externe Typreferenzen 74
3.15 Weitere ASN.1-Typen 75
3.16 Makro-Erweiterungen 75
3.17 Spezifikation der prozeduralen Aspekte mit ASN.1 76
3.18 Abschließende Bemerkungen 78
4 Syntax und Semantik von ASN.1 79
4.1 Einleitung 79
4.2 Syntax und Semantik einer Sprache 79
4.3 Syntaktische Beschreibungsmittel 81
4.4 Der ASN.1-Zeichensatz 83
4.5 Terminale Symbole von ASN.1 84
4.5.1 Syntaktische Einheiten 84
4.5.2 Einzelne ASN.1-Zeichen 85
4.5.3 ASN.1-Schlüsselwörter 85
4.6 ASN.1-Moduldefinition 86
4.7 Typ- und Wertzuweisungen 88
4.8 Zugriff auf Typen und Werte in anderen Modulen 88
4.9 Allgemeine Typ- und Wertedefinitionen 89
4.9.1 Typdefinition 89
4.9.2 Benannte Typen 90
4.9.3 Wertedefinitionen 91
4.9.4 Benannte Werte 91
4.9.5 Zuordnung von Werten zu Typen 92
4.10 Referenzen auf Typ- und Wertedefinitionen 92
4.11 Einfache ASN.1-Typen 93
4.11.1 ASN.1-Typ BOOLEAN 93
4.11.2 ASN.1-Typ INTEGER 93
4.11.3 ASN.1-Typ BIT STRING 95
4.11.4 ASN.1-Typ OCTET STRING 98
4.11.5 ASN.1-Typ NULL 99
4.12 Zusammengesetzte ASN.1-Typen 100
4.12.1 Allgemeine Prinzipien zur Typkonstruktion 100
4.12.2 ASN.1-Typ SEQUENCE 101
4.12.3 ASN.1-Typ SEQUENCE OF 104
4.12.4 ASN.1-Typ SET 105
4.12.5 ASN.1-Typ SETOF 105
4.12.6 ASN.1-Typ CHOICE 106
4.12.7 ASN.1 Selektionstypen 108
4.12.8 ASN.1 Tagged-Typen 108
4.13 ASN.1-Typ ANY 111
4.14 Vordefinierte Zeichensätze in ASN.1 111
4.15 ASN.1-Typ OBJECT IDENTIFIER 113
4.15.1 CCITT-Objektbezeichner 115
4.15.2 ISO-Objektbezeichner 115
4.15.3 Joint-ISO-CCITT- Objektbezeichner 116
4.15.4 Produktionen für OBJECT IDENTIFIER 116
4.16 Nützliche Typdefinitionen 118
4.16.1 Zeitdarstellungen 119
4.16.1.1 UTCTime 119
4.16.1.2 GeneralizedTime 120
4.16.2 ASN.1-Typ ObjectDescriptor 122
4.16.3 ASN.1-Typ EXTERNAL 123
5 ASN.1-Makros 127
5.1 Überblick 127
5.2 Neue syntaktische Einheiten 128
5.3 Neue SchlüsselwÜrter 129
5.4 Notation der Makrodefinition 130
5.5 Makro-Beispiele 134
5.5.1 Das FLOAT-Makro 134
5.5.2 Das Operation-Makro 135
5.5.3 Das Application Service Element-Makro 138
5.5.4 Expandierung der Makronotation CMIS/CMIP-Beispiel 139
5.5.5 Protokollarchitektur des OSI-Managements 141
5.5.6 Expandierung von m-Get 142
5.5.7 Remote Operation Service Elements 146
6 Basic Encoding Rules for ASN.1 149
6.1 Bezeichnungen 149
6.2 Struktur einer Kodierung 150
6.2.1 Bezeichnerfeld 151
6.2.2 Längenfeld 153
6.2.2.1 Bestimmte Form der Längenkodierung 154
6.2.2.2 Unbestimmte Form der Längenkodierung 155
6.2.3 Inhaltsfeld 156
6.2.4 Endefeld 156
6.3 Kodierung von BOOLEAN-Werten 156
6.4 Kodierung von INTEGER-Werten 157
6.5 Kodierung von BITSTRING-Werten 157
6.6 Kodierung von Oktettstring-Werten 161
6.7 Kodierung eines NULL-Wertes 162
6.8 Kodierung eines SEQUENCE-Wertes 162
6.9 Kodierung eines SEQUENCE OF-Wertes 164
6.10 Kodierung eines SET-Wertes 164
6.11 Kodierung eines SET OF-Wertes 165
6.12 Kodierung eines CHOICE-Wertes 165
6.13 Kodierung eines TAGGED-Wertes 166
6.14 Kodierung eines ANY-Wertes 168
6.15 Kodierung eines OBJECTIDENTIFIER-Wertes 168
6.16 Kodierung von Zeichensatz-Werten 171
6.17 Kodierung von nützlichen ASN.1-Typen 174
6.18 Identifikation der Basic Encoding Rules 174
6.19 Kodierung eines Personal-Stammsatzes 175
7 Erweiterungen durch X.208 181
7.1 Übersicht 181
7.2 Neue Schlüsselwörter 181
7.3 Modulidentifikation, Export und Import 182
7.4 Definition von Typen und Werten 185
7.5 Default-Tags 185
7.6 Aufzählungstypen 187
7.7 Untertypen 188
7.7.1 Explizite Werteselektion 189
7.7.2 INCLUDES-Anweisung 189
7.7.3 Wertebereichsbeschränkung 189
7.7 4 Längenbeschränkung 191
7.7.5 Zeichensatzbeschränkung 191
7.7.6 Innere Untermengenbildung 192
7.8 Gleitpunktzahlen 195
7.9 ANY-Erweiterungen 197
7.10 Tags 198
8 Ein ASN.1-Syntaxüberprüfer 199
8.1 Übersicht 199
8.2 Spracherkennung 199
8.3 Programm zur syntaktischen Überprüfung 202
8.4 Lexikalische Analyse 210
8.5 Programm zur lexikalischen Analyse 214
9 Anhang 219
9.1 Literaturverzeichnis 219
9.2 Stichwortverzeichnis 221