 
   Returns the SSLContext instance."
   [cert private-key ca-cert]
-  {:pre  [cert
-          private-key
-          ca-cert]
+  {:pre  [(not (nil? cert))
+          (not (nil? private-key))
+          (not (nil? ca-cert))]
    :post [(instance? SSLContext %)]}
   (with-open [cert-reader    (reader cert)
               key-reader     (reader private-key)


  `pem`: the file path to write the PEM output to (or any other type supported by clojure's `writer`)"
  [obj pem]
  {:pre  [obj
          pem]
   :post [(nil? %)]}
  (with-open [w (writer pem)]
    (CertificateUtils/writeToPEM obj w)))

  "Given the path to a PEM file (or some other object supported by clojure's `reader`),
  decodes the contents into a collection of `PrivateKey` instances."
  [pem]
  {:pre  [(not (nil? pem))]
   :post [(every? (fn [x] (instance? PrivateKey x)) %)]}
  (with-open [r (reader pem)]
    (CertificateUtils/pemToPrivateKeys r)))
