*/
+#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>
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)
{}
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