Connection configuration is equipped with GUID now for multiple credential prompt disambiguation later

This commit is contained in:
2016-08-24 11:34:30 +02:00
parent 38e1443276
commit 1cb6ca5adb
4 changed files with 67 additions and 3 deletions

View File

@@ -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)
{
memset(&m_connection_id, 0, sizeof(m_connection_id));
}
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),
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) :
m_connection_id(std::move(other.m_connection_id)),
m_providers(std::move(other.m_providers)),
config(std::move(other))
{
@@ -634,8 +637,9 @@ eap::config_provider_list::config_provider_list(_Inout_ config_provider_list &&o
eap::config_provider_list& eap::config_provider_list::operator=(_In_ const config_provider_list &other)
{
if (this != &other) {
(config&)*this = other;
m_providers = other.m_providers;
(config&)*this = other;
m_connection_id = other.m_connection_id;
m_providers = other.m_providers;
}
return *this;
@@ -646,6 +650,7 @@ eap::config_provider_list& eap::config_provider_list::operator=(_Inout_ config_p
{
if (this != &other) {
(config&&)*this = std::move(other);
m_connection_id = std::move(other.m_connection_id);
m_providers = std::move(other.m_providers);
}
@@ -693,6 +698,9 @@ void eap::config_provider_list::load(_In_ IXMLDOMNode *pConfigRoot)
config::load(pConfigRoot);
// On each configuration import reset ID.
CoCreateGuid(&m_connection_id);
// Iterate authentication providers (<EAPIdentityProvider>).
com_obj<IXMLDOMNodeList> 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
{
config::operator<<(cursor);
cursor << m_connection_id;
cursor << m_providers;
}
@@ -725,7 +734,8 @@ size_t eap::config_provider_list::get_pk_size() const
{
return
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);
cursor >> m_connection_id;
list<config_provider>::size_type count;
cursor >> count;
m_providers.clear();