 
 (def Something
   (schema/pred #(not (nil? %))))
+
+(def ReaderSchema
+  (schema/cond-pre Reader BufferedReader InputStream File URI URL Socket byte[] char[] String))
+
+(def WriterSchema
+  (schema/cond-pre Writer BufferedWriter OutputStream File URI URL Socket byte[] char[] String))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;; Internal

           (com.puppetlabs.ssl_utils SSLUtils
                                     ExtensionsUtils)
           (java.util Map List Date Set)
           (org.bouncycastle.asn1.x500.style BCStyle))
  (:require [clojure.tools.logging :as log]
            [clojure.walk :as walk]
            [clojure.string :as string]

  `:keystore`    - an instance of KeyStore initialized with the cert and private key
  `:keystore-pw` - a string containing a dynamically generated password for the KeyStore
  `:truststore`  - an instance of KeyStore containing the CA cert."
  [cert :- ReaderSchema
   private-key :- ReaderSchema
   ca-cert :- ReaderSchema]
  (with-open [cert-reader    (reader cert)
              key-reader     (reader private-key)
              ca-cert-reader (reader ca-cert)]
