On 8 March 2018 at 12:22, Hernán Morales Durand <hernan.mora...@gmail.com> wrote:
> 2018-03-07 23:07 GMT-03:00 Ben Coman <b...@openinworld.com>: > > > > > > On 8 March 2018 at 02:38, Michael Forster <m...@forsterfamily.ca> wrote: > >> > >> On Fri, Mar 2, 2018 at 9:40 PM, Ben Coman <b...@openinworld.com> wrote: > >> [...] > >> > > >> > If that is the one available from the Pharo Catalog, when I tried it, > it > >> > used a different api than the libsodium library supplied by Ubuntu > >> > 16.04. > >> > > >> > It makes this call out... > >> > crypto_hash_sha512_ref() > >> > but Ubuntu libsodium library did not export that, but instead... > >> > crypto_hash_sha512() > >> > > >> > I failed to track down the implications of the "_ref", > >> > and at that time Crypto-Nacl did not supply a 64-bit library, > >> > so a single FFI matching the system supplied libsodium library was > >> > easier. > >> > Also as a minor policy, I prefer to use the system library than one > >> > compiled > >> > by a third-party. > >> > > >> > cheers -ben > >> [...] > >> > >> > >> Hi, > >> > >> Yes, I recommend using the OS/package-manager supplied libsodium > >> (based on https://github.com/jedisct1/libsodium). The downloads > >> provided on Tony's site were based on early commits that exported the > >> "_ref" functions instead: > >> > >> commit e144f9d40d5695b69306bde729d6d8adcd62b1c4 > >> Author: Frank Denis <git...@pureftpd.org> > >> Date: Mon Apr 22 16:30:31 2013 -0700 > >> > >> crypto_hash_sha(256|512) are the exported functions that have > >> to be exported. > >> _ref are implementations, that shouldn't be exported. > > > > > > Thanks for clarifying that. > > > > > >> > >> > >> To be useful, http://smalltalkhub.com/#!/~tonyg/Crypto-Nacl/ should be > >> updated to use a system-supplied libsodium. > > > > > > Or at least to the later api. In general there is some advantage in > > packaging the C-lib with the Smalltalk package > > for people experimenting with it the first time, to ensure the function > > prototypes match. But flipping into production > > may prefer the system library. Currently it seems awkward to switch > later to > > a system library since the library used is hard coded. > > Hi Ben, > > "system library" means it's pre-installed in some Linux distros? I installed a Debian 4.9.65-3+deb9u1 (2017-12-23) last week and > libsodium is not present. > For Linux, system libraries are not only pre-installed, but rather whatever is available in the default system repository, simply installed with a single command like... $ sudo apt-get install libsodium All such installed packages receive security updates by doing... $ sudo apt-get update $ sudo apt-get upgrade I use Windows and also isn't available by default. Unfortunately Windows lacks a standard repository with a broad range of open source packages installable with a single command. Here it makes more sense to auto-install some package. Perhaps a particular version from the project https://download.libsodium.org/libsodium/releases/ In any case, how do you ensure libsodium system lib matches your interface > code? > What do you do now if target has a different version? > Good question. I guess its unit tests and manual effort. The next question is whether its worth the effort. For a given production environment, you might take a hit every couple of years when you move distro-versions. For a more turnkey system suiting a broader range of new users, maybe downloading a particular version of libsodium from the project site is a better option. Checking just now i see the Ubuntu 16.04 LTS libsodium library is version 1.0.8... https://launchpad.net/ubuntu/xenial/+package/libsodium18 which actually is unsupported... https://download.libsodium.org/libsodium/releases/old/unsupported/ so perhaps downloading from the project site is a better option. cheers -ben P.S. Did you indicate Crypto-Nacl was being (or could be) updated to latest libsodium? If it could, and the auto-installed library was downloaded and sig-checked from the project site, I'd be interested in dropping my own hack and using Crypto-Nacl. > > How do others work around that? > > > > Perhaps it would be good to have the external library initialized into an > > instance variable of FFILIbrary, > > so a user-application can change the external C-library used without > > changing code in someone else's ffi-interface package. > > > > cheers -ben > > > > P.S. On the dream list would be a GUI for managing referenced external > > C-libraries, including browsing their exported functions. > > That would be really cool > > Hernán > >