does SecureHashAlgorithm pad correctly?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

does SecureHashAlgorithm pad correctly?

Howard Stearns-3
The class comment for SecureHashAlgorithm says it implements the SHA
standard, but I'm not sure it's padding correctly.

My reading of the standard is that all messages -- including zero length
messages -- should be padded to 512 bit size in a certain way.

See section "4. Message Padding" of
http://www.itl.nist.gov/fipspubs/fip180-1.htm

My reading of the code is that it explicitly fails with an error for
zero length messages, and pads to 64 bit sizes.

Am I nuts?

--
Howard Stearns
AIM: qwaqHoward
Qwaq: +1-650-331-1437
office: +1-608-850-4482
mobile: +1-608-658-2419

Reply | Threaded
Open this post in threaded view
|

Re: does SecureHashAlgorithm pad correctly?

Rob Withers
Howard,

I think you are reading the code wrong.  In #processFinalBuffer:bitLength: a
final buffer of soze 64 BYTES is being created and populated.  That is 512
bits.  Both SecureHashAlgorithm, from the base image, and SHA1, from the
Cryptography Team Package are doing this.

Rob

----- Original Message -----
From: "Howard Stearns" <[hidden email]>
To: "The general-purpose Squeak developers list"
<[hidden email]>
Sent: Monday, October 29, 2007 2:05 PM
Subject: does SecureHashAlgorithm pad correctly?


> The class comment for SecureHashAlgorithm says it implements the SHA
> standard, but I'm not sure it's padding correctly.
>
> My reading of the standard is that all messages -- including zero length
> messages -- should be padded to 512 bit size in a certain way.
>
> See section "4. Message Padding" of
> http://www.itl.nist.gov/fipspubs/fip180-1.htm
>
> My reading of the code is that it explicitly fails with an error for zero
> length messages, and pads to 64 bit sizes.
>
> Am I nuts?
>
> --
> Howard Stearns
> AIM: qwaqHoward
> Qwaq: +1-650-331-1437
> office: +1-608-850-4482
> mobile: +1-608-658-2419
>
>


Reply | Threaded
Open this post in threaded view
|

Re: does SecureHashAlgorithm pad correctly?

Howard Stearns-3
And zero length messages? What should I get back?

Rob Withers wrote:

> Howard,
>
> I think you are reading the code wrong.  In
> #processFinalBuffer:bitLength: a final buffer of soze 64 BYTES is being
> created and populated.  That is 512 bits.  Both SecureHashAlgorithm,
> from the base image, and SHA1, from the Cryptography Team Package are
> doing this.
>
> Rob
>
> ----- Original Message ----- From: "Howard Stearns"
> <[hidden email]>
> To: "The general-purpose Squeak developers list"
> <[hidden email]>
> Sent: Monday, October 29, 2007 2:05 PM
> Subject: does SecureHashAlgorithm pad correctly?
>
>
>> The class comment for SecureHashAlgorithm says it implements the SHA
>> standard, but I'm not sure it's padding correctly.
>>
>> My reading of the standard is that all messages -- including zero
>> length messages -- should be padded to 512 bit size in a certain way.
>>
>> See section "4. Message Padding" of
>> http://www.itl.nist.gov/fipspubs/fip180-1.htm
>>
>> My reading of the code is that it explicitly fails with an error for
>> zero length messages, and pads to 64 bit sizes.
>>
>> Am I nuts?
>>
>> --
>> Howard Stearns
>> AIM: qwaqHoward
>> Qwaq: +1-650-331-1437
>> office: +1-608-850-4482
>> mobile: +1-608-658-2419
>>
>>
>
>

--
Howard Stearns
AIM: qwaqHoward
Qwaq: +1-650-331-1437
office: +1-608-850-4482
mobile: +1-608-658-2419

Reply | Threaded
Open this post in threaded view
|

Re: does SecureHashAlgorithm pad correctly?

Rob Withers
Oh, I see what you are saying now.  I got hung up on 64 bits vs bytes.

So I changed SHA1 to compute the final buffer and return it.  I get:
    'DA39A3EE5E6B4B0D3255BFEF95601890AFD80709'
as a result.  This matches http://en.wikipedia.org/wiki/SHA1:
SHA1("") = da39a3ee 5e6b4b0d 3255bfef 95601890 afd80709

Here is the code change I made in #hashStream:

 aPositionableStream atEnd ifTrue: [self processFinalBuffer: #() bitLength:
0].

instead of the error.

Rob

----- Original Message -----
From: "Howard Stearns" <[hidden email]>
To: "The general-purpose Squeak developers list"
<[hidden email]>
Sent: Monday, October 29, 2007 3:16 PM
Subject: Re: does SecureHashAlgorithm pad correctly?


