]> gitweb.factorcode.org Git - factor.git/commitdiff
sodium: add sodium-base64>bin
authorAlexander Iljin <ajsoft@yandex.ru>
Mon, 27 Apr 2020 16:20:22 +0000 (18:20 +0200)
committerDoug Coleman <doug.coleman@gmail.com>
Sun, 10 May 2020 23:31:37 +0000 (18:31 -0500)
extra/sodium/sodium.factor

index ed374851ed7a2b6f7d5e51adad334db3a36a790e..2a7db1bb153216b0a17fe7f6b5ef48b531c9b3cd 100644 (file)
@@ -1,7 +1,8 @@
 ! Copyright (C) 2017 Alexander Ilin.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: byte-arrays init io.encodings.string io.encodings.utf8
-kernel math sequences sodium.ffi ;
+USING: alien.c-types alien.data byte-arrays init io.encodings.ascii
+io.encodings.string io.encodings.utf8 kernel locals math sequences
+sodium.ffi ;
 IN: sodium
 
 ERROR: sodium-init-fail ;
@@ -108,4 +109,10 @@ ERROR: sodium-malloc-error ;
         dup length [ box-message-buf dup rot ] keep
     ] 3dip crypto_box_open_easy check0 ;
 
+:: sodium-base64>bin ( string -- byte-array )
+    string length dup <byte-array> dup :> bin swap
+    string ascii encode dup length f 0 size_t <ref> dup :> bin-length f
+    sodium_base64_VARIANT_URLSAFE_NO_PADDING sodium_base642bin check0
+    bin bin-length size_t deref head ;
+
 [ sodium-init ] "sodium" add-startup-hook