<html><head></head><body>
    <p>Hi Levente,</p>
    <p><font size="+2"><b>Squeak...</b></font><br/>
    </p>
    <p>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.<br/>
    </p>
    <p>Installer ss<br/>
          project: 'Cryptography';<br/>
          install: 'ProCrypto-1-1-1';<br/>
          install: 'ProCryptoTests-1-1-1';<br/>
          install: 'SSLLoader'.</p>
    <p><font size="+2"><b>Pharo...</b></font></p>
    <p>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.</p>
    <p>Gofer new squeaksource: 'Registers'; package: 'Registers-Core';
      load.<br/>
      Gofer new squeaksource: 'Cryptography'; package:
      'CryptographyCore'; load.<br/>
      Gofer new squeaksource: 'Cryptography'; package:
      'CryptographyHashing'; load.<br/>
      Gofer new squeaksource: 'Cryptography'; package:
      'CryptographyASN1'; load.<br/>
      Gofer new squeaksource: 'Cryptography'; package:
      'CryptographyRandom'; load.<br/>
      Gofer new squeaksource: 'Cryptography'; package:
      'CryptographyCiphers'; load.<br/>
      Gofer new squeaksource: 'Cryptography'; package:
      'CryptographySignatures'; load.<br/>
      Gofer new squeaksource: 'Cryptography'; package:
      'CryptographyKeyExchange'; load.<br/>
      Gofer new squeaksource: 'Cryptography'; package:
      'CryptographyArchive'; load.<br/>
      Gofer new squeaksource: 'Cryptography'; package:
      'CryptographyX509'; load.<br/>
      Gofer new squeaksource: 'Registers'; package: 'Registers-Tests';
      load.<br/>
      Gofer new squeaksource: 'Cryptography'; package:
      'CryptographyCoreTests'; load.<br/>
      Gofer new squeaksource: 'Cryptography'; package:
      'CryptographyHashingTests'; load.<br/>
      Gofer new squeaksource: 'Cryptography'; package:
      'CryptographyASN1Tests'; load.<br/>
      Gofer new squeaksource: 'Cryptography'; package:
      'CryptographyRandomTests'; load.<br/>
      Gofer new squeaksource: 'Cryptography'; package:
      'CryptographyCiphersTests'; load.<br/>
      Gofer new squeaksource: 'Cryptography'; package:
      'CryptographySignaturesTests'; load.<br/>
      Gofer new squeaksource: 'Cryptography'; package:
      'CryptographyKeyExchangeTests'; load.<br/>
      Gofer new squeaksource: 'Cryptography'; package:
      'CryptographyArchiveTests'; load.<br/>
      Gofer new squeaksource: 'Cryptography'; package:
      'CryptographyX509Tests'; load.<br/>
      Gofer new squeaksource: 'Cryptography'; package: 'ThunkStack';
      load.<br/>
      Gofer new squeaksource: 'Cryptography'; package: 'ParrotTalk';
      load.<br/>
      <br/>
    </p>
    <p><b><font size="+2">Squeak versions...</font></b><br/>
    </p>
    <p>Here are the versions, in Squeak, without SSL:<br/>
      Installer ss project: 'Registers';<br/>
          install: 'Registers-Core-ul.1'.<br/>
      Installer ss project: 'Cryptography';<br/>
          install: 'CryptographyCore-ul.7';<br/>
          install: 'CryptographyHashing-rww.26';<br/>
          install: 'CryptographyHashingPluginSupport-rww.1';<br/>
          install: 'CryptographyASN1-rww.7';<br/>
          install: 'CryptographyRandom-ul.13';<br/>
          install: 'CryptographyCiphers-rww.20';<br/>
          install: 'CryptographySignatures-ul.17';<br/>
          install: 'CryptographyKeyExchange-rww.14';<br/>
          install: 'CryptographyArchive-ul.18';<br/>
          install: 'CryptographyX509-ul.15'.<br/>
      Installer ss project: 'Registers';<br/>
          install: 'Registers-Tests-ul.1'.<br/>
      Installer ss project: 'Cryptography';<br/>
          install: 'CryptographyCoreTests-rww.1';<br/>
          install: 'CryptographyHashingTests-rww.3';<br/>
          install: 'CryptographyHashingPluginSupportTests-rww.1';<br/>
          install: 'CryptographyASN1Tests-rww.1';<br/>
          install: 'CryptographyRandomTests-rww.1';<br/>
          install: 'CryptographyCiphersTests-rww.1';<br/>
          install: 'CryptographySignaturesTests-rww.1';<br/>
          install: 'CryptographyKeyExchangeTests-rww.1';<br/>
          install: 'CryptographyArchiveTests-rww.1';<br/>
          install: 'CryptographyX509Tests-rww.1'.<br/>
      Installer ss project: 'Cryptography';<br/>
          install: 'ThunkStack-rww.12';<br/>
          install: 'ParrotTalk-rww.48'.<br/>
      <br/>
    </p>
    <div class="moz-cite-prefix">On 3/28/20 11:54 AM, Levente Uzonyi
      wrote:<br/>
    </div>
    <blockquote type="cite" cite="mid:alpine.DEB.2.02.2003281654050.7090@login03.caesar.elte.hu">
      <pre class="moz-quote-pre" wrap="">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:

</pre>
      <blockquote type="cite">
        <pre class="moz-quote-pre" wrap="">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:
</pre>
        <blockquote type="cite">
          <pre class="moz-quote-pre" wrap="">On 3/28/20 10:16 AM, Levente Uzonyi wrote:
</pre>
          <blockquote type="cite">
            <pre class="moz-quote-pre" wrap="">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: <a class="moz-txt-link-freetext" href="https://github.com/pharo-project/pharo/issues/5956">https://github.com/pharo-project/pharo/issues/5956</a>
</pre>
          </blockquote>
          <pre class="moz-quote-pre" wrap="">Alright, I shared this analysis with Pharo's Discord channel. I must
have missed the discussion of the #variableDoubleWordSubclass:.

</pre>
          <blockquote type="cite">
            <pre class="moz-quote-pre" wrap="">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.
</pre>
          </blockquote>
          <pre class="moz-quote-pre" wrap="">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

</pre>
          <blockquote type="cite">
            <pre class="moz-quote-pre" wrap="">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:

</pre>
            <blockquote type="cite">
              <pre class="moz-quote-pre" wrap="">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


</pre>
            </blockquote>
          </blockquote>
        </blockquote>
        <pre class="moz-quote-pre" wrap="">--
Kindly,
Robert



</pre>
      </blockquote>
    </blockquote>
    <pre class="moz-signature" cols="72">-- 
Kindly,
Robert</pre>
  

</body></html>