[squeak-dev] DoubleWordArray broken in Pharo

Robert robert.withers at pm.me
Sat Mar 28 16:25:09 UTC 2020


I had already done the work when I saw your post here. I may rewind.

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