ASN.1
Tarciana Dias
Luciana Oliveira
Flávia Falcão
Introdução ASN.1
Notação Sintática Abstrata (Abstract Syntax
Notation One – ASN.1)
Para que o gerenciamento de dispositivos de uma
rede que tenham diferentes fabricantes seja
possível, é necessário uma forma padronizada para
a descrição dos mesmos
A linguagem ASN.1 foi proposta com o objetivo
de descrever esses objetos numa forma
padronizada e independente de fabricante
Modelo SNMP
“Cliente”
“Servidor”
Get
Gerente
Envia
mensagens
SNMP,
modifica valor
da variável...
Agente
Encarregado de coletar
dados dos dispositivos
e armazená-los numa
estrutura padrão (base
de dados)
Get-Response
SMI: Especifica uma metodologia
para definição da informação contida na MIB.
Usa um subconjunto de tipos de dados ASN.1
Controla
(Acesso direto à MIB)
MIB
Define o conjunto
conceitual dos objetos
e contém informações
detalhadas sobre cada objeto
ASN.1
Tipos Primitivos
INTEGER – inteiro de tamanho arbitrário
BOOLEAN - TRUE ou FALSE
BIT STRING – Lista de zero ou mais bits
OCTET STRING – Lista de zero ou mais byte
ANY – União de todos os tipos
NULL – Absolutamente nenhum tipo
OBJECT IDENTIFIER – Nome de objeto (ex.:
uma biblioteca)
Construtores
SEQUENCE: Lista ordenada de vários tipos
SEQUENCE OF: Lista ordenada de um só
tipo
SET: Colecção não ordenada de vários tipos
SET OF: Coleção não ordenada de um só
tipo
CHOICE: Qualquer tipo de uma lista
Exemplo de código ASN.1
Employee DEFINITIONS ::= BEGIN
EXPORTS;
PersonnelRecord ::= [APPLICATION 0] IMPLICIT SET {
Name,
title
[0]
IA5String,
number
EmployeeNumber,
dateOfHire
[1]
Date,
nameOfSpouse [2]Name,
children
[3]
IMPLICIT SEQUENCE OF ChildInformation
}
ChildInformation ::= SET {
Name,
dateOfBirth [0] Date
}
Name ::= [APPLICATION 1] IMPLICIT SEQUENCE {
givenName
IA5String,
initial IA5String,
familyName
IA5String
}
EmployeeNumber ::= [APPLICATION 2] IMPLICIT INTEGER
Date ::= IA5String
END
Classes Geradas
PersonnelRecord.java
_SeqOfChildInformation.java
ChildInformation.java
Date.java
EmployeeNumber.java
Name.java
PrintHandler.java
Reader.java
Writer.java
XMLHandler.java
Classes Criadas
Gerente.java
Agente.java
Iservico.java (interface remota)
Compiladores
ASN1C (Java, C ou C++)
http://www.obj-sys.com
Asn1Compiler (C# e Java)
http://www.unigone.com/
ASN-1Step (C, C++ ou Java)
http://www.oss.com/
O compilador ASN1C
O compilador ASN1C
O compilador de ASNC1 é capaz de gerar
o código Java. O código gerado de Java
consiste em uma série de arquivos de
fonte de Java - uma tipo definida dentro
de uma especificação ASN.1.
Ex:
ChildInformation ::= SET {Name, dateOfBirth [0] Date}
O compilador ASN1C
Cada um destes arquivos em Java contém
(no mínimo) os seguintes itens:
Uma variável (ou variáveis) pública dos
dados
Um construtor (ou construtores) para
inicializar a variável.
Um método encode.
Um método decode.
O compilador ASN1C
Há também uma biblioteca run-time
para Java. Ela consiste em uma série
de classes para codificar e
descodificar os tipos ASN.1
primitivos. Por o exemplo, a classe
Asn1Integer codificará ou
descodificará uma variável do tipo
do INTEIRO ASN.1.
Roteiro ASN1C
Setar o arquivo .asn1
Identificar o tipo de linguagem a ser
gerada (Java, C ou C++)
Identifar BER, PER, DER
Para compilar e executar:
set classpath= local do asn1rt.jar; local do
jdk1.4;%path%
Por exemplo:
Set
classpath=C:\acv541\java\asn1rt.jar;C:\jbuilder8\j
dk1.4\bin\;%path%
Download

ASN.1