tag: optional, may be specified for tagged values. If no
tag is specified, the UNIVERSAL tag corresponding to the Primitive sub-class is used by
default.
tagging: may be used as an encoding hint to encode a value either
explicitly or implicitly, see ASN1 for possible values.
tag_class: if tag and tagging are nil
then this is set to :UNIVERSAL by default. If either tag
or tagging are set then :CONTEXT_SPECIFIC is used as the
default. For possible values please cf. ASN1.