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?
Vielen Dank! Das war genau das, was ich brauchte! –