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
cryptography@lists.squeakfoundation.org