diff --git a/resources/META-INF/babashka/deps.edn b/resources/META-INF/babashka/deps.edn index 1b4183bf..a55ffa90 100644 --- a/resources/META-INF/babashka/deps.edn +++ b/resources/META-INF/babashka/deps.edn @@ -32,7 +32,7 @@ cheshire/cheshire {:mvn/version "5.11.0"} org.clojure/data.xml {:mvn/version "0.2.0-alpha8"} clj-commons/clj-yaml {:mvn/version "0.7.169"} - com.cognitect/transit-clj {:mvn/version "1.0.329"} + com.cognitect/transit-clj {:mvn/version "1.0.333"} org.clojure/test.check {:mvn/version "1.1.1"} nrepl/bencode {:mvn/version "1.1.0"} seancorfield/next.jdbc {:mvn/version "1.1.610"} diff --git a/src/babashka/impl/classes.clj b/src/babashka/impl/classes.clj index c6710e71..e1a7bd35 100644 --- a/src/babashka/impl/classes.clj +++ b/src/babashka/impl/classes.clj @@ -210,6 +210,7 @@ java.net.http.WebSocket$Builder java.net.http.WebSocket$Listener java.security.cert.X509Certificate + java.security.cert.CertificateFactory javax.crypto.Cipher javax.crypto.Mac javax.crypto.SecretKey @@ -696,6 +697,8 @@ javax.crypto.SecretKey (instance? java.lang.Thread v) java.lang.Thread + (instance? java.security.cert.X509Certificate v) + java.security.cert.X509Certificate ;; keep commas for merge friendliness ,,,))) m (assoc m (list 'quote 'clojure.lang.Var) 'sci.lang.Var) diff --git a/test-resources/certificate.crt b/test-resources/certificate.crt new file mode 100644 index 00000000..ee544493 --- /dev/null +++ b/test-resources/certificate.crt @@ -0,0 +1,34 @@ +-----BEGIN CERTIFICATE----- +MIIF0zCCBLugAwIBAgIQByqysLNGGzf4RXfWDxaxzTANBgkqhkiG9w0BAQsFADA8 +MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRwwGgYDVQQDExNBbWF6b24g +UlNBIDIwNDggTTAyMB4XDTIzMDIyMTAwMDAwMFoXDTIzMTAxNDIzNTk1OVowFjEU +MBIGA1UEAxMLY2xvanVyZS5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQC6JGRt221bAElnBPzSVOebsjPofEDQdLTfAr52LCQLCo/4x7cHsPTi9x4+ +W3Pl7Fq0yrgimBhJHT34z7UeFqHEMnjsGxt7dLY0XJ87iikd8pz+v9xqXW8rrGaT +ykGx/85JFOGHJy+ZCparNYgUYN68IkaLe1QLb5w0GBcQa1U9JwpLqQVajrPDgD9Z +YRBJqgaFzJuRVsXo28rxHHFdNlP6PF2scMSFrAZEaex0bLXDxw/bHChzjypPODuO +ElsqxqI48Gsotqxe+iyP+Tu3B4GCHv2NKEFBYKiE+9UmNqQfXdVFvZFT+V2r4R9B +SMv3hpDNjmDcgpCVxmCI1sUttfQvAgMBAAGjggL1MIIC8TAfBgNVHSMEGDAWgBTA +MVLNWlDDgnx0cc7L6Zz5euuC4jAdBgNVHQ4EFgQUqkWGgRcK24T3gV3nNWwZ1EwQ +MPUwJwYDVR0RBCAwHoILY2xvanVyZS5vcmeCD3d3dy5jbG9qdXJlLm9yZzAOBgNV +HQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMDsGA1Ud +HwQ0MDIwMKAuoCyGKmh0dHA6Ly9jcmwucjJtMDIuYW1hem9udHJ1c3QuY29tL3Iy +bTAyLmNybDATBgNVHSAEDDAKMAgGBmeBDAECATB1BggrBgEFBQcBAQRpMGcwLQYI +KwYBBQUHMAGGIWh0dHA6Ly9vY3NwLnIybTAyLmFtYXpvbnRydXN0LmNvbTA2Bggr +BgEFBQcwAoYqaHR0cDovL2NydC5yMm0wMi5hbWF6b250cnVzdC5jb20vcjJtMDIu +Y2VyMAwGA1UdEwEB/wQCMAAwggF+BgorBgEEAdZ5AgQCBIIBbgSCAWoBaAB1AOg+ +0No+9QY1MudXKLyJa8kD08vREWvs62nhd31tBr1uAAABhnTETgYAAAQDAEYwRAIg +IqyTlcuIQp6edqePX8mbZL42EgXfdTuFcBsoFdK9R5UCIEfKD8zISR0q08R2Zk6J +xnHAwBNsMXbebXu0ez3CjeDDAHcAs3N3B+GEUPhjhtYFqdwRCUp5LbFnDAuH3PAD +Dnk2pZoAAAGGdMROQQAABAMASDBGAiEAhVldSvw96LP/Qb48ZnHC0LqtsV77t/zd +7BCUNJY5bsACIQCENQ19xq5Yu7fWEB+qQQhjHlHD5yrocxqbdmMvdx9uggB2ALc+ ++yTfnE26dfI5xbpY9Gxd/ELPep81xJ4dCYEl7bSZAAABhnTETg4AAAQDAEcwRQIh +APsLYOmzOz3qoDCqBULup/twLLmLLu5pK7R/zP1lyPP4AiBZ7PQzi4K2pD8Rfcv1 +6Xm1oQwud8jmp1uQbnTCKHUPLjANBgkqhkiG9w0BAQsFAAOCAQEAdACtcuC2kFe0 +sQU1m6nnjXdXpds25Xa+Rfbls2vyTqrmatFhSleOhzbkTOnWv/tNunHikttp3+DR +YOAbhJoUe4RVfuu1cQzL3kdc1q4MEmGgEl6V+jDO8657Ck1ld1ViGnqxKtncbV8b +k7hUOurO2saQhlzgylKyFL02Re+kXgw4x/U1n20MvvzHU6QCpU6KcAUeQfub3orQ +gEjmMxjOsnI38ZY8NX7guwhRiyFex3NOZ3avZxG6p8S5amXj8H6M8RBeQ07FVO3H +wj/WczPsGo6D8RG0nU4MiGCerMiY1oF9navINFTZptWiy/gVhR85XwQrKu+Pt+AM +47JAFeruig== +-----END CERTIFICATE----- diff --git a/test/babashka/interop_test.clj b/test/babashka/interop_test.clj index 1574091f..c32b875a 100644 --- a/test/babashka/interop_test.clj +++ b/test/babashka/interop_test.clj @@ -27,3 +27,17 @@ (is (true? (bb nil "(= (first {1 2}) (clojure.lang.MapEntry. 1 2) (clojure.lang.MapEntry/create 1 2))")))) + +(deftest X509Certificate-test + (is (true? (bb nil "(import java.security.cert.X509Certificate) +(import java.security.cert.CertificateFactory) +(require '[clojure.java.io :as io]) +(defn x509-certificate + ^X509Certificate + [f] + (let [input (io/input-stream f) + factory (CertificateFactory/getInstance \"X.509\")] + (.generateCertificate factory input))) +(def cert (x509-certificate (io/file \"test-resources/certificate.crt\"))) +(some? (.getSubjectX500Principal cert)) +"))))