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