diff --git a/src/babashka/impl/classes.clj b/src/babashka/impl/classes.clj index 91b478d5..0761048f 100644 --- a/src/babashka/impl/classes.clj +++ b/src/babashka/impl/classes.clj @@ -189,6 +189,7 @@ java.nio.file.attribute.PosixFilePermissions]) java.security.MessageDigest java.security.DigestInputStream + java.security.SecureRandom ~@(when features/java-time? `[java.time.format.DateTimeFormatter java.time.Clock diff --git a/test/babashka/main_test.clj b/test/babashka/main_test.clj index 0ce1b020..2136e115 100644 --- a/test/babashka/main_test.clj +++ b/test/babashka/main_test.clj @@ -587,6 +587,18 @@ true")) (.force view) true"))) +(deftest secure-random-test + (let [prog '(do (import 'java.security.SecureRandom 'java.util.Base64) + + (let [random (SecureRandom.) + base64 (.withoutPadding (Base64/getUrlEncoder))] + (defn generate-token [] + (let [buffer (byte-array 32)] + (.nextBytes random buffer) + (.encodeToString base64 buffer)))) + (generate-token))] + (is (string? (bb nil (str prog)))))) + ;;;; Scratch (comment