[Cryptography Team] [Vm-dev] Smalltalk code calling SHA2Plugin

Chris Muller ma.chris.m at gmail.com
Wed Jul 22 02:45:09 UTC 2020


> > What you referred to as "bloat" in the discussion about loading all crypto primitives or not.  After Robert had mentioned the size in K bytes, you'd mentioned you cared about the number of methods in classes, not so much
>
> Can you point me to that discussion?

It's the thread I mentioned in the top of this thread (subject line:
"SHA512 squeak implementation").  Sorry I wasn't able to get you the
direct link (why do we care about this?) because the site at
http://lists.squeakfoundation.org/mailman/listinfo is down.  If you
have your own mail archive, the unique sentence string you can search
for within that thread is, "By bloat I didn't mean that the size of
the package is too large."

> > their size in bytes.  To which I agree, although I think you take it a lot further than me (i.e., Time microsecondClockValue).
> >
> >       > basicNew initialize) to avoid the recursion?
> >
> >       That would do exactly what I do not want to do: #new would return an
> >       object whose class is not SHA256.
> >
> >
> > Okay, now I understand.  This gets back to one of our core differences in philosophy -- your greater concern over types vs. mine over API's.  You're okay with it for Strings (ByteString vs. WideString) and Numbers
> > (LargePositive.., LargeNegative..., etc.), and probably a few others.  But not SHA256.  IMO, letting different implementations with the same API be interchangeable is what leverages Smalltalk's late-binding power.
>
> Um, I don't remember ever saying I'm okay with anything like that. Can
> you give me a pointer where and when I did?

Well, I was just referring to things like I assume you've used String
streamContents: [ ...].  But, yes, it's an abstract class, so that's
different.

> The ByteString/WideString split was done before my time, but I'm sure the
> goal there was backwards compatibility. The comparison with SHA256 is not
> quite correct, because SHA256 is not an abstact class while String is.
>
> About "Numbers (LargePositive.., LargeNegative..., etc.)", you never send
> #new to any of those. You sometimes send #new: to LargePositiveInteger or
> LargeNegativeInteger, but  those are not abstract, and you want an
> instance of the class you sent #new: to. So, in that case #new: works as
> it should.

You're right.  It was just a question whether you thought the API
should guide or enforce the client into proper usage.  I got a little
zealous after seeing your plugin work.  The current factory we have is
fine.

 - Chris


More information about the Cryptography mailing list