From 41733e58d677273150bfe02a12f12143bd0f33b8 Mon Sep 17 00:00:00 2001
From: Daniel Barlow <dan@telent.net>
Date: Wed, 28 Aug 2024 07:20:07 +0100
Subject: [PATCH] remove unused code, tidy string parsing

---
 pkgs/tangc/tangc.fnl | 18 +++++-------------
 1 file changed, 5 insertions(+), 13 deletions(-)

diff --git a/pkgs/tangc/tangc.fnl b/pkgs/tangc/tangc.fnl
index 8988800b..c21a3c91 100644
--- a/pkgs/tangc/tangc.fnl
+++ b/pkgs/tangc/tangc.fnl
@@ -13,23 +13,18 @@
     (pid status) (rshift (band status 0xff00) 8)
     (nil errno) (error (.. "waitpid: " errno))))
 
-(fn min [a b] (if (< a b) a b))
-
-(fn trace [s] (print :TRACE s) s)
-
 (fn write-all [fd str]
   (let [written (ll.write fd str)]
     (if (< written (# str))
         (write-all fd (string.sub str (+ written 1) -1)))))
 
-
 (fn jose [params inputstr]
   (let [env (ll.environ)
         (pid in out) (popen2 (os.getenv "JOSE_BIN") params env)]
-    ;(print "exec " (os.getenv "JOSE_BIN") (view params))
-    ;(print "writing")
+    ;; be careful if using this code for commands othert than jose: it
+    ;; may deadlock if we write more than 8k and the command doesn't
+    ;; read it.
     (when inputstr (write-all in inputstr))
-    ;(print :written)
     (ll.close in)
     (let [output
           (accumulate [o ""
@@ -64,7 +59,7 @@
 (fn jwe-dec [jwk ph undigested]
   (let [(exitcode plaintext)
         (jose ["jose" "jwe" "dec" "-k-" "-i-"]
-              (.. (json.encode jwk) ph undigested))]
+              (.. (json.encode jwk) ph "." undigested))]
     (if (= exitcode 0)
         plaintext
         (error (.. "Error calling jwe dec: " exitcode " / " plaintext )))))
@@ -94,13 +89,10 @@
                  "application/x-www-form-urlencoded"
                  body)))
 
-
 (fn run []
   (let [b64 (base64 :url)
         raw (: (io.input) :read "*a")
-        dot (string.find raw "." 1 true)
-        ph (string.sub raw 1 dot)
-        undigested (string.sub raw (+ 1 dot) -1)
+        (_ _ ph undigested) (string.find raw "(.-)%.(.+)")
         jwe (json.decode (b64:decode ph))
         { : srv : crv : clt : kid : url} (parse-jwe jwe)
         eph (jwk-generate crv)