2017-12-11 10:13 GMT-03:00 Hernán Morales Durand <hernan.mora...@gmail.com>:
> 2017-12-11 5:28 GMT-03:00 Ben Coman <b...@openinworld.com>:
>>
>>
>> On 11 December 2017 at 13:09, Ben Coman <b...@openinworld.com> wrote:
>>>
>>> 2017-12-10 6:01 GMT-03:00 Ben Coman <b...@openinworld.com>:
>>> > Can anyone recommend libraries (native Smalltalk or via FFI)
>>> > to do generate a HMAC-SHA512 ?
>>>
>>> On 11 December 2017 at 01:30, Hernán Morales Durand
>>> <hernan.mora...@gmail.com> wrote:
>>>>
>>>> Hi Ben,
>>>>
>>>> I would use NaCl: http://cr.yp.to/highspeed/coolnacl-20120725.pdf
>>>> which you can install from the Pharo Project Catalog in Pharo 6.x
>>>
>>>
>>> Thanks Henry.  That looks like path of least resistance.
>>
>>
>> Whoops, I meant thanks Hernán.
>>
>>
>>
>>>
>>>  I hit a stumbling block that took a short while to understand.
>>> The library binary downloaded specified by
>>> ConfigruationOfNacl>>platformLibraryUrl
>>> is  libsodium: ELF 32-bit LSB shared object
>>> whereas I'm using 64bit Linux.
>>
>>
>> btw, I discovered just now that FFILibrary>>unix64ModuleName
>> was introduced this year.  So presumably with the following
>> you could include both bit'ness libraries in the libsodium.so.gz
>> file specified in ConfigurationOfNacl >> platformLibraryUrl.
>>
>> FFILbrary subclass: #Nacl
>> instanceVariableNames: ''
>> classVariableNames: ''
>> package: 'Crypto-Nacl'
>>
>> Nacl >> unixModuleName
>>     ^ 'libsodium.so'
>>
>> Nacl >> unix64ModuleName
>>     ^ 'libsodium64.so'
>>
>> Nacl class >> apiXXX
>> ^ self ffiCall: #(void XXX())
>>                  module: Nacl
>>
>>
>
> Done. Thank you Ben.
>
> All tests passes in Windows, so I uploaded a new Configuration with
> updated dev version.
> Let me know any issues.
>

BTW you can install the dev version using:

Metacello new
    smalltalkhubUser: 'tonyg' project: 'Crypto-Nacl';
    configuration: 'Nacl';
    version: #development;
    load.


>>
>>
>>>
>>>
>>> I have the following system library preinstalled...
>>> /usr/lib/x86_64-linux-gnu/libsodium.so.18.0.1: ELF 64-bit LSB shared
>>> object
>>>
>>> However its api is slightly different.  Pharo Nacl makes this call out...
>>>    crypto_hash_sha512_ref()
>>>
>>> but the system library provides...
>>>     56: 0000000000014dc0   175 FUNC    GLOBAL DEFAULT   11
>>> crypto_hash_sha512_final
>>>     81: 0000000000014c40   384 FUNC    GLOBAL DEFAULT   11
>>> crypto_hash_sha512_update
>>>    154: 0000000000014bd0   106 FUNC    GLOBAL DEFAULT   11
>>> crypto_hash_sha512_init
>>>    233: 0000000000014e70   114 FUNC    GLOBAL DEFAULT   11
>>> crypto_hash_sha512
>>>    342: 0000000000012330     6 FUNC    GLOBAL DEFAULT   11
>>> crypto_hash_sha512_bytes
>>>    351: 0000000000012340     6 FUNC    GLOBAL DEFAULT   11
>>> crypto_hash_sha512_statebytes
>>>
>>> The canonical source doesn't seem to have the function
>>>
>>> https://github.com/jedisct1/libsodium/search?utf8=%E2%9C%93&q=+crypto_hash_sha512_ref
>>> so I'm curious where the "_ref" comes from.
>>>
>>> My options seem...
>>> * Compile a 64-bit libsodium from source which includes "_ref" functions.
>>> Where is such source?
>>>
>
> The official sources seem to be here:
> https://download.libsodium.org/libsodium/releases/
> I discovered that the version we use in the Pharo binding is old, so I
> will update to the latest version as next step.
>
>>> * Use the system libsodium and define an FFI callout just for the one
>>> function I need.
>>
>>
>> btw, I'm doing the latter for now as the immediate path of least resistance.
>> Thanks Hernan, for the tip on libsodium.
>>
>> cheers -ben
>
> Cheers
>
> Hernán

Reply via email to