]> gitweb.factorcode.org Git - factor.git/commitdiff
checksums.sodium: implement optional keying
authorAlexander Iljin <ajsoft@yandex.ru>
Wed, 1 Mar 2017 23:17:14 +0000 (02:17 +0300)
committerJohn Benediktsson <mrjbq7@gmail.com>
Mon, 22 Jan 2018 17:26:16 +0000 (09:26 -0800)
extra/checksums/sodium/sodium.factor

index 3fbcabde782254ecca02b729540e98502ff7a8fa..cbf124c45090740da56dfeb988676a0351b26ed5 100644 (file)
@@ -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> 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 ;