diff options
| author | Carl Hetherington <cth@carlh.net> | 2015-07-30 02:10:09 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2015-07-30 02:10:09 +0100 |
| commit | 57b862d997857868d0c3c91a9776f854b62c6b56 (patch) | |
| tree | ed3bf26ba60645094853d05918bc22750bb356f7 /src/certificate_chain.h | |
| parent | d69d2d2d32b6f874cc13ecec1ce705d44a1feb24 (diff) | |
Merge Signer into CertificateChain.
Diffstat (limited to 'src/certificate_chain.h')
| -rw-r--r-- | src/certificate_chain.h | 53 |
1 files changed, 36 insertions, 17 deletions
diff --git a/src/certificate_chain.h b/src/certificate_chain.h index b4cc2485..4e13d6ee 100644 --- a/src/certificate_chain.h +++ b/src/certificate_chain.h @@ -25,7 +25,13 @@ #define LIBDCP_CERTIFICATE_CHAIN_H #include "certificate.h" +#include "types.h" #include <boost/filesystem.hpp> +#include <boost/optional.hpp> + +namespace xmlpp { + class Node; +} namespace dcp { @@ -37,6 +43,23 @@ class CertificateChain public: CertificateChain () {} + /** Create a chain of certificates for signing things. + * @param openssl Name of openssl binary (if it is on the path) or full path. + * @return Directory (which should be deleted by the caller) containing: + * - ca.self-signed.pem self-signed root certificate + * - intermediate.signed.pem intermediate certificate + * - leaf.key leaf certificate private key + * - leaf.signed.pem leaf certificate + */ + CertificateChain ( + boost::filesystem::path openssl, + std::string organisation = "example.org", + std::string organisational_unit = "example.org", + std::string root_common_name = ".smpte-430-2.ROOT.NOT_FOR_PRODUCTION", + std::string intermediate_common_name = ".smpte-430-2.INTERMEDIATE.NOT_FOR_PRODUCTION", + std::string leaf_common_name = "CS.smpte-430-2.LEAF.NOT_FOR_PRODUCTION" + ); + void add (Certificate c); void remove (Certificate c); void remove (int); @@ -52,29 +75,25 @@ public: bool valid () const; bool attempt_reorder (); + void sign (xmlpp::Element* parent, Standard standard) const; + void add_signature_value (xmlpp::Node* parent, std::string ns) const; + + boost::optional<std::string> key () const { + return _key; + } + + void set_key (std::string k) { + _key = k; + } + private: friend class ::certificates; List _certificates; + /** Leaf certificate's private key, if known */ + boost::optional<std::string> _key; }; -/** Create a chain of certificates for signing things. - * @param openssl Name of openssl binary (if it is on the path) or full path. - * @return Directory (which should be deleted by the caller) containing: - * - ca.self-signed.pem self-signed root certificate - * - intermediate.signed.pem intermediate certificate - * - leaf.key leaf certificate private key - * - leaf.signed.pem leaf certificate - */ -boost::filesystem::path make_certificate_chain ( - boost::filesystem::path openssl, - std::string organisation = "example.org", - std::string organisational_unit = "example.org", - std::string root_common_name = ".smpte-430-2.ROOT.NOT_FOR_PRODUCTION", - std::string intermediate_common_name = ".smpte-430-2.INTERMEDIATE.NOT_FOR_PRODUCTION", - std::string leaf_common_name = "CS.smpte-430-2.LEAF.NOT_FOR_PRODUCTION" - ); - } #endif |
