Hi everybody,
I have two questions regarding the ISO/IEC 8825-1 standard. More precisely,
I am interested in finding out how BER (Basic Encoding Rules) treats a
sequence (structure) that has optional data members or data members that can
have the default value.
Paragraph 8.9.3 says that:
� 8.9.3 The Encoding of a data value may, but need not, be present for a
type which was referenced with the keyword �OPTIONAL� or the keyword
�DEFAULT�. If present, it shall appear in the encoding at the point
corresponding to the appearance of the type in the ASN.1 definition.�
My understanding of this is that a structure that has a couple of data
fields that are optional or with the default value can choose to encode them
or not. In case it encodes them everything is fine, but how will be signaled
in the encoding that the fields were not in fact encoded.
Let�s think of a structure:
Some_structure SEQUENCE {
Field_1 INTEGER (0..255),
Field_2 INTEGER (0..255) DEFAULT {0},
Field_3 INTEGER (0..100) OPTIONAL,
Field_4 INTEGER (0..100) DEFAULT {1},
Field_5 INTEGER (0..255) OPTIONAL
}
Now let�s think to an instance of this structure:
an_Instance = { 3, 0, N/A, 2, 5 };
This has
- its first field set to 3;
- the second one is set to 0 which is the default value for that field;
- the third field has a value without importance;
- the fourth one has a value of 2, which is different than the default
value;
- and the last field set to 5, which is important for the current context.
According to the standard, only fields 1, 4 and 5 should always be encoded,
whereas fields 2 and 3 can miss.
Now my question is how will I know which fields were encoded and which were
skipped when I decode this structure and see that only three integers were
encoded.
The reason I ask this is because I also work with OER (Octet Encoding Rules)
which is an emerging standard and that one attaches to each structure a
special field, which is called �Preamble�. This is basically a bit-map that
tells you which field was encoded and which was skipped. In the above case,
the preamble would have been a 5-bit string equal with 10011 (1 for present
field and 0 for skipped field). When the object is decoded, one can see that
fields 2 and 3 are missing and knowing the structure can conclude that field
2 had the default value and field 3 was optional.
My second question is related to the way BER treats the extension marker
fields, if it treats them at all. Extension markers are special fields that
allow structures to evolve from one version to another. All the newer fields
are enclosed with a pair of extension markers and because of that, every
application that only knows the old version of the object will still be able
to decode the information. Does BER anything like that?
Best regards,
Eddie Lascu
IBI Group
230 Richmond St. W., 5th Floor
Toronto ON
M5V 1V6
Tel. (416) 596-1930 x205
Fax. (416) 596-0644
NOTE: This e-mail message and attachments may contain privileged and
confidential information. If you have received this message in error,
please immediately notify the sender and delete this e-mail message.