#18 use bcpkix-jdk15on 1.52 instead of 1.50
This commit is contained in:
parent
e13b665c1b
commit
7e9895a092
5 changed files with 40 additions and 26 deletions
|
@ -1,4 +1,4 @@
|
|||
(defproject clj-jwt "0.0.13"
|
||||
(defproject clj-jwt "0.1.0"
|
||||
:description "Clojure library for JSON Web Token(JWT)"
|
||||
:url "https://github.com/liquidz/clj-jwt"
|
||||
:license {:name "Eclipse Public License"
|
||||
|
@ -6,7 +6,7 @@
|
|||
:dependencies [[org.clojure/clojure "1.6.0"]
|
||||
[org.clojure/data.json "0.2.6"]
|
||||
[org.clojure/data.codec "0.1.0"]
|
||||
[org.bouncycastle/bcpkix-jdk15on "1.50"]
|
||||
[org.bouncycastle/bcpkix-jdk15on "1.52"]
|
||||
[crypto-equality "1.0.0"]
|
||||
[clj-time "0.9.0"]]
|
||||
:profiles {:dev {:dependencies [[midje "1.6.3" :exclusions [org.clojure/clojure]]]}}
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
(ns clj-jwt.key
|
||||
(:require [clojure.java.io :as io])
|
||||
(:import [org.bouncycastle.openssl PEMParser PEMKeyPair PEMEncryptedKeyPair]
|
||||
[org.bouncycastle.openssl.jcajce JcaPEMKeyConverter JcePEMDecryptorProviderBuilder]
|
||||
[org.bouncycastle.asn1.pkcs PrivateKeyInfo]
|
||||
[org.bouncycastle.asn1.x509 SubjectPublicKeyInfo]
|
||||
[org.bouncycastle.cert X509CertificateHolder]
|
||||
[java.io StringReader]))
|
||||
(:require
|
||||
[clojure.java.io :as io])
|
||||
(:import
|
||||
[org.bouncycastle.openssl PEMParser PEMKeyPair PEMEncryptedKeyPair]
|
||||
[org.bouncycastle.openssl.jcajce JcaPEMKeyConverter JcePEMDecryptorProviderBuilder]
|
||||
[org.bouncycastle.asn1.pkcs PrivateKeyInfo]
|
||||
[org.bouncycastle.asn1.x509 SubjectPublicKeyInfo]
|
||||
[org.bouncycastle.cert X509CertificateHolder]
|
||||
[java.io StringReader]))
|
||||
|
||||
(defprotocol GetPrivateKey
|
||||
(-get-private-key [key-info password]))
|
||||
|
@ -13,56 +15,67 @@
|
|||
(defprotocol GetPublicKey
|
||||
(-get-public-key [key-info password]))
|
||||
|
||||
(defn ^JcaPEMKeyConverter pem-converter []
|
||||
(defn ^JcaPEMKeyConverter pem-converter
|
||||
[]
|
||||
(JcaPEMKeyConverter.))
|
||||
|
||||
(extend-protocol GetPrivateKey
|
||||
PrivateKeyInfo
|
||||
(-get-private-key [key-info _]
|
||||
(-get-private-key
|
||||
[key-info _]
|
||||
(.getPrivateKey (pem-converter) key-info)))
|
||||
|
||||
(extend-protocol GetPublicKey
|
||||
SubjectPublicKeyInfo
|
||||
(-get-public-key [key-info _]
|
||||
(-get-public-key
|
||||
[key-info _]
|
||||
(.getPublicKey (pem-converter) key-info))
|
||||
|
||||
X509CertificateHolder
|
||||
(-get-public-key [key-info password]
|
||||
(-get-public-key
|
||||
[key-info password]
|
||||
(-get-public-key (.getSubjectPublicKeyInfo key-info) password)))
|
||||
|
||||
(extend-type PEMKeyPair
|
||||
GetPrivateKey
|
||||
(-get-private-key [key-info _]
|
||||
(-get-private-key
|
||||
[key-info _]
|
||||
(-> (pem-converter)
|
||||
(.getKeyPair key-info)
|
||||
.getPrivate))
|
||||
|
||||
GetPublicKey
|
||||
(-get-public-key [key-info _]
|
||||
(-get-public-key
|
||||
[key-info _]
|
||||
(-> (pem-converter)
|
||||
(.getKeyPair key-info)
|
||||
.getPublic)))
|
||||
|
||||
(extend-type PEMEncryptedKeyPair
|
||||
GetPrivateKey
|
||||
(-get-private-key [key-info ^String password]
|
||||
(-get-private-key
|
||||
[key-info ^String password]
|
||||
(let [dec-prov (-> (JcePEMDecryptorProviderBuilder.)
|
||||
(.build (.toCharArray password)))]
|
||||
(-get-private-key (-> key-info
|
||||
(.decryptKeyPair dec-prov)) nil)))
|
||||
GetPublicKey
|
||||
(-get-public-key [key-info ^String password]
|
||||
(-get-public-key
|
||||
[key-info ^String password]
|
||||
(let [dec-prov (-> (JcePEMDecryptorProviderBuilder.)
|
||||
(.build (.toCharArray password)))]
|
||||
(-get-public-key (-> key-info
|
||||
(.decryptKeyPair dec-prov)) nil))))
|
||||
|
||||
(defn pem->public-key [reader pass-phrase]
|
||||
(defn pem->public-key
|
||||
[reader pass-phrase]
|
||||
(some-> reader
|
||||
PEMParser.
|
||||
.readObject
|
||||
(-get-public-key pass-phrase)))
|
||||
|
||||
(defn pem->private-key [reader pass-phrase]
|
||||
(defn pem->private-key
|
||||
[reader pass-phrase]
|
||||
(some-> reader
|
||||
PEMParser.
|
||||
.readObject
|
||||
|
|
|
@ -8,7 +8,8 @@
|
|||
[java.security Security]
|
||||
[org.bouncycastle.jce.provider BouncyCastleProvider]))
|
||||
|
||||
(defn with-bc-provider-fn [f]
|
||||
(defn with-bc-provider-fn
|
||||
[f]
|
||||
(try
|
||||
(Security/insertProviderAt (BouncyCastleProvider.) 1)
|
||||
(f)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
(ns clj-jwt.key-test
|
||||
(:require
|
||||
[clj-jwt.key :refer :all]
|
||||
[midje.sweet :refer :all]
|
||||
[clj-jwt.key :refer :all]
|
||||
[midje.sweet :refer :all]
|
||||
[clj-jwt.core-test :refer [with-bc-provider-fn]]))
|
||||
|
||||
(with-state-changes [(around :facts (with-bc-provider-fn (fn [] ?form)))]
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
(ns clj-jwt.sign-test
|
||||
(:require
|
||||
[clj-jwt.sign :refer :all]
|
||||
[clj-jwt.base64 :refer [url-safe-encode-str]]
|
||||
[clj-jwt.key :refer [private-key]]
|
||||
[midje.sweet :refer :all]
|
||||
[clj-jwt.sign :refer :all]
|
||||
[clj-jwt.base64 :refer [url-safe-encode-str]]
|
||||
[clj-jwt.key :refer [private-key]]
|
||||
[midje.sweet :refer :all]
|
||||
[clj-jwt.core-test :refer [with-bc-provider-fn]]))
|
||||
|
||||
(facts "HMAC"
|
||||
|
|
Loading…
Reference in a new issue