2017-10-09 3 views
0

Ich schreibe einen Basic Encoding Rules Codec in D, und ich möchte ein EmbeddedPDV codieren, das gemäß der ASN.1 unten definiert ist. Das Problem ist, dass, wenn ich identification kodiere, ich nicht weiß, wie man es in der BER-kodierten binären, die ich zur Verfügung stelle, ein OBJECT IDENTIFIER verbunden mit dem Feld syntax im Gegensatz zu einem, das mit dem transfer-syntax Feld verbunden ist.ASN.1 BER Codierung von EmbeddedPDV

EmbeddedPDV ::= [UNIVERSAL 11] IMPLICIT SEQUENCE { 
identification CHOICE { 
    syntaxes SEQUENCE { 
     abstract OBJECT IDENTIFIER, 
     transfer OBJECT IDENTIFIER }, 
    syntax OBJECT IDENTIFIER, 
    presentation-context-id INTEGER, 
    context-negotiation SEQUENCE { 
     presentation-context-id INTEGER, 
     transfer-syntax OBJECT IDENTIFIER }, 
    transfer-syntax OBJECT IDENTIFIER, 
    fixed NULL }, 
data-value-descriptor ObjectDescriptor OPTIONAL, 
data-value OCTET STRING } 
(WITH COMPONENTS { ... , data-value-descriptor ABSENT }) 

Ich weiß, dass, wenn Sie explizite Kennzeichnung verwenden, gäbe es sowohl kontextspezifische Identifizierungs-Tags für syntax und transfer-syntax sein, aber das Fehlen von, sagen wir, ein [0] oder [1] vor syntax und transfer-syntax bzw. es macht unklar, wie ich das verschlüsseln soll. Gibt es eine angenommene kontextspezifische Kennung, die diesen Feldern zugeordnet ist? Mit anderen Worten, sollte ich ein OBJECT IDENTIFIER mit einem Identifizierungskennzeichen von 0x81 kodieren, um festzulegen, dass ich syntax und ein Identifizierungskennzeichen von 0x82 kodiere, um zu bezeichnen, dass ich transfer-syntax kodiere?

Antwort

2

Der "zugehörige Typ" für EMBEDDED PDV ist in ITU-T X.680 (2015), Klausel 36.5 angegeben und enthält die Definition "Annahme und automatische Tagging-Umgebung". Dies wurde gemacht, um zu vermeiden, dass der Text mit den implizierten Tags für jedes Feld überflutet wird. Dies bedeutet, dass innerhalb der "Identifikation" die alternative "Syntax" eine implizite Markierung von [1] hat, während "Übertragungssyntax" eine implizite Markierung von [4] hat. Dies ist die Definition des zugehörigen Typs für den EMBEDDED PDV-Inhalt, unabhängig davon, in welchem ​​Markierungskontext der "EMBEDDED PDV" angezeigt wird.

+0

Vielen Dank! Das war genau das, was ich brauchte! –

0

Es scheint, dass Sie mehrdeutige ASN.1 Notation haben. Die einzige Möglichkeit, die ich mir vorstellen kann, wäre ein explizites Tagging.

Wenn Ihr ASN.1-Modul die AUTOMATIC Tagging-Klausel in Moduldefinition hat, als der Encoder wahrscheinlich ausdrücklich alle nicht markierten Komponenten in ASN.1 Sequenz-Tag sollten, SET und CHOICE ab Tag-Wert 0.

Das automatische Das Tagging sollte nur angewendet werden, wenn in der konstruierten Datenstrukturdefinition, die Sie zu serialisieren versuchen, bereits markierte Komponenten nicht vorhanden sind.

Hier ist ein possibly relevant answer.

Verwandte Themen