On 11 December 2017 at 20:28, Pierce Ng <pierce@samadhiweb.com> wrote:
On Mon, Dec 11, 2017 at 12:46:59AM +0800, Ben Coman wrote:
> where the "EVP function provide a high level interface to OpenSSL
> cryptographic functions."

Hi Ben,

As it happened, over the weekend I implemented the Pharo wrappers for the
EVP_DigestSign* and EVP_DigestVerify* APIs. It is straightforward to add the
non-public key-using message digest functions, so I've just done it. Code
snippets:

�� | msg st c |
�� msg := 'Grumpy wizards make toxic brew for the evil Queen and Jack.'.
�� st := SHA256 hashMessage: msg asByteArray.
�� c := LcEvpSHA256 new hashMessage: msg asByteArray.
�� st = c
�� => true

Using Sven's example:

�� | msg st c |
�� key := ByteArray new: 32.
�� msg := 'Grumpy wizards make toxic brew for the evil Queen and Jack.'.
�� st := (HMAC on: SHA256) key: key; digestMessage: msg asByteArray.
�� c := (HMAC on: LcEvpSHA256) key: key; digestMessage: msg asByteArray.
�� st = c
�� => true

Code at http://smalltalkhub.com/#!/~PierceNg/OpenSSL-Pharo.

I've also added tests for SHA256 similar to the snippets above.�� I will add
SHA512 tests when I find the test vectors.

I don't about SHA512-only, but I found some HMACSHA512 test vectors��
at��https://tools.ietf.org/html/rfc4231.�� ��I've attached the first five tests I got��
working against LibSodium.����

��

��
��

In the next two weeks when I have some time off from work, I will attempt to
move the repo to GH. Meanwhile, I've added you as a contributor to the STH
repo if you'd like to hack on it.

thx.

cheers -ben