On 30 Aug 2013, at 13:39, Marcus Denker <marcus.denker@inria.fr> wrote:
On Aug 30, 2013, at 1:35 PM, Esteban Lorenzano <estebanlm@gmail.com> wrote:
I'm not aware of such a change... this is probably an error/side effect of something else.
This is a side effect of the merging of the two nearly identical but duplicated SHA1 implementations in the imageâ¦
https://pharo.fogbugz.com/f/cases/5469/SHA1-duplicated-implementations
I want to wait for Max to respond/explain. But according to http://en.wikipedia.org/wiki/Sha1 "SHA-1 produces a 160-bit (20-byte) hash value. A SHA-1 hash value is typically expressed as a hexadecimal number, 40 digits long." The previous contract of returning a ByteArray of size 20 is more correct than an Integer, although both are mathematically equivalent. It is also very easy to send #hex to a ByteArray to get the most common human representation of such a hash.
Esteban
On Aug 29, 2013, at 3:05 PM, Sven Van Caekenberghe <sven@stfx.eu> wrote:
Max,
Why was the contract of SHA1>>hashStream: changed ?
It used to return a ByteArray like other HashFunction subclasses, now it returns an Integer. I see that you also changed the tests with this assumption.
MD5 hashMessage: 'foo'.
#[172 189 24 219 76 194 248 92 237 239 101 79 204 196 164 216]
SHA1 hashMessage: 'foo'.
68123873083688143418383284816464454849230703155
It broke Zinc-WebSockets in 3.0 and now I will have to do an ugly hack to make the code work on multiple Pharo versions.
Can you please explain ?
Sven