From: Carl Hetherington Date: Mon, 14 Feb 2022 09:12:04 +0000 (+0100) Subject: Move some logic from the caller into MakeChainDialog. X-Git-Tag: v2.16.1~3^2~3 X-Git-Url: https://git.carlh.net/gitweb/?a=commitdiff_plain;h=bfb8965dafcbbe045dfb58ad71333df8898e1df3;p=dcpomatic.git Move some logic from the caller into MakeChainDialog. --- 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 ( - 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 #include +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 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 +MakeChainDialog::get () const +{ + return make_shared( + 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 chain); + std::shared_ptr get () const; private: wxTextCtrl* _organisation;