On 01/22/2016 12:29 PM, =JeffH wrote:
[ fixed pitch font advised here ]
the below is corrected to use "byte count" rather than "index" or "indicies"
(and to ditch the tabs)..
> On 01/22/2016 09:42 AM, =JeffH wrote:
> > [ resending from different account - my work addr ends up in spam
> > bucket for many it seems ]
> >
> > On 1/20/16, 11:01 AM, "Benjamin Kaduk" <bka...@akamai.com> wrote:
> > >On 01/20/2016 12:47 PM, Hodges, Jeff wrote:
> > >> On 1/13/16, 12:53 PM, "Benjamin Kaduk" <bka...@akamai.com> wrote:
> > >>> On 01/13/2016 02:44 PM, Jong-Shian Wu wrote:
> > >>>> I have a question about the even-vs-odd restrictions on the
> > length of
> > >>>> a valid variable-length vector defined in TLS specification after
> > >>>> reading the section 4.3 of RFC 5246 [1] which states that:
> > >>>> "The length of an encoded vector must be an even multiple of the
> > >>>>length
> > >>>> of a single element (for example, a 17-byte vector of uint16
> > would be
> > >>>> illegal)."
> > >>>>
> > >>> It means "whole-number" as opposed to fractional, i.e., there should
> > >>>not
> > >>> be unused "junk bytes" at the end.
> > >> In case it's helpful, here's a suggested re-write of that quoted
> > >>sentence
> > >> above..
> > >>
> > >> The length of an encoded variable-length vector must be an
> > >> exact multiple of the length of a single element. For example,
> > >> an encoded 17-byte vector of uint16 would be illegal, and an
> > >> encoded variable-length vector of four 32 byte elements,
> > >> having a ceiling of 2^16-1, will be 130 bytes long overall
> > >> (2 byte length field followed by 128 bytes of data).
> > >
> > >Wouldn't the ceiling more properly be 2^16-4 in that case?
> >
> > hm, I'm not sure -- what would be the rationale? The exact multiple
> > criteria? but 2^16 / 32 = 2048 while (2^16-4) / 32 = 2047.875
>
> Ah, I seem to have conflated bits and bytes due to reading too quickly
> and should have said (2^16-32), as Ilari alluded to with "or rounding
> thereof to integral multiple of
> elements".
hm, but in this case it seems that a variable-length vector declared with a
length range of <0..2^16-1> would exactly accommodate up to 2048 32-byte
elements..
opaque Foo[32] ;
Foo fooSequence<0..2^16-1>; /* will accommodate up to 2048
Foo instances */
..because it has a zero-based byte count, as in this example..
opaque Array<0..2^2-1> ; /* should accommodate
2^2 = 4 1-byte elements */
/*
Array with 4
elements in memory: [ xx xx xx xx ]
byte count (hex): 0 1 2 3 3 = 2^2-1
byte count (binary): 00 01 10 11
*/
..yes? or am I missing something?
thanks,
=JeffH
_______________________________________________
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls