Rename certificates.{cc,h} -> certificate.{cc,h}.
[libdcp.git] / src / signer.h
index 9ee5852b07a9431971f4e6859ac26029d9260fc3..b8bd564371d9c95cd21e284a1e6be6d363d75b6e 100644 (file)
 
 */
 
+#ifndef LIBDCP_SIGNER_H
+#define LIBDCP_SIGNER_H
+
 /** @file  src/signer.h
  *  @brief Signer class.
  */
 
-#include "certificates.h"
+#include "certificate.h"
+#include "certificate_chain.h"
 #include "types.h"
 #include <boost/filesystem.hpp>
 
@@ -38,10 +42,21 @@ namespace dcp {
 class Signer
 {
 public:
+       Signer (boost::filesystem::path openssl);
+
+       Signer (
+               boost::filesystem::path openssl,
+               std::string organisation,
+               std::string organisational_unit,
+               std::string root_common_name,
+               std::string intermediate_common_name,
+               std::string leaf_common_name
+               );
+
        /** @param c Certificate chain to sign with.
-        *  @param k Key to sign with.
+        *  @param k Key to sign with as a PEM-format string.
         */
-       Signer (CertificateChain c, boost::filesystem::path k)
+       Signer (CertificateChain c, std::string k)
                : _certificates (c)
                , _key (k)
        {}
@@ -52,13 +67,30 @@ public:
        CertificateChain const & certificates () const {
                return _certificates;
        }
-       
-private:       
+
+       CertificateChain& certificates () {
+               return _certificates;
+       }
+
+       std::string key () const {
+               return _key;
+       }
+
+       void set_key (std::string k) {
+               _key = k;
+       }
+
+       bool valid () const;
+
+private:
+       void create (boost::filesystem::path directory);
 
        /** Certificate chain to sign with */
        CertificateChain _certificates;
-       /** Filename of signer key */
-       boost::filesystem::path _key;
+       /** Key to sign with as a PEM-format string */
+       std::string _key;
 };
 
 }
+
+#endif