#18 use bcpkix-jdk15on 1.52 instead of 1.50

This commit is contained in:
liquidz 2015-06-30 20:35:25 +09:00
parent e13b665c1b
commit 7e9895a092
5 changed files with 40 additions and 26 deletions

View file

@ -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]]]}}

View file

@ -1,6 +1,8 @@
(ns clj-jwt.key
(:require [clojure.java.io :as io])
(:import [org.bouncycastle.openssl PEMParser PEMKeyPair PEMEncryptedKeyPair]
(: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]
@ -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

View file

@ -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)