Add RT iter to babashka (#1781)
This commit is contained in:
parent
1874da1d2d
commit
b16ecfdf6c
3 changed files with 54 additions and 43 deletions
|
|
@ -9,6 +9,9 @@ A preview of the next release can be installed from
|
|||
|
||||
## Unreleased
|
||||
|
||||
- [#1761] For compatibility with [Sieppari](https://github.com/metosin/sieppari), added the following entry in `babashka.impl.classes/classes`:
|
||||
- Support `support clojure.lang.RT/iter` calls
|
||||
|
||||
- [#1760] For compatibility with [Fireworks v0.10.3](https://github.com/paintparty/fireworks), added the following to `:instance-checks` entry in `babashka.impl.classes/classes`([@paintparty](https://github.com/paintparty))
|
||||
- `clojure.lang.PersistentArrayMap$TransientArrayMap`
|
||||
- `clojure.lang.PersistentHashMap$TransientHashMap`
|
||||
|
|
|
|||
|
|
@ -128,6 +128,7 @@
|
|||
{:methods [{:name "aget"}
|
||||
{:name "aset"}
|
||||
{:name "aclone"}
|
||||
{:name "iter"}
|
||||
;; we expose this via the Compiler/LOADER dynamic var
|
||||
{:name "baseLoader"}]}
|
||||
clojure.lang.Compiler
|
||||
|
|
|
|||
|
|
@ -134,55 +134,62 @@
|
|||
|
||||
(deftest keygen-test
|
||||
(is (true?
|
||||
(bb nil
|
||||
'(do (ns keygen
|
||||
(:import [java.security KeyPairGenerator Signature]))
|
||||
(bb nil
|
||||
'(do (ns keygen
|
||||
(:import [java.security KeyPairGenerator Signature]))
|
||||
|
||||
(defn generate-key-pair
|
||||
"Generates a public/private key pair."
|
||||
[]
|
||||
(let [keygen (KeyPairGenerator/getInstance "RSA")]
|
||||
(.initialize keygen 2048)
|
||||
(.generateKeyPair keygen)))
|
||||
(defn generate-key-pair
|
||||
"Generates a public/private key pair."
|
||||
[]
|
||||
(let [keygen (KeyPairGenerator/getInstance "RSA")]
|
||||
(.initialize keygen 2048)
|
||||
(.generateKeyPair keygen)))
|
||||
|
||||
(defn create-signature
|
||||
"Signs the given message using the private key."
|
||||
[private-key message]
|
||||
(let [signature (Signature/getInstance "SHA256withRSA")]
|
||||
(.initSign signature private-key)
|
||||
(.update signature (.getBytes message "UTF-8"))
|
||||
(.sign signature)))
|
||||
(defn create-signature
|
||||
"Signs the given message using the private key."
|
||||
[private-key message]
|
||||
(let [signature (Signature/getInstance "SHA256withRSA")]
|
||||
(.initSign signature private-key)
|
||||
(.update signature (.getBytes message "UTF-8"))
|
||||
(.sign signature)))
|
||||
|
||||
(defn verify-signature
|
||||
"Verifies the given signed data using the public key."
|
||||
[public-key message signed-data]
|
||||
(let [signature (Signature/getInstance "SHA256withRSA")]
|
||||
(.initVerify signature public-key)
|
||||
(.update signature (.getBytes message "UTF-8"))
|
||||
(.verify signature signed-data)))
|
||||
(defn verify-signature
|
||||
"Verifies the given signed data using the public key."
|
||||
[public-key message signed-data]
|
||||
(let [signature (Signature/getInstance "SHA256withRSA")]
|
||||
(.initVerify signature public-key)
|
||||
(.update signature (.getBytes message "UTF-8"))
|
||||
(.verify signature signed-data)))
|
||||
|
||||
(let [key-pair (generate-key-pair)
|
||||
private-key (.getPrivate key-pair)
|
||||
public-key (.getPublic key-pair)
|
||||
message "This is a secret message"
|
||||
signed-data (create-signature private-key message)]
|
||||
(verify-signature public-key message signed-data))))))
|
||||
(let [key-pair (generate-key-pair)
|
||||
private-key (.getPrivate key-pair)
|
||||
public-key (.getPublic key-pair)
|
||||
message "This is a secret message"
|
||||
signed-data (create-signature private-key message)]
|
||||
(verify-signature public-key message signed-data))))))
|
||||
|
||||
(is (true?
|
||||
(bb nil '(do (import
|
||||
'[java.security KeyPairGenerator]
|
||||
'[java.security.spec ECGenParameterSpec])
|
||||
(bb nil '(do (import
|
||||
'[java.security KeyPairGenerator]
|
||||
'[java.security.spec ECGenParameterSpec])
|
||||
|
||||
(def keypair-algo "EC")
|
||||
(def keypair-curve "secp256r1")
|
||||
(def keypair-algo "EC")
|
||||
(def keypair-curve "secp256r1")
|
||||
|
||||
(defn keypair
|
||||
"Generates a new key pair with the given alias, using the keypair-algo and keypair-curve"
|
||||
[]
|
||||
(let [keygen (KeyPairGenerator/getInstance keypair-algo)]
|
||||
(.initialize keygen (ECGenParameterSpec. keypair-curve))
|
||||
(.generateKeyPair keygen)))
|
||||
(defn keypair
|
||||
"Generates a new key pair with the given alias, using the keypair-algo and keypair-curve"
|
||||
[]
|
||||
(let [keygen (KeyPairGenerator/getInstance keypair-algo)]
|
||||
(.initialize keygen (ECGenParameterSpec. keypair-curve))
|
||||
(.generateKeyPair keygen)))
|
||||
|
||||
(let [kp (keypair)
|
||||
pk (.getPublic kp)]
|
||||
(bytes? (.getEncoded pk))))))))
|
||||
(let [kp (keypair)
|
||||
pk (.getPublic kp)]
|
||||
(bytes? (.getEncoded pk))))))))
|
||||
|
||||
;; RT iter test
|
||||
(deftest clojure-RT-iter-test
|
||||
(is (= (iterator-seq (.iterator [1 2 3]))
|
||||
(bb nil '(do (ns test
|
||||
(:import [clojure.lang RT]))
|
||||
(iterator-seq (clojure.lang.RT/iter [1 2 3])))))))
|
||||
|
|
|
|||
Loading…
Reference in a new issue