ASN.1
description
Transcript of ASN.1
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
Gerente Agente
MIB
Get
Get-Response
Controla(Acesso direto à
MIB)
“Cliente” “Servidor”
Encarregado de coletar dados dos dispositivos e armazená-los numa estrutura padrão (base de dados)
Envia mensagens
SNMP, modifica valor da variável...
Define o conjuntoconceitual dos objetose contém informações
detalhadas sobre cada objeto
SMI: Especifica uma metodologiapara definição da informação contida na MIB.Usa um subconjunto de tipos de dados ASN.1
ASN.1Tipos 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 tiposSEQUENCE OF: Lista ordenada de um só
tipoSET: Colecção não ordenada de vários
tiposSET OF: Coleção não ordenada de um só
tipo CHOICE: Qualquer tipo de uma lista
Exemplo de código ASN.1Employee DEFINITIONS ::= BEGINEXPORTS;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 INTEGERDate ::= IA5StringEND
Classes Geradas
PersonnelRecord.java_SeqOfChildInformation.javaChildInformation.javaDate.javaEmployeeNumber.javaName.javaPrintHandler.javaReader.javaWriter.javaXMLHandler.java
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 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.