> And zero length messages? What should I get back?
>
> Rob Withers wrote:
>> Howard,
>>
>> I think you are reading the code wrong.  In
>> #processFinalBuffer:bitLength: a final buffer of soze 64 BYTES is being
>> created and populated.  That is 512 bits.  Both SecureHashAlgorithm, from
>> the base image, and SHA1, from the Cryptography Team Package are doing
>> this.
>>
>> Rob
>>
>> ----- Original Message ----- From: "Howard Stearns"
>> <[hidden email]>
>> To: "The general-purpose Squeak developers list"
>> <[hidden email]>
>> Sent: Monday, October 29, 2007 2:05 PM
>> Subject: does SecureHashAlgorithm pad correctly?
>>
>>
>>> The class comment for SecureHashAlgorithm says it implements the SHA
>>> standard, but I'm not sure it's padding correctly.
>>>
>>> My reading of the standard is that all messages -- including zero length
>>> messages -- should be padded to 512 bit size in a certain way.
>>>
>>> See section "4. Message Padding" of
>>> http://www.itl.nist.gov/fipspubs/fip180-1.htm
>>>
>>> My reading of the code is that it explicitly fails with an error for
>>> zero length messages, and pads to 64 bit sizes.
>>>
>>> Am I nuts?
>>>
>>> --
>>> Howard Stearns
>>> AIM: qwaqHoward
>>> Qwaq: +1-650-331-1437
>>> office: +1-608-850-4482
>>> mobile: +1-608-658-2419
>>>
>>>
>>
>>
>
> --
> Howard Stearns
> AIM: qwaqHoward
> Qwaq: +1-650-331-1437
> office: +1-608-850-4482
> mobile: +1-608-658-2419
>
>


Reply | Threaded
Open this post in threaded view
|

Re: does SecureHashAlgorithm pad correctly?

Howard Stearns-3
That sounds right. Fits some other flotsam on the net.

Thanks, Rob!

-H

Rob Withers wrote:

> Oh, I see what you are saying now.  I got hung up on 64 bits vs bytes.
>
> So I changed SHA1 to compute the final buffer and return it.  I get:
>    'DA39A3EE5E6B4B0D3255BFEF95601890AFD80709'
> as a result.  This matches http://en.wikipedia.org/wiki/SHA1:
> SHA1("") = da39a3ee 5e6b4b0d 3255bfef 95601890 afd80709
>
> Here is the code change I made in #hashStream:
>
> aPositionableStream atEnd ifTrue: [self processFinalBuffer: #()
> bitLength: 0].
>
> instead of the error.
>
> Rob
>
> ----- Original Message ----- From: "Howard Stearns"
> <[hidden email]>
> To: "The general-purpose Squeak developers list"
> <[hidden email]>
> Sent: Monday, October 29, 2007 3:16 PM
> Subject: Re: does SecureHashAlgorithm pad correctly?
>
>
>> And zero length messages? What should I get back?
>>
>> Rob Withers wrote:
>>> Howard,
>>>
>>> I think you are reading the code wrong.  In
>>> #processFinalBuffer:bitLength: a final buffer of soze 64 BYTES is
>>> being created and populated.  That is 512 bits.  Both
>>> SecureHashAlgorithm, from the base image, and SHA1, from the
>>> Cryptography Team Package are doing this.
>>>
>>> Rob
>>>
>>> ----- Original Message ----- From: "Howard Stearns"
>>> <[hidden email]>
>>> To: "The general-purpose Squeak developers list"
>>> <[hidden email]>
>>> Sent: Monday, October 29, 2007 2:05 PM
>>> Subject: does SecureHashAlgorithm pad correctly?
>>>
>>>
>>>> The class comment for SecureHashAlgorithm says it implements the SHA
>>>> standard, but I'm not sure it's padding correctly.
>>>>
>>>> My reading of the standard is that all messages -- including zero
>>>> length messages -- should be padded to 512 bit size in a certain way.
>>>>
>>>> See section "4. Message Padding" of
>>>> http://www.itl.nist.gov/fipspubs/fip180-1.htm
>>>>
>>>> My reading of the code is that it explicitly fails with an error for
>>>> zero length messages, and pads to 64 bit sizes.
>>>>
>>>> Am I nuts?
>>>>
>>>> --
>>>> Howard Stearns
>>>> AIM: qwaqHoward
>>>> Qwaq: +1-650-331-1437
>>>> office: +1-608-850-4482
>>>> mobile: +1-608-658-2419
>>>>
>>>>
>>>
>>>
>>
>> --
>> Howard Stearns
>> AIM: qwaqHoward
>> Qwaq: +1-650-331-1437
>> office: +1-608-850-4482
>> mobile: +1-608-658-2419
>>
>>
>
>

--
Howard Stearns
AIM: qwaqHoward
Qwaq: +1-650-331-1437
office: +1-608-850-4482
mobile: +1-608-658-2419