Title: ASN'1
1ASN.1
ABSTRACT SYNTAX NOTATION Nº1
2ASN.1
- Notación de Sintaxis Abstracta Nº1
- El propósito de una sintaxis abstracta en la
especificación de protocolos consiste en definir
tipos de datos abstractos que puedan utilizarse
en el intercambio llevado a cabo por el
protocolo, junto con valores de algunos de estos
datos. - Composición y otras convenciones.
- En general ASN.1 es de estilo libre, pero existen
algunas reglas de estilo - Identificadores se construyen con los símbolos
alfanuméricos y el símbolo guión. - El primer caracter de un identificador es
alfabético - Se distinguen minúsculas y mayúsculas
3ASN.1
Tipos de Datos Simples BOOLEAN Representan un
valor cierto o falso INTEGER Representan un
valor entero positivo, negativo o nulo ExtInt
INTEGER intA ExInt 2 -- IntA es de tipo
entero y vale 2 intB ExtInt
-10 ENUMERADO Cada valor de un tipo
enumerado se distingue y representa por un
identificador único MonthsOfTheYear
ENUMERATED jan(1),feb(2),mar(3)
......,dec(12) coldestMonthOfTheYear
dec coldestMonthOfTheYear 12 REAL
Representa un valor real en la forma MxBE pi
REAL 31415928,10,8 BIT STRING Representa
una ristra de bits. ExtBitString BIT
STRING bitA ExtBitString 10001B OCTET
STRING Resresenta una ristra de octetos
(bytes). ExtOctetString OCTET STRING octetA
ExOctetString 1A2BH
4ASN.1
- Otras String
- Numeric String
- Printable String
- Teletex String
- Videotx String
- Visible String
- IA5 String
- Graphic String
- General String
- Generalized Time Hora y Fecha Local
- ExTime GeneralizedTime
- time1 ExTime 19900811131510.5
- UTC Time Hora y Fecha de GreenWich
- time2 ExTime 19900811131510.5Z
5ASN.1
ExObjectID OBJECT IDENTIFIER ftam ExObjectID
iso standard 8571 -- los siguientes
valores son equivalentes valObjectID1 ExObjectID
ftam abstract-syntax(2) pci(1) valObjectID1
ExObjectID iso standar 8571 abstract
syntax(2) pci(1) valObjectID1 ExObjectID 1
0 8571 2 1 ExtName ObjectDescriptor name
ExName Ejemplo de Descriptor de
Objeto Tipos de Datos Estructurados SEQUENCE
Es una lista ordenada de cero o más elementos de
diferentes tipos SEQUENCE OF Caso especial de
SEQUENCE donde todos los elementos son del mismo
tipo SET Es una lista no ordenada de cero o más
elementos SET OF caso especial de SET donde
todos los elementos son del mismo tipo Date
SEQUENCE day INTEGER, month MonthOfTheYear, yea
r INTEGER OPTIONAL
6ASN.1
DeliveryDates SEQUENCE OF Date Orderitem
SET quantity INTEGER DEFAULT 1,
partname Printablesatring Order SET OF
Orderitem Para hacer uso de las reglas
OPTIONAL y DEFAULT debe ser posible distinguir
un valor de otro en la Sintaxis de
Transferencia BadOne SEQUENCE INTEGER,
INTEGER, INTEGER OPTIONAL, INTEGER OPTIONAL
BadTwo SET INTEGER, INTEGER
CHOICE Representa una lista alternativa de
tipos conocidos, pero solo uno de ellos puede
tener valor en un momento determinado. Part
CHOICE name PrintableString, number INTEGER
7ASN.1
ANY Cuando un tipo de datos es desconocido en
el momento de la especificación, se utiliza ANY.
A posteriori, ANY puede ser reemplazado por un
tipo ASN.1 PartDescription SEQUENCE
id Part, class INTEGER, details ANY
DEFINED BY Class EXTERNAL Es un tipo que no
necesita se descrito usando ASN.1, aunque ASN.1
puede utilizarlos. Tipos Etiquetados El
etiquetado se utiliza para construir nuevos tipos
que tienen la misma semántica que un tipo
existente pero una identificación diferente.
Consisten de una clase y un numero de etiqueta
positivo Clases UNIVERSAL APPLICATION
PRIVATE CONTEXT-SPECIFIC
8ASN.1
Exuniv UNIVERSAL 2 INTEGER Exappl
APPLICATION 0 INTEGER Expriv PRIVATE 1
INTEGER GoodOne SEQUENCE INTEGER,
INTEGER, 0 INTEGER OPTIONAL, 1 INTEGER
OPTIONAL GoodTwo SET 0 INTEGER,
1 INTEGER Subtipado Permite restringir
el rango de valores que pueden tomar los tipos
escalares y el tamaño de los tipos estructurados
y las strings Valores y Rangos Date
SEQUENCE day INTEGER(1..31) month Month,
year INTEGER(1980..MAX) OPTIONAL
9ASN.1
First-quarter Month OfTheYear (january
february march) Second_quarter
MonthOfTheYear (april may june) Third-quarter
MonthOfTheYear (july august
september) Four-quarter MonthOfTheYear
(october november december)
Orderitem SET quantity INTEGER
(1..MAX) DEFAULT 1, partname PrintableString R
estricciones de Conjunto First-half
MonthOfTheYear (INCLUDES First-quarter
INCLUDES Second-quarter) Winter
MonthOfTheYear (INCLUDES First-quarter december
Alfabeto HexString
PrintableString (FROM (0 1 2 3
4 5 6 7
8 9 A B
C D E F ))
10ASN.1
Restricciones de Tamaño Order SET SIZE
(1..100) OF Orderitem Hexword HexString
(SIZE 4 8) Hexlist SEQUENCE OF HexString
(SIZE(4)) Restricciones Internas JanDate
Date (WITH COMPONENTS ...., month (january)
) FebDate Date (WITH COMPONENTS ....,
month (january), day (1,28) ) FullDate
Date (WITH COMPONENTS ...., year PRESENT
) Month31 Month (january,march,may,july,augus
t,october,december) Month30 (april, june,
september, november) RealDate Date (WITH
COMPONENTS ....,month (INCLUDES Month31)
WITH COMPONENTS ....,month (INCLUDES
Month30), day(1..30) WITH COMPONENTS
....,month (february), day(1..28) )
11ASN.1
Valores Es equivalente a la definición de
constantes en un lenguaje de programación Simples
first INTEGER 1 firstinyear MonthOfTheYear
january asn1-encoding OBJECT IDENTIFIER
joint-iso-ccitt asn1(1) basic-encoding(1)
Estructurados christmas Date 25,
december thisChristmas Date 25, december,
1992 quaterdays Deliverydates 31,
march, 30, june, 30, september, 31,
december thisorder Order 5, Blue
paint, 5.0 Paint brus blue-paint Part
name Blue Paint
12ASN.1
brush Part number 245875 paints INTEGER
1 brushers INTEGER 2 Brushtype
SEQUENCE size INTEGER, quality ENUMERATED
excellent(1),ok(2), hairy(3 )
blue-paint-desc Partdescription
blue-paint, paints, INTEGER 5000
lttle-brush-desc Pardescription
brush, brushes, Brushtype 1, hairy
notgood1 GoodOne 3, 5, 7 notgood2
GoodTwo 2, 4
13ASN.1
Módulos, Importación y Exportación Debido a
que las especificaciones pueden llegar a ser muy
extensas, y a que a veces es de interés compartir
definiciones, se necesita alguna forma de
encapsulamiento. DateModule DEFINITIONS
BEGIN EXPORT Date Month ENUMERATED
january(1), february(2), march(3), april(4),
may(5), june(6), july(7), august(8),
september(9), october(10), november(11),
december(12) Date APPLICATION 0
SEQUENCE day INTEGER (1..31), month Month,
year INTEGER (1900..MAX) OPTIONAL today
Date 10, oct, 1991 END
14ASN.1
Macros La facilidad de Macros de ASN.1 permite a
un diseñador de protocolos de aplicación utilizar
una notación no estandard para definir tipos y
valores Definición ltnombregt MACRO
BEGIN TYPE NOTATION ltnotación del nuevo
tipogt VALUE NOTATION lt notación del nuevo
valor gt ltsintaxis de soportegt END Los tipos y
valores dentro del la macro se definen utilizando
notación BNF (Backus Naur Form) ANOTHER-EXAMPLE
MACRO BEGIN TYPE NOTATION example
number value(PrintableStrimg) VALUE
NOTATION value(VALUE INTEGER) END ExampleType
ANOTHER-EXAMPLE example number an example
on macro usage exType ExampleType 46
15ASN.1
YET-ANOTHER-EXAMPLE MACRO BEGIN TYPE
NOTATION aStreamOfExamples VALUE
NOTATION example value(VALUE INTEGER)andChapter
EndSoon END OneMoreType
YET-ANOTHER-EXAMPLE aStreamOfExamples exValue
OneMoreType example 47 andChapterEndsSoon
LADY MACRO BEGIN TYPE NOTATION Wimbledon
statistics VALUE NOTATION wins Wimbledon
value(VALUE INTEGER) times END navratilova
LADY wins Wimbledon 9 times
16ASN.1
Reglas de Codificación (Sintáxis de Transferencia)
TYPE
LENGTH
VALUE
TYPE
LENGTH
VALUE
EOC
EOC 00016
CC
P/C
ID Code
CC
P/C
1 1 1 1 1
1
X X X X X X X
0
X X X X X X X
. . . . .
Octeto N
Octeto 2
Octeto 1
CC Class Code
P/C Primitive/Constructor
X X ......X ID Code
0
Longitud (L)
1 lt L lt 127
K Octetos
1
Longitud (L)
K
128 lt L lt 21008
1
0 0 0 0 0 0 0
Valor terminado por EOC