|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: iSCSI: BASE64 and numerical values
On Sat, 18 May 2002, Julian Satran wrote:
> Yes for regular numerical values it makes sense. We will have to keep it
> for large numerical values used for cryptography. Julo
I realize I'm driving a semantic nit, but I don't think we should use
BASE64 for any "numeric" values, only "binary" ones. I believe we probably
agree on what we want, I'm just worried that if the wording isn't 100%
tight, the decode path can become a real mess (since we're supposed to be
liberal in what we accept :-).
I'd like to suggest we drop BASE64 from the text that mentions numerical
values. I really don't look forward to byteswapping a 256 or 512 bit
number as part of BASE64 decode. :-)
I'd also like to suggest that for encoding large binary values using
hexadecimal, we state that the hexadecimal representation is that of the
number in network byte order. i.e. if I have the five octets 02 45 78 ab
de, the hex constant is 0x024578abde. That makes the decode logic REAL
easy; grab two hex characters & convert to one octet. Repeat as needed.
Please note that this is not the output you'd get with something like
printf("0x%x", number) on a little-endian machine.
Thirdly, I'd like to suggest we drop decimal support from binary objects.
It too has the cumbersome byte-swapping issue that I started this thread
about, just in reverse. :-)
I realize that's a lot for one EMail. :-)
To try and be proactive about this, I'd like to suggest revised text for
section 4.1 (of course needs word-wrapping). For the definitions:
hex-constant: hexadecimal constant encoded as a string start-
ing with "0x" or "0X" followed by 1 or more digits or the
letters a, b, c, d, e, f, A, B, C, D, E and F. Hex-constants
are used to encode numerical values or binary strings. When
used to encode numerical values the excessive use of leading
0 digits is discouraged. When used to encode binary strings
hexadecimal constants must have an even number of digits,
and have an implicit byte-length that
includes 4 bits for every hexadecimal digit of the constant,
including leading zeroes (i.e., a hex-constant of n hexadeci-
mal digits has a byte-length of n/2). Additionally, when used
to encode binary strings, hexadecimal constants shall be
expressed in network byte order (i.e., the octet stream 02
45 78 ab de would be expressed as "0x024578abde").
decimal-constant: an unsigned decimal number - the digit 0 or a
string of 1 or more digits starting with a non-zero digit.
This encoding is not used for numerical values equal or
greater than 2**64.
base64-constant: base64 constant encoded as a string starting
with "0b" or "0B" followed by 1 or more digits or letters or
plus or slash or equal. The encoding is done according to
[RFC2045]. base64-constants are used to encode binary strings.
Base64-constants have an implicit byte-length that includes 6
bits for every character of the constant excluding trailing
equals (i.e., a base64-constant of n base64 characters
excluding the trailing equals and m trailing equals has a
byte-length of ((the integer part of) ((n+3)*3/4) - m).
regular-numerical-value : an unsigned integer less than 2**64
encoded as a decimal-constant, or hex constant.
large-numerical-value : an unsigned integer larger than or
equal to 2**64 encoded as a hex constant.
[no change for numerical-value or numerical-range]
binary-value : a binary string encoded as a hex-con-
stant or base64-constant. The length of the string is either
specified by the key definition or is implicit byte-length of
the encoded string.
[delete regualar-binary-value and large-binary-value since the distinction
is gone]
I don't see it explicitly mentioned anywhere, but I think all of the CHAP
(and SRP, but not sure) keys are large numericalal values, and the
kerberos and SPKM keys are binary values.
Also, I think the CHAP keys need the field length features of hexadecimal
binary strings, but they are numbers, not binary strings. Not sure how to
word that.
Take care,
Bill
Home Last updated: Mon May 20 22:18:32 2002 10156 messages in chronological order |