The clj-crypto library is a Clojure wrapper for the Java Bouncy Castle encryption library.
clj-crypto
is available is available as a Maven artifact from
To use, simply add
[clj-crypto "1.0.2"]
to your project.clj
(:require [clj-crypto.core :as crypto])
To read your pkcs12 certificate store:
(def keypair (crypto/get-key-pair-pkcs12 pkcs12-store passwd alias))
This will use the 'Bouncy Castle' as your crypto-provider. If you want to use another, you can supply that as well like so:
(def keypair (crypto/get-key-pair-pkcs12 pkcs12-store passwd alias crypto/sun-provider)) ; use SunJSSE
To obtain your private-key from a key-pair, drop in to java, like so:
(def private-key (.getPrivate keypair)
To sign a message with your private key:
(crypto/sign private-key msg
crypto/sha256-signature-algorithm
crypto/default-provider)
Of course, you also have your standard functions for base64 encoding
(crypto/decode-base64 (crypto/encode-base64-as-str (.getBytes "sikrit")))
Copyright (C) 2012 Matt Courtney
Distributed under the Eclipse Public License, the same as Clojure.