问题
I have been presented with an ASN.1 document that includes two encoding/decoding attributes;
- AUTOMATIC TAGS
- My understanding; the tags are defined automatically using the encoding rules unless a tag notation is present in the definition
- EXTENSIBILITY IMPLIED
- My understanding; types may have elements that are not defined within the ASN.1 document. If found, the encoder should silently ignore. Additionally, my decoder should also be ready to handle values with unspecified tags.
Q1: Are my understandings above correct?
Q2: w.r.t AUTOMATIC TAGS; defining automatically seems infeasible (obviously not...) but my understanding is that someEncoder
would therefore assign SomeType.class
with tag (for example) 0xBB
; how does someDecoder
know how to decode 0xBB
back to SomeType
?
Q2: w.r.t unspecified tags; once again, I am unsure how to pass an unspecified Tag back to something else.
回答1:
Q1. If the AUTOMATIC TAGS
clause is present, all the components of the
SEQUENCE
and SET
types and all the alternatives of the CHOICE
types
defined in the module are automatically tagged sequentially starting from 0. If a constructed type contains at least a manual tag
(i.e. if it contains square brackets), the automatic tagging mode is
switched off for this type.
Q2. The same algorithm for automatic tagging is used when writing the encoder and decoder code.
Q3. Your decoder may encounter unrecognized tags when it is communicating with a peer which has a newer version of your ASN.1 schema (which includes additional components). In this case (if you do not intend to retransmit the received data) you should ignore the unrecognized tags.
来源:https://stackoverflow.com/questions/31438256/asn-1-automatic-tags-and-extensibility-implied-attributes