[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Re: More on ;binary
At 02:23 PM 2002-03-01, Jim Sermersheim wrote:
>I don't think that the text
>" If the "binary" option is present in an AttributeDescription,
> it overrides any string-based encoding representation defined
> for that attribute in [5]. Instead the attribute is to be
> transferred as a binary value encoded using the Basic
> Encoding Rules [11]."
>
>says anything at all about whether or not binary is *needed* to specify
>BER encoded ASN.1 during transfer. Only that it *can* be used to
>"override any string-based encoding..."
But there is no other mechanism to override the "native"
(string-based) encoding. An implementation which used
the provided a binary encoding of an value while not
indicating it was binary by in the associated attribute
description is broken. That is, binary encoding is
used ONLY when the ;binary transfer option has been
indicated. They are tied together.
Likewise, in absence of any transfer option, the "native"
string encoding is used.
>I'm not sure that the WG *really* agreed to swap "string-based" for
>"native". But I could be wrong. I suppose it means that syntaxes may be
>defined with _no_ native encoding.
Exactly, as RFC 2252 did for a number of syntaxes when it
said "no string representation is defined" (a representation
is an encoding).
>And I believe this is where people
>start diverging in terms of what is to be encoded when ;binary is not
>specified (or if it's just illegal).
I think we need to make it exceedingly clear that ;binary
indicates binary transfer and binary transfer can only
be used where indicated.
>It seems more flexible to me to allow many encodings, and distinguish a
>single encoding as native.
I think we can allow multiple encodings where one is
distinguished by the lack of any transfer option (the
"native") and others are distinguished by a transfer
option (such as "binary").
Now, I think where the confusion comes in is when
a client requests the native encoding, is it allowed
to get in return values in another encoding (as would
be indicated in the response by a presence of an
transfer option). I argue no.
Consider a client which ask for "foo;bar" and gets back "foo;bar"
where it has no knowledge of what "bar" is. How is the
client to treat "foo;bar"? If we allow a server to use
non-native transfer encodings when not requested, then "bar"
could be a transfer option. This means a client cannot do
anything with "foo;bar" unless it knows what "bar" is. That's
bad.
Now, consider "binary". A general purpose client which asks
for "foo" cannot be expected to be able to know that "foo;binary"
indicates an alternative encoding. To it, it appears as
if ;binary is a tagging option!
Hence, for interoperability sake, I believe we need to
REQUIRE that servers only return values in the requested
transfer encoding.
Kurt