Clean-up
This commit is contained in:
parent
844b185887
commit
0959217ee3
@ -81,6 +81,11 @@ namespace eap
|
||||
///
|
||||
enum diameter_avp_flags_t;
|
||||
|
||||
///
|
||||
/// Diameter AVP header
|
||||
///
|
||||
struct diameter_avp_header;
|
||||
|
||||
///
|
||||
/// Diameter AVP
|
||||
///
|
||||
@ -423,15 +428,23 @@ inline void operator>>(_Inout_ eap::cursor_in &cursor, _Out_ GUID &val);
|
||||
|
||||
#ifndef htonll
|
||||
///
|
||||
/// Convert host converts an unsigned __int64 from host to TCP/IP network byte order.
|
||||
/// Converts an unsigned __int64 from host to TCP/IP network byte order.
|
||||
///
|
||||
/// \param[in] val A 64-bit unsigned number in host byte order.
|
||||
/// \param[in] val A 64-bit unsigned number in host byte order
|
||||
///
|
||||
/// \returns The value in TCP/IP's network byte order.
|
||||
/// \returns The value in TCP/IP's network byte order
|
||||
///
|
||||
inline unsigned __int64 htonll(unsigned __int64 val);
|
||||
#endif
|
||||
|
||||
///
|
||||
/// Converts an 24-bit integer from host to TCP/IP network byte order.
|
||||
///
|
||||
/// \param[in ] val A 24-bit unsigned number in host byte order
|
||||
/// \param[out] out A 24-bit unsigned number in network byte order
|
||||
///
|
||||
inline void hton24(_In_ unsigned int val, _Out_ unsigned char out[3]);
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
@ -625,12 +638,17 @@ namespace eap
|
||||
|
||||
#pragma pack(push)
|
||||
#pragma pack(1)
|
||||
struct diameter_avp
|
||||
|
||||
struct diameter_avp_header
|
||||
{
|
||||
unsigned char code[4]; ///< AVP Code
|
||||
unsigned char flags; ///< AVP Flags
|
||||
unsigned char length[3]; ///< AVP Length
|
||||
};
|
||||
|
||||
|
||||
struct diameter_avp : public diameter_avp_header
|
||||
{
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable: 4201)
|
||||
union {
|
||||
@ -642,6 +660,7 @@ namespace eap
|
||||
};
|
||||
#pragma warning(pop)
|
||||
};
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
|
||||
@ -1093,4 +1112,13 @@ inline unsigned __int64 htonll(unsigned __int64 val)
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
inline void hton24(_In_ unsigned int val, _Out_ unsigned char out[3])
|
||||
{
|
||||
assert(val <= 0xffffff);
|
||||
out[0] = (val >> 16) & 0xff;
|
||||
out[1] = (val >> 8) & 0xff;
|
||||
out[2] = (val ) & 0xff;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -72,7 +72,7 @@ eap::config* eap::config_method_pap::clone() const
|
||||
|
||||
eap_type_t eap::config_method_pap::get_method_id() const
|
||||
{
|
||||
return eap_type_pap;
|
||||
return eap_type_legacy_pap;
|
||||
}
|
||||
|
||||
|
||||
|
@ -83,14 +83,14 @@ eap::credentials::source_t eap::credentials_pap::combine(
|
||||
if (cred_cached) {
|
||||
// Using EAP service cached credentials.
|
||||
*this = *(credentials_pap*)cred_cached;
|
||||
m_module.log_event(&EAPMETHOD_TRACE_EVT_CRED_CACHED1, event_data((unsigned int)eap_type_pap), event_data(credentials_pap::get_name()), event_data::blank);
|
||||
m_module.log_event(&EAPMETHOD_TRACE_EVT_CRED_CACHED1, event_data((unsigned int)eap_type_legacy_pap), event_data(credentials_pap::get_name()), event_data::blank);
|
||||
return source_cache;
|
||||
}
|
||||
|
||||
if (cfg.m_use_preshared) {
|
||||
// Using preshared credentials.
|
||||
*this = *(credentials_pap*)cfg.m_preshared.get();
|
||||
m_module.log_event(&EAPMETHOD_TRACE_EVT_CRED_PRESHARED1, event_data((unsigned int)eap_type_pap), event_data(credentials_pap::get_name()), event_data::blank);
|
||||
m_module.log_event(&EAPMETHOD_TRACE_EVT_CRED_PRESHARED1, event_data((unsigned int)eap_type_legacy_pap), event_data(credentials_pap::get_name()), event_data::blank);
|
||||
return source_preshared;
|
||||
}
|
||||
|
||||
@ -101,7 +101,7 @@ eap::credentials::source_t eap::credentials_pap::combine(
|
||||
|
||||
// Using stored credentials.
|
||||
*this = std::move(cred_loaded);
|
||||
m_module.log_event(&EAPMETHOD_TRACE_EVT_CRED_STORED1, event_data((unsigned int)eap_type_pap), event_data(credentials_pap::get_name()), event_data::blank);
|
||||
m_module.log_event(&EAPMETHOD_TRACE_EVT_CRED_STORED1, event_data((unsigned int)eap_type_legacy_pap), event_data(credentials_pap::get_name()), event_data::blank);
|
||||
return source_storage;
|
||||
} catch (...) {
|
||||
// Not actually an error.
|
||||
|
@ -69,10 +69,10 @@ void eap::method_pap::process_request_packet(
|
||||
assert(pReceivedPacket && dwReceivedPacketSize >= 4);
|
||||
assert(pEapOutput);
|
||||
|
||||
m_module.log_event(&EAPMETHOD_PACKET_RECV, event_data((unsigned int)eap_type_pap), event_data((unsigned int)dwReceivedPacketSize - 4), event_data::blank);
|
||||
m_module.log_event(&EAPMETHOD_PACKET_RECV, event_data((unsigned int)eap_type_legacy_pap), event_data((unsigned int)dwReceivedPacketSize - 4), event_data::blank);
|
||||
|
||||
if (pReceivedPacket->Id == 0) {
|
||||
m_module.log_event(&EAPMETHOD_METHOD_HANDSHAKE_START2, event_data((unsigned int)eap_type_pap), event_data::blank);
|
||||
m_module.log_event(&EAPMETHOD_METHOD_HANDSHAKE_START2, event_data((unsigned int)eap_type_legacy_pap), event_data::blank);
|
||||
m_phase = phase_init;
|
||||
}
|
||||
|
||||
@ -97,43 +97,33 @@ void eap::method_pap::process_request_packet(
|
||||
size_password_outer;
|
||||
|
||||
m_packet_res.m_code = EapCodeResponse;
|
||||
m_packet_res.m_id = pReceivedPacket->Id;
|
||||
m_packet_res.m_id = pReceivedPacket->Id;
|
||||
m_packet_res.m_data.clear();
|
||||
m_packet_res.m_data.reserve(
|
||||
(size_identity_outer =
|
||||
4 + // Diameter AVP Code
|
||||
4 + // Diameter AVP Flags & Length
|
||||
size_identity) + // Identity
|
||||
padding_identity + // Identity padding
|
||||
sizeof(diameter_avp_header) + // Diameter header
|
||||
size_identity) + // Identity
|
||||
padding_identity + // Identity padding
|
||||
(size_password_outer =
|
||||
4 + // Diameter AVP Code
|
||||
4 + // Diameter AVP Flags & Length
|
||||
size_password) + // Password
|
||||
padding_password); // Password padding
|
||||
sizeof(diameter_avp_header) + // Diameter header
|
||||
size_password) + // Password
|
||||
padding_password); // Password padding
|
||||
|
||||
// Diameter AVP Code User-Name (0x00000001)
|
||||
m_packet_res.m_data.push_back(0x00);
|
||||
m_packet_res.m_data.push_back(0x00);
|
||||
m_packet_res.m_data.push_back(0x00);
|
||||
m_packet_res.m_data.push_back(0x01);
|
||||
|
||||
// Diameter AVP Flags & Length
|
||||
unsigned int identity_hdr = htonl((diameter_avp_flag_mandatory << 24) | (unsigned int)size_identity_outer);
|
||||
m_packet_res.m_data.insert(m_packet_res.m_data.end(), (unsigned char*)&identity_hdr, (unsigned char*)(&identity_hdr + 1));
|
||||
diameter_avp_header hdr;
|
||||
*(unsigned int*)hdr.code = htonl(0x00000001);
|
||||
hdr.flags = diameter_avp_flag_mandatory;
|
||||
hton24((unsigned int)size_identity_outer, hdr.length);
|
||||
m_packet_res.m_data.insert(m_packet_res.m_data.end(), (unsigned char*)&hdr, (unsigned char*)(&hdr + 1));
|
||||
|
||||
// Identity
|
||||
m_packet_res.m_data.insert(m_packet_res.m_data.end(), identity_utf8.begin(), identity_utf8.end());
|
||||
m_packet_res.m_data.insert(m_packet_res.m_data.end(), padding_identity, 0);
|
||||
|
||||
// Diameter AVP Code User-Password (0x00000002)
|
||||
m_packet_res.m_data.push_back(0x00);
|
||||
m_packet_res.m_data.push_back(0x00);
|
||||
m_packet_res.m_data.push_back(0x00);
|
||||
m_packet_res.m_data.push_back(0x02);
|
||||
|
||||
// Diameter AVP Flags & Length
|
||||
unsigned int password_hdr = htonl((diameter_avp_flag_mandatory << 24) | (unsigned int)size_password_outer);
|
||||
m_packet_res.m_data.insert(m_packet_res.m_data.end(), (unsigned char*)&password_hdr, (unsigned char*)(&password_hdr + 1));
|
||||
*(unsigned int*)hdr.code = htonl(0x00000002);
|
||||
hton24((unsigned int)size_password_outer, hdr.length);
|
||||
m_packet_res.m_data.insert(m_packet_res.m_data.end(), (unsigned char*)&hdr, (unsigned char*)(&hdr + 1));
|
||||
|
||||
// Password
|
||||
m_packet_res.m_data.insert(m_packet_res.m_data.end(), password_utf8.begin(), password_utf8.end());
|
||||
@ -167,7 +157,7 @@ void eap::method_pap::get_response_packet(
|
||||
// Not fragmented.
|
||||
if (size_packet <= size_packet_limit) {
|
||||
// No need to fragment the packet.
|
||||
m_module.log_event(&EAPMETHOD_PACKET_SEND, event_data((unsigned int)eap_type_pap), event_data((unsigned int)size_data), event_data::blank);
|
||||
m_module.log_event(&EAPMETHOD_PACKET_SEND, event_data((unsigned int)eap_type_legacy_pap), event_data((unsigned int)size_data), event_data::blank);
|
||||
} else {
|
||||
// But it should be fragmented.
|
||||
throw com_runtime_error(TYPE_E_SIZETOOBIG, __FUNCTION__ " PAP message exceeds 64kB.");
|
||||
@ -190,7 +180,7 @@ void eap::method_pap::get_result(
|
||||
|
||||
switch (reason) {
|
||||
case EapPeerMethodResultSuccess: {
|
||||
m_module.log_event(&EAPMETHOD_METHOD_SUCCESS, event_data((unsigned int)eap_type_pap), event_data::blank);
|
||||
m_module.log_event(&EAPMETHOD_METHOD_SUCCESS, event_data((unsigned int)eap_type_legacy_pap), event_data::blank);
|
||||
m_cfg.m_auth_failed = false;
|
||||
|
||||
ppResult->fIsSuccess = TRUE;
|
||||
@ -202,7 +192,7 @@ void eap::method_pap::get_result(
|
||||
case EapPeerMethodResultFailure:
|
||||
m_module.log_event(
|
||||
m_phase_prev < phase_finished ? &EAPMETHOD_METHOD_FAILURE_INIT : &EAPMETHOD_METHOD_FAILURE,
|
||||
event_data((unsigned int)eap_type_pap), event_data::blank);
|
||||
event_data((unsigned int)eap_type_legacy_pap), event_data::blank);
|
||||
|
||||
// Mark credentials as failed, so GUI can re-prompt user.
|
||||
// But be careful: do so only after credentials were actually tried.
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit b76203f95e90585e606b5cc7e4c22e1025c304d0
|
||||
Subproject commit af2bb0a847d49aa546b8596b8c312aad6462e458
|
Loading…
x
Reference in New Issue
Block a user