20 lines
901 B
Clojure
20 lines
901 B
Clojure
(ns babashka.java-security-test
|
|
(:require
|
|
[babashka.test-utils :as test-utils]
|
|
[clojure.edn :as edn]
|
|
[clojure.test :as test :refer [deftest is]]))
|
|
|
|
(defn bb [expr]
|
|
(edn/read-string (apply test-utils/bb nil [(str expr)])))
|
|
|
|
(defn signature [algo]
|
|
(clojure.walk/postwalk-replace {::algo algo}
|
|
'(defn signature [^String s]
|
|
(let [algorithm (java.security.MessageDigest/getInstance ::algo)
|
|
digest (.digest algorithm (.getBytes s))]
|
|
(format "%032x" (java.math.BigInteger. 1 digest))))))
|
|
|
|
(deftest java-security-test
|
|
(is (= "49f68a5c8493ec2c0bf489821c21fc3b" (bb (list 'do (signature "MD5") '(signature "hi")))))
|
|
(is (= "c22b5f9178342609428d6f51b2c5af4c0bde6a42" (bb (list 'do (signature "SHA-1") '(signature "hi")))))
|
|
(is (= "8f434346648f6b96df89dda901c5176b10a6d83961dd3c1ac88b59b2dc327aa4" (bb (list 'do (signature "SHA-256") '(signature "hi"))))))
|