         opts (Object)
   Returns
         (byte[]) Plain text"
-  [key cipher-text opts])
-
+  [k cipher-text {:keys [algorithm] :as opts}]
+  (%encrypt-or-decrypt k cipher-text (assoc opts :cipher-mode :decrypt)))
 
 ;;;sign
 (defn sign

        (Key) An instance of the Key class corresponding to the ski"
  [msg {:keys [algorithm]}]
  (let [md (MessageDigest/getInstance (name algorithm))]
    (Hex/toHexString (.digest md (if (string? msg)
                                   (.getBytes ^String msg)
                                   msg)))))
;;(hash test-msg {:algorithm :sha384})


;;;encrypt
(defn encrypt

           [org.bouncycastle.jcajce.provider.asymmetric.ec KeyPairGeneratorSpi$ECDSA
            BCECPrivateKey BCECPublicKey]
           [org.bouncycastle.util.encoders Hex]
           [java.io FileInputStream]
           [java.util Arrays]
           [javax.crypto Cipher SecretKeyFactory]
           [javax.crypto.spec SecretKeySpec]
           [java.security Key KeyStore KeyFactory KeyPairGenerator SecureRandom
            Security MessageDigest Signature]
           [java.security.spec ECPoint ECParameterSpec ECPublicKeySpec ECPrivateKeySpec])
  (:refer-clojure :exclude [hash]))

