This works on that machine:

   OPENSSL=: '/lib/x86_64-linux-gnu/libssl.so.1.0.0'
   sslSha256 =: (IFWIN {:: ' SHA256 > + x *c x *c';'SHA256 > x *c x
*c')  ssl  NB. SHA256 i *c l *c' ssl
   s256=: 3 : 0
      sslSha256 (y);(#y);md=. 32#' '
      md
   )
   hexhash =: ( [: ,@:hfd a.i.])@:

   s256 hexhash 'The quick brown fox jumps over the lazy dog'
d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592

However, if I try
   OPENSSL=:'libssl.so'
   sslSha256 =: (IFWIN {:: ' SHA256 > + x *c x *c';'SHA256 > x *c x
*c')  ssl  NB. SHA256 i *c l *c' ssl
   s256 hexhash 'The quick brown fox jumps over the lazy dog'
|domain error: cd

Similarly:
   OPENSSL=:'/usr/lib/libssl.so'
   sslSha256 =: (IFWIN {:: ' SHA256 > + x *c x *c';'SHA256 > x *c x
*c')  ssl  NB. SHA256 i *c l *c' ssl
   s256 hexhash 'The quick brown fox jumps over the lazy dog'
|domain error: cd

Speaking more generally, the motivation behind having the very
specific /lib/x86_64-linux-gnu/libssl.so.1.0.0 is so that the 64 bit
code and the 32 bit code can coexist, and the reason for not
supporting the more generic /usr/lib/libssl.so is so that there's a
clean separation between these two mechanisms. It's a bit ugly, but so
is the underlying cpu architecture.

Thanks,

-- 
Raul


On Sat, Sep 6, 2014 at 12:49 PM, 'Pascal Jasmin' via Programming
<programm...@jsoftware.com> wrote:
> sorry about domain error, fixed on wiki, changing line to:
>
> OPENSSL =: sslp , (IFIOS + (;: 'Win Linux Android Darwin') i. <UNAME_z_) pick 
> 'libeay32.dll '; (2 $ <'libssl.so '),  (2 $ <'libssl.dylib ')
>
> basically, OPENSSL should be set to: (based on your distribution)
>
>    OPENSSL
> /lib/x86_64-linux-gnu/libssl.so.1.0.0
>
> my understanding of linux is that libssl.so will find the latest version.
> No idea how standard '/lib/x86_64-linux-gnu/' is, but that is what you want 
> assigned in the sslp =: line.  Perhaps you want to also add an IF64 line for 
> your other system
>
>
> ----- Original Message -----
> From: Raul Miller <rauldmil...@gmail.com>
> To: Programming forum <programm...@jsoftware.com>
> Cc:
> Sent: Saturday, September 6, 2014 12:12 PM
> Subject: Re: [Jprogramming] md5 is not md5
>
>    IFIOS
> 0
>    UNAME_z_
> Linux
>    sslp =: IFWIN pick '/usr/lib/';'D:\OpenSSL-Win64\bin\'
>    sslp
> /usr/lib/
>
> Looking closer, I'm thinking you probably want
> /lib/x86_64-linux-gnu/libssl.so.1.0.0 rather than /usr/lib/libssl.so
> (which does not exist).
>
> That said, the domain error is because you are trying to compute this result:
>
>    '/usr/lib/',2$<'libssl.so'
>
> Thanks,
>
> --
> Raul
>
> On Sat, Sep 6, 2014 at 12:02 PM, 'Pascal Jasmin' via Programming
> <programm...@jsoftware.com> wrote:
>> what is sslp defined as?
>>
>> Is it possible IFIOS is not defined?  or less likely UNAME_z_?
>>
>>
>> ----- Original Message -----
>> From: Raul Miller <rauldmil...@gmail.com>
>> To: Programming forum <programm...@jsoftware.com>
>> Cc:
>> Sent: Saturday, September 6, 2014 11:57 AM
>> Subject: Re: [Jprogramming] md5 is not md5
>>
>> Here's what happens if I use that code and only extract hexhash from
>> the top (instead of simply incorporating both blocks of code):
>>
>>    s256 hexhash 'The quick brown fox jumps over the lazy dog'
>> |value error: sslSha256
>> |       sslSha256(y);(#y);md=.32#' '
>>
>> So, ok, what's wrong with sslSha256?
>>
>>    sslSha256
>> |value error: sslSha256
>>    sslSha256 =: (IFWIN {:: ' SHA256 > + x *c x *c';'SHA256 > x *c x
>> *c')  ssl  NB. SHA256 i *c l *c' ssl
>> |value error: OPENSSL
>> |   (    OPENSSL,m)&cd
>>
>> So, ok, what's wrong with OPENSSL?
>>
>>    OPENSSL =: sslp , (IFIOS + (;: 'Win Linux Android Darwin') i.
>> <UNAME_z_) pick 'libeay32.dll '; (2 $ <'libssl.so ');  (2 $
>> <'libssl.dylib ')
>> |domain error
>> |   OPENSSL=:sslp    ,(IFIOS+(;:'Win Linux Android
>> Darwin')i.<UNAME_z_)pick'libeay32.dll ';(2$<'libssl.so
>> ');(2$<'libssl.dylib ')
>>
>> In other words, I was just copying and pasting your code into
>> jconsole, rather than defining a script and attempting to debug it.
>>
>> I recall doing that earlier and finding an issue with libssl which I
>> was not prepared to deal with.
>>
>> Thanks,
>>
>> --
>> Raul
>>
>> On Sat, Sep 6, 2014 at 11:52 AM, 'Pascal Jasmin' via Programming
>> <programm...@jsoftware.com> wrote:
>>> You did not go far enough down the page :P  CryptAcquireContext is only 
>>> used in the MSFT binding not openssl binding
>>>
>>>
>>> ----- Original Message -----
>>> From: Raul Miller <rauldmil...@gmail.com>
>>> To: Programming forum <programm...@jsoftware.com>
>>> Cc:
>>> Sent: Saturday, September 6, 2014 11:49 AM
>>> Subject: Re: [Jprogramming] md5 is not md5
>>>
>>> I used the code from the bottom of the page.
>>>
>>> Quite possibly I should have used it differently, but that's a different 
>>> issue.
>>>
>>> Thanks,
>>>
>>> --
>>> Raul
>>>
>>>
>>> On Sat, Sep 6, 2014 at 11:46 AM, 'Pascal Jasmin' via Programming
>>> <programm...@jsoftware.com> wrote:
>>>> You are using the wrong code.  That is indeed windows specific bindings.  
>>>> The openssl bindings are at the bottom of the page.  Though you may want 
>>>> to pick up hexhash definition from the top section.
>>>>
>>>>
>>>>
>>>>
>>>> ----- Original Message -----
>>>> From: Raul Miller <rauldmil...@gmail.com>
>>>> To: Programming forum <programm...@jsoftware.com>
>>>> Cc:
>>>> Sent: Saturday, September 6, 2014 11:41 AM
>>>> Subject: Re: [Jprogramming] md5 is not md5
>>>>
>>>> I tried your code at
>>>> http://www.jsoftware.com/jwiki/PascalJasmin/SHA%201%2C%202%20and%20MD5%20for%20windows
>>>>
>>>>    sha256 hexhash 'The quick brown fox jumps over the lazy dog'
>>>> |domain error: cd
>>>> |       
>>>> CryptAcquireContext(aProv=.,_1);(<0);(<0);PROV_RSA_AES;CRYPT_VERIFYCONTEXT
>>>>
>>>> Meanwhile, what I have works for me.
>>>>
>>>> Specifically, I built libmd5.so using
>>>> https://github.com/rdm/libmd5.so, copied it into the directory
>>>> /home/ubuntu/bin/ and then used, from in J:
>>>>
>>>> md5raw=: '/home/ubuntu/bin/libmd5-64.so MD5String > l *c l'&(15!:0)@(; #)
>>>> md5=: 3 :',tolower hfd a.i. 15!:1 (md5raw y),0 16 2'
>>>>
>>>> Now... since I need both 32 bit J (to parse xml using xml/sax -
>>>> apparently that only works on 32 bit j602) and 64 bit J (to deal with
>>>> more data than will fit in a 32 bit process), I'm having to have two
>>>> copies of libmd5.so - one for each instance of J. But I can live with
>>>> that.
>>>>
>>>> Thanks,
>>>>
>>>> --
>>>> Raul
>>>>
>>>>
>>>> On Sat, Sep 6, 2014 at 11:23 AM, 'Pascal Jasmin' via Programming
>>>> <programm...@jsoftware.com> wrote:
>>>>> the code was tested at one point on mac.  There is an attempt in the 
>>>>> definitions (at bottom of page only) to link on linux.  assumes 
>>>>> /usr/lib/libssl.so .  Should work? or few changes needed to work on linux?
>>>>>
>>>>>
>>>>> ----- Original Message -----
>>>>> From: Raul Miller <rauldmil...@gmail.com>
>>>>> To: Programming forum <programm...@jsoftware.com>
>>>>> Cc:
>>>>> Sent: Saturday, September 6, 2014 11:11 AM
>>>>> Subject: Re: [Jprogramming] md5 is not md5
>>>>>
>>>>> I can't use your implementation, since I'm not running this on windows.
>>>>>
>>>>> That said, I've got a fix for my code.
>>>>>
>>>>> That said, I do not have a fix for the portable code in convert/misc/md5.
>>>>>
>>>>> The first thing which would need to be fixed there are the uses of 32
>>>>> b. and 33 b. (in the definitions of sh_pcrypt_ and rot_pcrypt_) but
>>>>> oddly enough that does not seem to be  sufficient. It's not obvious to
>>>>> me what else needs to be fixed, and right now I am feeling too
>>>>> impatient to isolate the problem.
>>>>>
>>>>> Thanks,
>>>>>
>>>>> --
>>>>> Raul
>>>>>
>>>>>
>>>>> On Sat, Sep 6, 2014 at 10:55 AM, 'Pascal Jasmin' via Programming
>>>>> <programm...@jsoftware.com> wrote:
>>>>>> It was written and tested for 32 bits.  J7-64 also gives the wrong 
>>>>>> answer.
>>>>>>
>>>>>> At the bottom of this page there are openssl bindings to similar hashes. 
>>>>>>  
>>>>>> http://www.jsoftware.com/jwiki/PascalJasmin/SHA%201%2C%202%20and%20MD5%20for%20windows
>>>>>>
>>>>>> all the bound hashes are the same speed when called, but I added an md5 
>>>>>> implementation this morning.  IIRC it is over 1000 times faster than the 
>>>>>> J code.
>>>>>>
>>>>>> I possibly made the unpopular design decision to split out the 
>>>>>> formatting of the hash and keep it raw binary.  There is a 5x 
>>>>>> performance benefit for doing so.
>>>>>>
>>>>>> the fastest conversion (but takes more space than binary) is
>>>>>>
>>>>>>   listhash =: (a. i. ])@:
>>>>>>
>>>>>> or:
>>>>>> a. i.  md5 'example'
>>>>>>
>>>>>> If you are having any problems with the library, the source is likely in 
>>>>>> the first 3 lines.  I didn't test with 32 bits, but any problems there 
>>>>>> are likely solveable.
>>>>>>
>>>>>>
>>>>>> ----- Original Message -----
>>>>>> From: Raul Miller <rauldmil...@gmail.com>
>>>>>> To: Programming forum <programm...@jsoftware.com>
>>>>>> Cc:
>>>>>> Sent: Saturday, September 6, 2014 9:10 AM
>>>>>> Subject: [Jprogramming] md5 is not md5
>>>>>>
>>>>>> j602:
>>>>>>
>>>>>>    load'convert/misc/md5'
>>>>>>    md5 'example'
>>>>>> 1a79a4d60de6718e8e5b326e338ae533
>>>>>>
>>>>>> j64-802:
>>>>>>
>>>>>>    load'convert/misc/md5'
>>>>>>    md5 'example'
>>>>>> 64a9df64d8defee229d86709a425ea7a
>>>>>>
>>>>>> This is a problem...
>>>>>>
>>>>>> ==
>>>>>> Raul
>>>>>> ----------------------------------------------------------------------
>>>>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>
>>
>>
>>>>
>>>>
>>>>
>>>>>
>>>>>
>>>>>
>>>>>>
>>>>>> ----------------------------------------------------------------------
>>>>>> For information about J forums see http://www.jsoftware.com/forums.htm
>
>
>
>>>
>>>
>>>
>>>>> ----------------------------------------------------------------------
>>>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>>>>
>>>>> ----------------------------------------------------------------------
>>>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>>> ----------------------------------------------------------------------
>>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>>>
>>>> ----------------------------------------------------------------------
>>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>> ----------------------------------------------------------------------
>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>>
>>> ----------------------------------------------------------------------
>>> For information about J forums see http://www.jsoftware.com/forums.htm
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
>>
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to