As a tag, 0x80
(under BER, CER, or DER) means a tag whose class is context-specific (vs the named classes, UNIVERSAL
, PRIVATE
, and APPLICATION
), whose number is 0
, and whose encoding is primitive. The fact that it is primitive means it is being used as an IMPLICIT
tag. Had it been 0xA0
(Constructed, Context-Specific 0) it could be either an EXPLICIT
tag (a wrapper) or an IMPLICIT
constructed value (SEQUENCE
, SEQUENCE-OF
, etc).
Knowing what such a value means require looking at the ASN.1 type definition.
For example, from RFC 3280 A.2 (DEFINITIONS IMPLICIT TAGS
):
PrivateKeyUsagePeriod ::= SEQUENCE {
notBefore [0] GeneralizedTime OPTIONAL,
notAfter [1] GeneralizedTime OPTIONAL }
If a PrivateKeyUsagePeriod
had a notBefore
value then it would be tagged with 0x80
([0]
) instead of 0x18
([UNIVERSAL 24]
); but it should still be interpreted following the encoding for GeneralizedTime
.