diff --git a/script/compile b/script/compile index b92abeb3..67c281de 100755 --- a/script/compile +++ b/script/compile @@ -102,4 +102,4 @@ then export BABASHKA_FEATURE_PRIORITY_MAP="${BABASHKA_FEATURE_PRIORITY_MAP:-false}" fi -"$GRAALVM_HOME/bin/native-image" "${args[@]}" +"$GRAALVM_HOME/bin/native-image" "${args[@]}" "$@" diff --git a/src/babashka/impl/classes.clj b/src/babashka/impl/classes.clj index b77775e7..ddd53adc 100644 --- a/src/babashka/impl/classes.clj +++ b/src/babashka/impl/classes.clj @@ -197,6 +197,7 @@ java.security.cert.X509Certificate javax.crypto.Cipher javax.crypto.Mac + javax.crypto.SecretKey javax.crypto.SecretKeyFactory javax.crypto.spec.GCMParameterSpec javax.crypto.spec.PBEKeySpec diff --git a/test/babashka/crypto_test.clj b/test/babashka/crypto_test.clj index 48503f69..4bcc67fc 100644 --- a/test/babashka/crypto_test.clj +++ b/test/babashka/crypto_test.clj @@ -20,7 +20,6 @@ expected-sha (String. (.encode (java.util.Base64/getEncoder) (hmac-sha-256 (.getBytes key-s) data)) "utf-8")] - (prn expected-sha) (is (= expected-sha (bb '(do (ns net (:import (javax.crypto Mac) (javax.crypto.spec SecretKeySpec))) @@ -34,3 +33,19 @@ (String. (.encode (java.util.Base64/getEncoder) (hmac-sha-256 (.getBytes key-s) data)) "utf-8")))))))) + +(deftest secretkey-test + (is (= 32 (bb '(do (import 'javax.crypto.SecretKeyFactory) + (import 'javax.crypto.spec.PBEKeySpec) + + (defn gen-secret-key + "Generate secret key based on a given token string. + Returns bytes array 256-bit length." + [^String secret-token] + (let [salt (.getBytes "abcde") + factory (SecretKeyFactory/getInstance "PBKDF2WithHmacSHA256") + spec (PBEKeySpec. (.toCharArray secret-token) salt 10000 256) + secret (.generateSecret factory spec)] + (count (.getEncoded secret)))) + + (gen-secret-key "foo"))))))