From 60ff8c00aa31f8a31dbc40f422947720d2942d6d Mon Sep 17 00:00:00 2001 From: Alexander Iljin Date: Thu, 2 Mar 2017 02:17:14 +0300 Subject: [PATCH] checksums.sodium: implement optional keying --- extra/checksums/sodium/sodium.factor | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/extra/checksums/sodium/sodium.factor b/extra/checksums/sodium/sodium.factor index 3fbcabde78..cbf124c450 100644 --- a/extra/checksums/sodium/sodium.factor +++ b/extra/checksums/sodium/sodium.factor @@ -4,7 +4,10 @@ USING: accessors alien byte-arrays checksums checksums.common destructors kernel math sequences sodium sodium.ffi ; IN: checksums.sodium -TUPLE: sodium-checksum { output-size fixnum } ; +TUPLE: sodium-checksum + { output-size fixnum } + { key maybe{ byte-array } } ; + INSTANCE: sodium-checksum block-checksum C: sodium-checksum @@ -18,10 +21,11 @@ TUPLE: sodium-state < disposable PRIVATE> M: sodium-checksum initialize-checksum-state - output-size>> sodium-state new-disposable swap >>output-size + [ key>> ] [ output-size>> ] bi + sodium-state new-disposable swap >>output-size crypto_generichash_statebytes sodium_malloc >>state [ - [ state>> ] [ drop f 0 ] [ output-size>> ] tri + [ state>> ] [ drop swap dup length ] [ output-size>> ] tri crypto_generichash_init check0 ] keep ;