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;
+}