ietf-smime
[Top] [All Lists]

Re: Content Type Attribute Question

1998-01-23 12:01:27
John,

    I think I agree with your points.  To wit, you wrote:

IMHO, we should not add context-specific tags unless they are absolutely
required.  As you correctly pointed out, the addition of context-specific
tags will interfere with backwards compatibility in some cases.

<SNIP>

I don't believe that it causes any extra work to add a context-specific tag
once it has become absolutely necessary.  For example, if one or more of the
BuiltInContentType, ExternalContentType or ExternalContentWithSubtype
definitions syntaxes are changed such that they are no longer unique, then
the implementor can change her ASN.1 software to implement the new
content-specific tag in conjunction with implementing the changed syntax.
In other words, the ASN.1 software must be changed anyway, so adding support
for the context-specific tag is a trivial amount of work.

    In nearly all cases, the encoding of the ASN.1 tag amounts to a trivial
change.  I don't have a really strong view on unnecessary tagging.  They do no
harm, but they also do no good.  Extra tags can really make the syntax UGLY from
a maintenance point of view, but I don't know whether we can count that as a
valid engineering rationale.

    I this case, compatibility clearly argues for leaving the tagging the way it
is.

I do not object to Chris' recommendation.  If his recommendation is
    approved, then a context-specific tag needs to be added to the
    "ContentTypeExtended other OtherContentType" choice (to distinguish it
from
    the ExternalContentWithSubtype choice) and the context-specific tags can
be
    deleted from the OtherContentType syntax (because they are not needed).
    This results in the following:

        ContentTypeExtended ::= CHOICE {
            built-in                 BuiltInContentType,
            external                 ExternalContentType,
            externalWithSubtype      ExternalContentWithSubtype,
            other                [0] OtherContentType }

        OtherContentType :: = SEQUENCE {
            type    OBJECT IDENTIFIER,
            value   OCTET STRING }

    I agree with this modification.  The tags on "type" and "value" were
inadvertant artifacts of the way I initially wrote the syntax (using
TYPE-IDENTIFIER, which I thought better of) in which they were necessary.  The
missing tag on "other" was simply an oversight.

Chris





<Prev in Thread] Current Thread [Next in Thread>