[squeak-dev] DoubleWordArray broken in Pharo

Robert robert.withers at pm.me
Sat Mar 28 16:10:08 UTC 2020


Hi Levente,

Squeak...

I went ahead and split off the plugin hashing code and loaded with and without in Squeak. #CryptoGreen. This loads it all. The specific versions for Squeak are below the Pharo section. Note: if you loaded the hashing plugins support then remove it the HashFunction class>>#newHash methods are ripped away by the plugin code. So if you load hashing plugins then remove it you will need to reload the CryptographyHashing package for green.

Installer ss
    project: 'Cryptography';
    install: 'ProCrypto-1-1-1';
    install: 'ProCryptoTests-1-1-1';
    install: 'SSLLoader'.

Pharo...

Here is a script to load all packages in Pharo, without Hashing plugins support. Unfortunately there are many errors: red and yellow. :( Crypto used to run on Pharo. Sad.

Gofer new squeaksource: 'Registers'; package: 'Registers-Core'; load.
Gofer new squeaksource: 'Cryptography'; package: 'CryptographyCore'; load.
Gofer new squeaksource: 'Cryptography'; package: 'CryptographyHashing'; load.
Gofer new squeaksource: 'Cryptography'; package: 'CryptographyASN1'; load.
Gofer new squeaksource: 'Cryptography'; package: 'CryptographyRandom'; load.
Gofer new squeaksource: 'Cryptography'; package: 'CryptographyCiphers'; load.
Gofer new squeaksource: 'Cryptography'; package: 'CryptographySignatures'; load.
Gofer new squeaksource: 'Cryptography'; package: 'CryptographyKeyExchange'; load.
Gofer new squeaksource: 'Cryptography'; package: 'CryptographyArchive'; load.
Gofer new squeaksource: 'Cryptography'; package: 'CryptographyX509'; load.
Gofer new squeaksource: 'Registers'; package: 'Registers-Tests'; load.
Gofer new squeaksource: 'Cryptography'; package: 'CryptographyCoreTests'; load.
Gofer new squeaksource: 'Cryptography'; package: 'CryptographyHashingTests'; load.
Gofer new squeaksource: 'Cryptography'; package: 'CryptographyASN1Tests'; load.
Gofer new squeaksource: 'Cryptography'; package: 'CryptographyRandomTests'; load.
Gofer new squeaksource: 'Cryptography'; package: 'CryptographyCiphersTests'; load.
Gofer new squeaksource: 'Cryptography'; package: 'CryptographySignaturesTests'; load.
Gofer new squeaksource: 'Cryptography'; package: 'CryptographyKeyExchangeTests'; load.
Gofer new squeaksource: 'Cryptography'; package: 'CryptographyArchiveTests'; load.
Gofer new squeaksource: 'Cryptography'; package: 'CryptographyX509Tests'; load.
Gofer new squeaksource: 'Cryptography'; package: 'ThunkStack'; load.
Gofer new squeaksource: 'Cryptography'; package: 'ParrotTalk'; load.

Squeak versions...

Here are the versions, in Squeak, without SSL:
Installer ss project: 'Registers';
    install: 'Registers-Core-ul.1'.
Installer ss project: 'Cryptography';
    install: 'CryptographyCore-ul.7';
    install: 'CryptographyHashing-rww.26';
    install: 'CryptographyHashingPluginSupport-rww.1';
    install: 'CryptographyASN1-rww.7';
    install: 'CryptographyRandom-ul.13';
    install: 'CryptographyCiphers-rww.20';
    install: 'CryptographySignatures-ul.17';
    install: 'CryptographyKeyExchange-rww.14';
    install: 'CryptographyArchive-ul.18';
    install: 'CryptographyX509-ul.15'.
Installer ss project: 'Registers';
    install: 'Registers-Tests-ul.1'.
Installer ss project: 'Cryptography';
    install: 'CryptographyCoreTests-rww.1';
    install: 'CryptographyHashingTests-rww.3';
    install: 'CryptographyHashingPluginSupportTests-rww.1';
    install: 'CryptographyASN1Tests-rww.1';
    install: 'CryptographyRandomTests-rww.1';
    install: 'CryptographyCiphersTests-rww.1';
    install: 'CryptographySignaturesTests-rww.1';
    install: 'CryptographyKeyExchangeTests-rww.1';
    install: 'CryptographyArchiveTests-rww.1';
    install: 'CryptographyX509Tests-rww.1'.
Installer ss project: 'Cryptography';
    install: 'ThunkStack-rww.12';
    install: 'ParrotTalk-rww.48'.

On 3/28/20 11:54 AM, Levente Uzonyi wrote:

> Hi Robert,
>
> Please don't mess up the code just because of Pharo. They'll eventually
> fix DoubleWordArray, but that doesn't mean the code will work at all on
> Pharo.
>
> Levente
>
> On Sat, 28 Mar 2020, Robert wrote:
>
>> Hey Levente,
>>
>> In order to get Crypto running in Pharo, I will split the
>> HashingPluginSupport code into a separate package, which Pharo will not
>> load, but Squeak will.
>>
>> k, r
>>
>> On 3/28/20 10:26 AM, Robert wrote:
>>
>>> On 3/28/20 10:16 AM, Levente Uzonyi wrote:
>>>
>>>> Hi Robert,
>>>>
>>>> No, it's not a VM bug. My analysis I sent to you earlier is correct. It's
>>>> that in Pharo DoubleWordArray is a variableWordSubclass instead of a
>>>> variableDoubleWordSubclass. The latter is not available in Pharo.
>>>> Here's the link to the issue they created based on my analysis you sent
>>>> to them:
>>>> https://github.com/pharo-project/pharo/issues/5956
>>>
>>> Alright, I shared this analysis with Pharo's Discord channel. I must
>>> have missed the discussion of the #variableDoubleWordSubclass:.
>>>
>>>> In theory, yes, it would be possible to rewrite SHA-512 and its related
>>>> hash functions to avoid using DoubleWordArray, but I see no value in doing
>>>> that.
>>>
>>> The value would be Crypto operational in Pharo. And all that follows
>>> from that (ParrotTalk, SSL, SSH, Signal, Raven). Is it possible for you
>>> to make these changes, please? I see this as more likely than Pharo
>>> accommodating #variableDoubleWordSubclass:. And other Smalltalks...
>>>
>>> k, r
>>>
>>>> Pharo simply failed to properly integrate DoubleWordArray. It's there but
>>>> it's disfunctional. Just wait until they fix it.
>>>>
>>>> Levente
>>>>
>>>> P.S.: This is pretty much off topic on squeak-dev.
>>>>
>>>> On Sat, 28 Mar 2020, Robert wrote:
>>>>
>>>>> Hey Levente,
>>>>>
>>>>> I dug a little deeper into the Pharo issue with Cryptography and it IS a VM issue, I think. Primitive 61 is failing in DoubleWordArray>>#at:put:. Pharo seems totally uninterested in fixing this so I wanted to ask you, is there any way Cryptography can avoid reliance on DoubleWordArray?
>>>>>
>>>>> Kindly,
>>>>> Robert
>>
>> --
>> Kindly,
>> Robert

--
Kindly,
Robert
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20200328/b0c66ad8/attachment-0001.html>


More information about the Squeak-dev mailing list