diff --git a/lib/TTLS/build/TTLS.vcxproj b/lib/TTLS/build/TTLS.vcxproj index 0f5716f..e1a83d9 100644 --- a/lib/TTLS/build/TTLS.vcxproj +++ b/lib/TTLS/build/TTLS.vcxproj @@ -83,6 +83,7 @@ + @@ -96,6 +97,7 @@ Create Create + diff --git a/lib/TTLS/build/TTLS.vcxproj.filters b/lib/TTLS/build/TTLS.vcxproj.filters index 5cd912e..a84fc78 100644 --- a/lib/TTLS/build/TTLS.vcxproj.filters +++ b/lib/TTLS/build/TTLS.vcxproj.filters @@ -26,6 +26,9 @@ Header Files + + Header Files + @@ -43,5 +46,8 @@ Source Files + + Source Files + \ No newline at end of file diff --git a/lib/TTLS/include/UIContext.h b/lib/TTLS/include/UIContext.h new file mode 100644 index 0000000..b419e10 --- /dev/null +++ b/lib/TTLS/include/UIContext.h @@ -0,0 +1,102 @@ +/* + Copyright 2015-2017 Amebis + Copyright 2016-2017 GÉANT + + This file is part of GÉANTLink. + + GÉANTLink is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + GÉANTLink is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GÉANTLink. If not, see . +*/ + +namespace eap +{ + class ui_context_ttls; +} + +#pragma once + +#include "../../EAPBase/include/UIContext.h" + + +namespace eap +{ + /// \addtogroup EAPBaseUICtx + /// @{ + + /// + /// EAP-TTLS UI context + /// + class ui_context_ttls : public ui_context + { + public: + /// + /// Constructs context + /// + /// \param[in] mod EAP module to use for global services + /// \param[in] cfg Connection configuration + /// \param[in] cred Connection credentials + /// + ui_context_ttls(_In_ module &mod, _In_ config_connection &cfg, _In_ credentials_connection &cred); + + /// + /// Copies context + /// + /// \param[in] other Credentials to copy from + /// + ui_context_ttls(_In_ const ui_context_ttls &other); + + /// + /// Moves context + /// + /// \param[in] other Credentials to move from + /// + ui_context_ttls(_Inout_ ui_context_ttls &&other); + + /// + /// Copies context + /// + /// \param[in] other Credentials to copy from + /// + /// \returns Reference to this object + /// + ui_context_ttls& operator=(_In_ const ui_context_ttls &other); + + /// + /// Moves context + /// + /// \param[in] other Configuration to move from + /// + /// \returns Reference to this object + /// + ui_context_ttls& operator=(_Inout_ ui_context_ttls &&other); + + /// + /// Clones this object + /// + /// \returns Pointer to cloned object with identical data + /// + virtual config* clone() const; + + /// \name BLOB management + /// @{ + virtual void operator<<(_Inout_ cursor_out &cursor) const; + virtual size_t get_pk_size() const; + virtual void operator>>(_Inout_ cursor_in &cursor); + /// @} + + public: + sanitizing_blob m_data; ///< Context data + }; + + /// @} +} diff --git a/lib/TTLS/src/StdAfx.h b/lib/TTLS/src/StdAfx.h index bcf2e82..6e0caab 100644 --- a/lib/TTLS/src/StdAfx.h +++ b/lib/TTLS/src/StdAfx.h @@ -24,6 +24,7 @@ #include "../include/Credentials.h" #include "../include/Method.h" #include "../include/Module.h" +#include "../include/UIContext.h" #include "../../PAP/include/Config.h" #include "../../PAP/include/Method.h" diff --git a/lib/TTLS/src/UIContext.cpp b/lib/TTLS/src/UIContext.cpp new file mode 100644 index 0000000..26b1975 --- /dev/null +++ b/lib/TTLS/src/UIContext.cpp @@ -0,0 +1,97 @@ +/* + Copyright 2015-2016 Amebis + Copyright 2016 GÉANT + + This file is part of GÉANTLink. + + GÉANTLink is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + GÉANTLink is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GÉANTLink. If not, see . +*/ + +#include "StdAfx.h" + +using namespace std; +using namespace winstd; + + +////////////////////////////////////////////////////////////////////// +// eap::ui_context_ttls +////////////////////////////////////////////////////////////////////// + +eap::ui_context_ttls::ui_context_ttls(_In_ module &mod, _In_ config_connection &cfg, _In_ credentials_connection &cred) : + ui_context(mod, cfg, cred) +{ +} + + +eap::ui_context_ttls::ui_context_ttls(_In_ const ui_context_ttls &other) : + ui_context(other) +{ +} + + +eap::ui_context_ttls::ui_context_ttls(_Inout_ ui_context_ttls &&other) : + m_data (std::move(other.m_data)), + ui_context(std::move(other )) +{ +} + + +eap::ui_context_ttls& eap::ui_context_ttls::operator=(_In_ const ui_context_ttls &other) +{ + if (this != &other) { + (ui_context&)*this = other; + m_data = other.m_data; + } + + return *this; +} + + +eap::ui_context_ttls& eap::ui_context_ttls::operator=(_Inout_ ui_context_ttls &&other) +{ + if (this != &other) { + (ui_context&)*this = std::move(other ); + m_data = std::move(other.m_data); + } + + return *this; +} + + +eap::config* eap::ui_context_ttls::clone() const +{ + return new ui_context_ttls(*this); +} + + +void eap::ui_context_ttls::operator<<(_Inout_ cursor_out &cursor) const +{ + ui_context::operator<<(cursor); + cursor << m_data; +} + + +size_t eap::ui_context_ttls::get_pk_size() const +{ + return + ui_context::get_pk_size() + + pksizeof(m_data); +} + + +void eap::ui_context_ttls::operator>>(_Inout_ cursor_in &cursor) +{ + ui_context::operator>>(cursor); + cursor >> m_data; +}