[squeak-dev] Fixing SecureHashAlgorithm without plugins
Levente Uzonyi
leves at caesar.elte.hu
Thu May 19 08:51:12 UTC 2016
Hi Tim,
I made a workaround using #adoptInstance: instead of copying in
System-ul.831. Hopefully you have one of the primitives (160, 115) it uses
implemented.
I think it would be worth moving the fallback code from Integer down to
LargePositiveInteger, because that way SmallInteger receivers would
signal DNU instead of 'You can''t store in a SmallInteger'.
Levente
On Thu, 19 May 2016, timfelgentreff wrote:
> Hi,
>
> we're running the fallback code for SecureHashAlgorithm,
> LargePositiveInteger, and lots of the optional primitives. In the fallback
> code of SecureHashAlgorithm>>finalHash there is a call that looks like this:
>
> (LargePositiveInteger new: result size)
> replaceFrom: 1
> to: result size
> with: result
> startingAt: 1;
> normalize
>
> Here, result is a ByteArray. The replaceFrom:to:with:startingAt: goes to
> call primitive 105, which is marked as optional in the comment, so we do not
> implement it. However, the fallback code in
> Integer>>replaceFrom:to:with:startingAt: sends digitAt: to the replacement
> object, and ByteArray doesn't understand that message.
>
> Clearly the fallback code behaves differently from the primitive.
>
> 1) One way to fix it would be to check the object type in the fallback code.
> If it is a byte object, we simply use at: (which is the same as digitAt: for
> Large*Integer).
>
> 2) Another fix is to add digitAt: to ByteArray. This feels very wrong to me.
>
> 3) Alternatively, we might say that calling replaceFrom:to:with:startingAt:
> on an integer with any byte object is illegal. In that case, we could
> instead fix the fallback code in SecureHashAlgorithm>>finalHash to do this
> in the end:
>
> LargePositiveInteger adoptInstance: result.
> ^ result normalize
>
> This will fix the problem, but the fallback code will still be inconsistent
> with the primitive.
>
> I'm torn between 1 and 3, so what do you say?
>
> Cheers,
> Tim
>
>
>
> --
> View this message in context: http://forum.world.st/Fixing-SecureHashAlgorithm-without-plugins-tp4895951.html
> Sent from the Squeak - Dev mailing list archive at Nabble.com.
>
>
More information about the Squeak-dev
mailing list
|