Slide 18 of 41
Notes:
The ASN.1 notation allows tags to be applied to any type (simply by preceding the type name with a tag (the numbers in square brackets), and we have so far described this as replacing (overriding) the default tag with a tag chosen by the designer.
Such tagging is called IMPLICIT tagging, for reasons we will see in a moment.
Thinking back to the model of a type as a bucket containing abstract values: in most cases every abstract value in the type has the same tag, and abstract values are distinguished in the encoding by having different V parts. However, there is one case when the “bucket” contains values that do not all have the same tag - indeed they must not.
This is the case of a type that is defined in ASN.1 as a CHOICE. As we saw earlier, we can have the “Research-division” type with just two values, both NULL, but with different tags to distinguish them.
If in this case we overrode the tag of this type (changed it for all values), we would have removed the distinction in the encoding of the two values. Over-riding cannot be allowed.
ASN.1 introduces the additional concept of a adding a new tag to a type, called explicit tagging to cope with this problem.