Various attempts to clean up DCP comparison code.
[libdcp.git] / src / certificates.h
index 8ae562c91543e882d85c40163032b39b67a68812..ebc4cc53560d42a7e6916a1a511ad4ec8028fab1 100644 (file)
@@ -26,7 +26,6 @@
 
 #undef X509_NAME
 #include <openssl/x509.h>
-#include <boost/shared_ptr.hpp>
 #include <boost/filesystem.hpp>
 #include <string>
 #include <list>
@@ -42,16 +41,16 @@ namespace dcp {
 /** @class Certificate
  *  @brief A wrapper for an X509 certificate.
  *
- *  This class can take a Certificate from a file, a string or an OpenSSL X509 object.
+ *  This class can take a Certificate from a string or an OpenSSL X509 object.
  */
 class Certificate
 {
 public:
        Certificate ()
                : _certificate (0)
+               , _public_key (0)
        {}
 
-       Certificate (boost::filesystem::path);
        Certificate (std::string);
        Certificate (X509 *);
        Certificate (Certificate const &);
@@ -84,6 +83,10 @@ private:
        mutable RSA* _public_key;
 };
 
+bool operator== (Certificate const & a, Certificate const & b);
+bool operator< (Certificate const & a, Certificate const & b);
+std::ostream& operator<< (std::ostream&s, Certificate const & c);
+
 /** @class CertificateChain
  *  @brief A chain of any number of certificates, from root to leaf.
  */
@@ -92,19 +95,19 @@ class CertificateChain
 public:
        CertificateChain () {}
 
-       void add (boost::shared_ptr<Certificate> c);
-       void remove (boost::shared_ptr<Certificate> c);
+       void add (Certificate c);
+       void remove (Certificate c);
        void remove (int);
 
-       boost::shared_ptr<Certificate> root () const;
-       boost::shared_ptr<Certificate> leaf () const;
+       Certificate root () const;
+       Certificate leaf () const;
 
-       typedef std::list<boost::shared_ptr<Certificate> > List;
+       typedef std::list<Certificate> List;
        
        List leaf_to_root () const;
        List root_to_leaf () const;
 
-       bool verify () const;
+       bool valid () const;
        bool attempt_reorder ();
 
 private: