Fix code and tests so that SubtitleString::v_position is between 0 and 1 (not a perce...
[libdcp.git] / src / signer.h
index 6e258f8d5dba8bd87aef6f4e2742f22b3da10a0d..1d53d5baf2eefec241dcec1645ec04f739cf8c49 100644 (file)
@@ -38,13 +38,24 @@ namespace dcp {
 /** @class Signer
  *  @brief A class which can sign XML files.
  */
-class Signer : public boost::noncopyable
+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)
        {}
@@ -55,13 +66,28 @@ public:
        CertificateChain const & certificates () const {
                return _certificates;
        }
+
+       CertificateChain& certificates () {
+               return _certificates;
+       }
        
-private:       
+       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;
 };
 
 }