summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2022-02-14 10:12:04 +0100
committerCarl Hetherington <cth@carlh.net>2022-02-14 10:12:04 +0100
commitbfb8965dafcbbe045dfb58ad71333df8898e1df3 (patch)
tree63b57c3e109c07e50ee91b718361489d32a71ae2
parentdbfabb1412dbbc21331334031bedc61cbcb20263 (diff)
Move some logic from the caller into MakeChainDialog.
-rw-r--r--src/wx/config_dialog.cc51
-rw-r--r--src/wx/make_chain_dialog.cc57
-rw-r--r--src/wx/make_chain_dialog.h30
3 files changed, 54 insertions, 84 deletions
diff --git a/src/wx/config_dialog.cc b/src/wx/config_dialog.cc
index c5879d3bb..7c37ac8f4 100644
--- a/src/wx/config_dialog.cc
+++ b/src/wx/config_dialog.cc
@@ -536,62 +536,15 @@ CertificateChainEditor::update_certificate_list ()
void
CertificateChainEditor::remake_certificates ()
{
- auto chain = _get();
-
- string subject_organization_name;
- string subject_organizational_unit_name;
- string root_common_name;
- string intermediate_common_name;
- string leaf_common_name;
-
- auto all = chain->root_to_leaf ();
-
- if (all.size() >= 1) {
- /* Have a root */
- subject_organization_name = chain->root().subject_organization_name ();
- subject_organizational_unit_name = chain->root().subject_organizational_unit_name ();
- root_common_name = chain->root().subject_common_name ();
- }
-
- if (all.size() >= 2) {
- /* Have a leaf */
- leaf_common_name = chain->leaf().subject_common_name ();
- }
-
- if (all.size() >= 3) {
- /* Have an intermediate */
- dcp::CertificateChain::List::iterator i = all.begin ();
- ++i;
- intermediate_common_name = i->subject_common_name ();
- }
-
if (_nag_alter()) {
/* Cancel was clicked */
return;
}
- auto d = new MakeChainDialog (
- this,
- subject_organization_name,
- subject_organizational_unit_name,
- root_common_name,
- intermediate_common_name,
- leaf_common_name
- );
+ auto d = new MakeChainDialog (this, _get());
if (d->ShowModal () == wxID_OK) {
- _set (
- make_shared<dcp::CertificateChain> (
- openssl_path (),
- CERTIFICATE_VALIDITY_PERIOD,
- d->organisation (),
- d->organisational_unit (),
- d->root_common_name (),
- d->intermediate_common_name (),
- d->leaf_common_name ()
- )
- );
-
+ _set (d->get());
update_certificate_list ();
update_private_key ();
}
diff --git a/src/wx/make_chain_dialog.cc b/src/wx/make_chain_dialog.cc
index 10433de03..4255fb307 100644
--- a/src/wx/make_chain_dialog.cc
+++ b/src/wx/make_chain_dialog.cc
@@ -21,22 +21,50 @@
#include "make_chain_dialog.h"
#include "static_text.h"
+#include "lib/cross.h"
+#include "lib/util.h"
+#include <dcp/certificate_chain.h>
#include <boost/algorithm/string.hpp>
+using std::make_shared;
+using std::shared_ptr;
using std::string;
MakeChainDialog::MakeChainDialog (
wxWindow* parent,
- string organisation,
- string organisational_unit_name,
- string root_common_name,
- string intermediate_common_name,
- string leaf_common_name
+ shared_ptr<const dcp::CertificateChain> chain
)
: TableDialog (parent, _("Make certificate chain"), 2, 1, true)
{
+ string subject_organization_name;
+ string subject_organizational_unit_name;
+ string root_common_name;
+ string intermediate_common_name;
+ string leaf_common_name;
+
+ auto all = chain->root_to_leaf ();
+
+ if (all.size() >= 1) {
+ /* Have a root */
+ subject_organization_name = chain->root().subject_organization_name ();
+ subject_organizational_unit_name = chain->root().subject_organizational_unit_name ();
+ root_common_name = chain->root().subject_common_name ();
+ }
+
+ if (all.size() >= 2) {
+ /* Have a leaf */
+ leaf_common_name = chain->leaf().subject_common_name ();
+ }
+
+ if (all.size() >= 3) {
+ /* Have an intermediate */
+ dcp::CertificateChain::List::iterator i = all.begin ();
+ ++i;
+ intermediate_common_name = i->subject_common_name ();
+ }
+
wxTextValidator validator (wxFILTER_EXCLUDE_CHAR_LIST);
validator.SetCharExcludes (wxT ("/"));
@@ -53,9 +81,9 @@ MakeChainDialog::MakeChainDialog (
}
add (_("Organisation"), true);
- add (_organisation = new wxTextCtrl (this, wxID_ANY, std_to_wx (organisation), wxDefaultPosition, wxSize (480, -1), 0, validator));
+ add (_organisation = new wxTextCtrl (this, wxID_ANY, std_to_wx(subject_organization_name), wxDefaultPosition, wxSize (480, -1), 0, validator));
add (_("Organisational unit"), true);
- add (_organisational_unit = new wxTextCtrl (this, wxID_ANY, std_to_wx (organisational_unit_name), wxDefaultPosition, wxDefaultSize, 0, validator));
+ add (_organisational_unit = new wxTextCtrl (this, wxID_ANY, std_to_wx(subject_organizational_unit_name), wxDefaultPosition, wxDefaultSize, 0, validator));
add (_("Root common name"), true);
@@ -94,3 +122,18 @@ MakeChainDialog::MakeChainDialog (
_organisation->SetFocus ();
}
+
+
+shared_ptr<dcp::CertificateChain>
+MakeChainDialog::get () const
+{
+ return make_shared<dcp::CertificateChain>(
+ openssl_path(),
+ CERTIFICATE_VALIDITY_PERIOD,
+ wx_to_std(_organisation->GetValue()),
+ wx_to_std(_organisational_unit->GetValue()),
+ "." + wx_to_std(_root_common_name->GetValue()),
+ "." + wx_to_std(_intermediate_common_name->GetValue()),
+ "CS." + wx_to_std(_leaf_common_name->GetValue())
+ );
+}
diff --git a/src/wx/make_chain_dialog.h b/src/wx/make_chain_dialog.h
index 5ad62430e..018db99a2 100644
--- a/src/wx/make_chain_dialog.h
+++ b/src/wx/make_chain_dialog.h
@@ -27,35 +27,9 @@
class MakeChainDialog : public TableDialog
{
public:
- MakeChainDialog (
- wxWindow* parent,
- std::string organisation,
- std::string organisational_unit_name,
- std::string root_common_name,
- std::string intermediate_common_name,
- std::string leaf_common_name
- );
-
- std::string organisation () const {
- return wx_to_std (_organisation->GetValue ());
- }
-
- std::string organisational_unit () const {
- return wx_to_std (_organisational_unit->GetValue ());
- }
-
- std::string root_common_name () const {
- return "." + wx_to_std (_root_common_name->GetValue ());
- }
-
- std::string intermediate_common_name () const {
- return "." + wx_to_std (_intermediate_common_name->GetValue ());
- }
-
- std::string leaf_common_name () const {
- return "CS." + wx_to_std (_leaf_common_name->GetValue ());
- }
+ MakeChainDialog (wxWindow* parent, std::shared_ptr<const dcp::CertificateChain> chain);
+ std::shared_ptr<dcp::CertificateChain> get () const;
private:
wxTextCtrl* _organisation;