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
Hi Robert,
Le sam. 28 mars 2020 à 13:44, Robert via Squeak-dev < squeak-dev@lists.squeakfoundation.org> a écrit :
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
What makes you think so? If you open an issue on github, provide a failing test case, then I see no reason why they would not fix it.
However, it might be that they are not interested at all in Cryptography package because they already forked it twice. The first fork was on SmalltalkHub, because they did not consider squeaksource as reliable (which was once not entirely false). Rather than collaborating, their primary reaction is always to fork. It avoids making trade offs, they don't like the IDEA of trade offs ;). They also don't want to depend too much on a something that they can't control, it's seen as a weakness. Then they re-forked to github using new Tonel format. The new fork is legitimated by the migration to new tools. So good luck if you want to sell them the updated package.
so I wanted to ask you, is there any way Cryptography can avoid reliance on DoubleWordArray?
Is it really worth it? IMO, no in the context I gave above!
If it's really important for you, try to have some fix integrated in Pharo.
Kindly,
Robert
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
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. 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
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
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
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
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
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
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
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
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
Hi Robert
On Sat, 28 Mar 2020, 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
Fixing DoubleWordArray in Pharo alone won't make the packages operational. Pharo is a moving target and it keeps breaking stuff all the time.
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...
I've attached a changeset. If you load it before the Cryptography packages, CryptographyHashing will work in Pharo 8 and in the current Pharo 9 alpha. Some tests will fail, because random strings are generated with the Random class, which is different in Squeak and Pharo but still, everything will work.
Levente
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
Thanks, I'll try it out.
On 3/28/20 12:12 PM, Levente Uzonyi wrote:
Hi Robert
On Sat, 28 Mar 2020, 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
Fixing DoubleWordArray in Pharo alone won't make the packages operational. Pharo is a moving target and it keeps breaking stuff all the time.
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...
I've attached a changeset. If you load it before the Cryptography packages, CryptographyHashing will work in Pharo 8 and in the current Pharo 9 alpha. Some tests will fail, because random strings are generated with the Random class, which is different in Squeak and Pharo but still, everything will work.
Levente
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
squeak-dev@lists.squeakfoundation.org