[squeak-dev] DoubleWordArray broken in Pharo

Levente Uzonyi leves at caesar.elte.hu
Sun Mar 29 15:42:42 UTC 2020


Thanks!


Levente

On Sat, 28 Mar 2020, Robert wrote:

> I just rolled it all back. hashing-rww.24 and HashingTests-rww.2 are
> once again the latest versions.
>
> k, r
>
> On 3/28/20 12:14 PM, Levente Uzonyi wrote:
>> Hi Robert,
>>
>> Well, I just asked you not to do it. It's not worth it.
>>
>>
>> Levente
>>
>> On Sat, 28 Mar 2020, Robert wrote:
>>
>>> 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
>>>
>>>
> -- 
> Kindly,
> Robert
>
>
>


More information about the Squeak-dev mailing list