From 7e9895a09295bc6c0cee54833ca5778d220958d0 Mon Sep 17 00:00:00 2001 From: liquidz Date: Tue, 30 Jun 2015 20:35:25 +0900 Subject: [PATCH] #18 use bcpkix-jdk15on 1.52 instead of 1.50 --- project.clj | 4 ++-- src/clj_jwt/key.clj | 47 ++++++++++++++++++++++++-------------- test/clj_jwt/core_test.clj | 3 ++- test/clj_jwt/key_test.clj | 4 ++-- test/clj_jwt/sign_test.clj | 8 +++---- 5 files changed, 40 insertions(+), 26 deletions(-) diff --git a/project.clj b/project.clj index b580f98..b191dd7 100644 --- a/project.clj +++ b/project.clj @@ -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]]]}} diff --git a/src/clj_jwt/key.clj b/src/clj_jwt/key.clj index 6528d3b..08e59c8 100644 --- a/src/clj_jwt/key.clj +++ b/src/clj_jwt/key.clj @@ -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 diff --git a/test/clj_jwt/core_test.clj b/test/clj_jwt/core_test.clj index e762629..dd5c9bf 100644 --- a/test/clj_jwt/core_test.clj +++ b/test/clj_jwt/core_test.clj @@ -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) diff --git a/test/clj_jwt/key_test.clj b/test/clj_jwt/key_test.clj index f1d66d8..a8e85ed 100644 --- a/test/clj_jwt/key_test.clj +++ b/test/clj_jwt/key_test.clj @@ -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)))] diff --git a/test/clj_jwt/sign_test.clj b/test/clj_jwt/sign_test.clj index a2642d4..5c02b57 100644 --- a/test/clj_jwt/sign_test.clj +++ b/test/clj_jwt/sign_test.clj @@ -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"