Connection configuration is equipped with GUID now for multiple credential prompt disambiguation later
This commit is contained in:
parent
38e1443276
commit
1cb6ca5adb
@ -550,6 +550,7 @@ namespace eap
|
|||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
GUID m_connection_id; ///< Unique connection ID
|
||||||
std::vector<eap::config_provider> m_providers; ///< Array of provider configurations
|
std::vector<eap::config_provider> m_providers; ///< Array of provider configurations
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -391,6 +391,31 @@ template<size_t N> inline size_t pksizeof(_In_ const eap::sanitizing_blob_f<N> &
|
|||||||
///
|
///
|
||||||
template<size_t N> inline void operator>>(_Inout_ eap::cursor_in &cursor, _Out_ eap::sanitizing_blob_f<N> &val);
|
template<size_t N> inline void operator>>(_Inout_ eap::cursor_in &cursor, _Out_ eap::sanitizing_blob_f<N> &val);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Packs a GUID
|
||||||
|
///
|
||||||
|
/// \param[inout] cursor Memory cursor
|
||||||
|
/// \param[in] val Variable with data to pack
|
||||||
|
///
|
||||||
|
inline void operator<<(_Inout_ eap::cursor_out &cursor, _In_ const GUID &val);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Returns packed size of a GUID
|
||||||
|
///
|
||||||
|
/// \param[in] val Data to pack
|
||||||
|
///
|
||||||
|
/// \returns Size of data when packed (in bytes)
|
||||||
|
///
|
||||||
|
inline size_t pksizeof(_In_ const GUID &val);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Unpacks a GUID
|
||||||
|
///
|
||||||
|
/// \param[inout] cursor Memory cursor
|
||||||
|
/// \param[out] val Variable to receive unpacked value
|
||||||
|
///
|
||||||
|
inline void operator>>(_Inout_ eap::cursor_in &cursor, _Out_ GUID &val);
|
||||||
|
|
||||||
#ifndef htonll
|
#ifndef htonll
|
||||||
///
|
///
|
||||||
/// Convert host converts an unsigned __int64 from host to TCP/IP network byte order.
|
/// Convert host converts an unsigned __int64 from host to TCP/IP network byte order.
|
||||||
@ -975,6 +1000,31 @@ inline void operator>>(_Inout_ eap::cursor_in &cursor, _Out_ eap::sanitizing_blo
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
inline void operator<<(_Inout_ eap::cursor_out &cursor, _In_ const GUID &val)
|
||||||
|
{
|
||||||
|
eap::cursor_out::ptr_type ptr_end = cursor.ptr + sizeof(GUID);
|
||||||
|
assert(ptr_end <= cursor.ptr_end);
|
||||||
|
memcpy(cursor.ptr, &val, sizeof(GUID));
|
||||||
|
cursor.ptr = ptr_end;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
inline size_t pksizeof(_In_ const GUID &val)
|
||||||
|
{
|
||||||
|
UNREFERENCED_PARAMETER(val);
|
||||||
|
return sizeof(GUID);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
inline void operator>>(_Inout_ eap::cursor_in &cursor, _Out_ GUID &val)
|
||||||
|
{
|
||||||
|
eap::cursor_in::ptr_type ptr_end = cursor.ptr + sizeof(GUID);
|
||||||
|
assert(ptr_end <= cursor.ptr_end);
|
||||||
|
memcpy(&val, cursor.ptr, sizeof(GUID));
|
||||||
|
cursor.ptr = ptr_end;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifndef htonll
|
#ifndef htonll
|
||||||
|
|
||||||
inline unsigned __int64 htonll(unsigned __int64 val)
|
inline unsigned __int64 htonll(unsigned __int64 val)
|
||||||
|
@ -614,10 +614,12 @@ void eap::config_provider::operator>>(_Inout_ cursor_in &cursor)
|
|||||||
|
|
||||||
eap::config_provider_list::config_provider_list(_In_ module &mod) : config(mod)
|
eap::config_provider_list::config_provider_list(_In_ module &mod) : config(mod)
|
||||||
{
|
{
|
||||||
|
memset(&m_connection_id, 0, sizeof(m_connection_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
eap::config_provider_list::config_provider_list(_In_ const config_provider_list &other) :
|
eap::config_provider_list::config_provider_list(_In_ const config_provider_list &other) :
|
||||||
|
m_connection_id(other.m_connection_id),
|
||||||
m_providers(other.m_providers),
|
m_providers(other.m_providers),
|
||||||
config(other)
|
config(other)
|
||||||
{
|
{
|
||||||
@ -625,6 +627,7 @@ eap::config_provider_list::config_provider_list(_In_ const config_provider_list
|
|||||||
|
|
||||||
|
|
||||||
eap::config_provider_list::config_provider_list(_Inout_ config_provider_list &&other) :
|
eap::config_provider_list::config_provider_list(_Inout_ config_provider_list &&other) :
|
||||||
|
m_connection_id(std::move(other.m_connection_id)),
|
||||||
m_providers(std::move(other.m_providers)),
|
m_providers(std::move(other.m_providers)),
|
||||||
config(std::move(other))
|
config(std::move(other))
|
||||||
{
|
{
|
||||||
@ -635,6 +638,7 @@ eap::config_provider_list& eap::config_provider_list::operator=(_In_ const confi
|
|||||||
{
|
{
|
||||||
if (this != &other) {
|
if (this != &other) {
|
||||||
(config&)*this = other;
|
(config&)*this = other;
|
||||||
|
m_connection_id = other.m_connection_id;
|
||||||
m_providers = other.m_providers;
|
m_providers = other.m_providers;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -646,6 +650,7 @@ eap::config_provider_list& eap::config_provider_list::operator=(_Inout_ config_p
|
|||||||
{
|
{
|
||||||
if (this != &other) {
|
if (this != &other) {
|
||||||
(config&&)*this = std::move(other);
|
(config&&)*this = std::move(other);
|
||||||
|
m_connection_id = std::move(other.m_connection_id);
|
||||||
m_providers = std::move(other.m_providers);
|
m_providers = std::move(other.m_providers);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -693,6 +698,9 @@ void eap::config_provider_list::load(_In_ IXMLDOMNode *pConfigRoot)
|
|||||||
|
|
||||||
config::load(pConfigRoot);
|
config::load(pConfigRoot);
|
||||||
|
|
||||||
|
// On each configuration import reset ID.
|
||||||
|
CoCreateGuid(&m_connection_id);
|
||||||
|
|
||||||
// Iterate authentication providers (<EAPIdentityProvider>).
|
// Iterate authentication providers (<EAPIdentityProvider>).
|
||||||
com_obj<IXMLDOMNodeList> pXmlListProviders;
|
com_obj<IXMLDOMNodeList> pXmlListProviders;
|
||||||
if (FAILED(hr = eapxml::select_nodes(pConfigRoot, bstr(L"eap-metadata:EAPIdentityProviderList/eap-metadata:EAPIdentityProvider"), &pXmlListProviders)))
|
if (FAILED(hr = eapxml::select_nodes(pConfigRoot, bstr(L"eap-metadata:EAPIdentityProviderList/eap-metadata:EAPIdentityProvider"), &pXmlListProviders)))
|
||||||
@ -717,6 +725,7 @@ void eap::config_provider_list::load(_In_ IXMLDOMNode *pConfigRoot)
|
|||||||
void eap::config_provider_list::operator<<(_Inout_ cursor_out &cursor) const
|
void eap::config_provider_list::operator<<(_Inout_ cursor_out &cursor) const
|
||||||
{
|
{
|
||||||
config::operator<<(cursor);
|
config::operator<<(cursor);
|
||||||
|
cursor << m_connection_id;
|
||||||
cursor << m_providers;
|
cursor << m_providers;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -725,7 +734,8 @@ size_t eap::config_provider_list::get_pk_size() const
|
|||||||
{
|
{
|
||||||
return
|
return
|
||||||
config::get_pk_size() +
|
config::get_pk_size() +
|
||||||
pksizeof(m_providers);
|
pksizeof(m_connection_id) +
|
||||||
|
pksizeof(m_providers );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -733,6 +743,8 @@ void eap::config_provider_list::operator>>(_Inout_ cursor_in &cursor)
|
|||||||
{
|
{
|
||||||
config::operator>>(cursor);
|
config::operator>>(cursor);
|
||||||
|
|
||||||
|
cursor >> m_connection_id;
|
||||||
|
|
||||||
list<config_provider>::size_type count;
|
list<config_provider>::size_type count;
|
||||||
cursor >> count;
|
cursor >> count;
|
||||||
m_providers.clear();
|
m_providers.clear();
|
||||||
|
@ -88,6 +88,7 @@ void eap::peer_ttls_ui::invoke_config_ui(
|
|||||||
unpack(cfg, pConnectionDataIn, dwConnectionDataInSize);
|
unpack(cfg, pConnectionDataIn, dwConnectionDataInSize);
|
||||||
} else {
|
} else {
|
||||||
// This is a blank network profile. Create default configuraton.
|
// This is a blank network profile. Create default configuraton.
|
||||||
|
CoCreateGuid(&(cfg.m_connection_id));
|
||||||
|
|
||||||
// Start with PAP inner configuration.
|
// Start with PAP inner configuration.
|
||||||
unique_ptr<config_method_ttls> cfg_method(new config_method_ttls(*this));
|
unique_ptr<config_method_ttls> cfg_method(new config_method_ttls(*this));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user