Add Security classes in order to be able to generate signatures (#261)
This commit is contained in:
parent
08ac36ebe1
commit
c8fd1c7931
3 changed files with 28 additions and 1 deletions
|
|
@ -58,6 +58,9 @@ Keep notes here about how adding libraries and classes to Babashka affects the b
|
|||
<!-- 2020/01/08, ..., 38.7mb / 11.3mb zipped -->
|
||||
<!-- Added: `clojure.data.xml`. Growth: 1.8mb / ... -->
|
||||
|
||||
2020/02/09: added java.lang.BigInteger and java.security.MessageDigest.
|
||||
39281972 - 39072764 = 209kb added.
|
||||
|
||||
2020/01/24, 43eef7075f9dac038d8d28a5ee4e49b6affd9864: 38.3mb, 11.1mb zipped
|
||||
Added hierarchies (derive, isa?, etc).
|
||||
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@
|
|||
java.lang.Process
|
||||
java.lang.ProcessBuilder
|
||||
java.lang.ProcessBuilder$Redirect
|
||||
java.math.BigInteger
|
||||
java.net.URI
|
||||
java.net.HttpURLConnection
|
||||
java.net.ServerSocket
|
||||
|
|
@ -62,6 +63,7 @@
|
|||
java.nio.file.attribute.FileTime
|
||||
java.nio.file.attribute.PosixFilePermission
|
||||
java.nio.file.attribute.PosixFilePermissions
|
||||
java.security.MessageDigest
|
||||
java.time.format.DateTimeFormatter
|
||||
java.time.Clock
|
||||
java.time.DateTimeException
|
||||
|
|
@ -189,7 +191,9 @@
|
|||
java.lang.Process
|
||||
;; added for issue #239 regarding clj-http-lite
|
||||
(instance? java.io.ByteArrayOutputStream v)
|
||||
java.io.ByteArrayOutputStream)))))
|
||||
java.io.ByteArrayOutputStream
|
||||
(instance? java.security.MessageDigest v)
|
||||
java.security.MessageDigest)))))
|
||||
|
||||
(def class-map (gen-class-map))
|
||||
|
||||
|
|
|
|||
20
test/babashka/java_security_test.clj
Normal file
20
test/babashka/java_security_test.clj
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
(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"))))))
|
||||
Loading…
Reference in a new issue