2012-01-27 3 views
0

Я пытаюсь реализовать некоторый протокол на Java. Для этого я использовал компилятор BinaryNotes и их api-библиотеку, но я придерживался этого примера. Вот мой ASN1 входной файл:Застрял с компилятором BinaryNotes

Test 
DEFINITIONS ::= 
BEGIN 
    OPERATION ::= CLASS 
    { 
     &Argument OPTIONAL, 
     &opCode Code UNIQUE OPTIONAL 
    } 
    WITH SYNTAX 
    { 
     [ARGUMENT &Argument] 
     [CODE &opCode] 
    } 

    OperationA OPERATION ::= 
    { 
     ARGUMENT Arg 
     CODE global:{org(0) operA(1) ver(1) id(1)} 
    } 

    Code ::= CHOICE 
    { 
     local INTEGER, 
     global OBJECT IDENTIFIER 
    } 

    Arg ::= SEQUENCE 
    { 
     operationID INTEGER, 
     value ArgValue 
    } 

    ArgValue ::= OCTET STRING (SIZE(1..25)) 
END 

и здесь выход млрд компилятором:

  1. Компиляция файла: test1.asn
  2. линия 4: 9: неожиданный маркер: ОПЕРАЦИЯ
  3. линия 6:17: неожиданный знак: '&'

Как изменить файл ввода asn1 для того, чтобы с успехом скомпилировать его с помощью компилятора bn. Спасибо заранее.

ответ

0

Новый синтаксис классов ASN.1 не поддерживается в BinaryNotes, извините! Также нет поддержки CODE global:{org(0) operA(1) ver(1) id(1)} Вы можете попробовать с основными ASN.1, как это:

DEFINITIONS ::= 
BEGIN 
    OPERATION ::= SEQUENCE 
    { 
     argument Arg OPTIONAL, 
     code Code OPTIONAL 
    } 


    Code ::= CHOICE 
    { 
     local INTEGER, 
     global OBJECT IDENTIFIER 
    } 

    Arg ::= SEQUENCE { 
    } 
+0

Благодарю вас. Я думал о чем-то подобном, но я/м не был уверен, что я должен использовать SEQUENCE вместо CLASS. Еще раз спасибо. – nick79

+0

Нет проблем, но вы должны знать, что BinaryNotes поддерживает только базовый общий синтаксис ASN.1 (на самом деле я автор этой структуры :)) – abdolence

+0

Мне очень жаль, потому что вы остановились на разработке фреймворка :) – nick79

1

Пожалуйста, обратите внимание, что класс не может быть изменен на ПОСЛЕДОВАТЕЛЬНОСТИ. Это может исключить сообщения об ошибках в старшем компиляторе, но дает совершенно другое значение.

Я предлагаю вам получить новый ASN.1-компилятор, который имеет поддержку издания ASN.1 2008 года. Вы можете найти список инструментов ASN.1 (некоторые бесплатные, некоторые рекламные) по адресу http://www.itu.int/ITU-T/asn1/links/index.htm.

Paul

+0

Спасибо, Пол. По ссылке, которую вы предоставили, поскольку я вижу, что только компилятор OSS Noklava поддерживает выпуск ASN.1 2008 года, но, к сожалению, это не бесплатные решения. Что делать, если я хочу использовать библиотеку api из Bouncycastle и вручную писать свои классы Java. Как бороться с КЛАССОМ. Вы сказали, что его нельзя изменить с помощью SEQUENCE, и я предполагаю, что это тот же случай с SET и т. Д. Спасибо заранее. – nick79

+0

Вы правы, что компилятор OSS Nokalva не является бесплатным, но вы можете скачать бесплатную пробную версию, чтобы узнать, работает ли это для вас, прежде чем платить за нее. Цель CLASS - хранить локальную информацию, используемую при определении содержимого сообщений. Объекты CLASS никогда не передаются по линии. Если вы хотите сделать что-то со старым компилятором, вы можете просто исключить определения CLASS. Но вам придется писать код для ручного управления любыми ограничениями, которые ссылаются на CLASS или информационные объекты этого класса. –

Смежные вопросы