[squeak-dev] DoubleWordArray broken in Pharo

Levente Uzonyi leves at caesar.elte.hu
Sat Mar 28 16:14:18 UTC 2020


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
> 
>


More information about the Squeak-dev mailing list