From caf035283333ae50fbadba2aa391c75ad4e3e996 Mon Sep 17 00:00:00 2001 From: Simon Rozman Date: Wed, 3 Aug 2016 15:31:06 +0200 Subject: [PATCH] Packet processing methods made pure virtual in eap::session<>, stubs created in eap::session_ttls --- lib/EAPBase/include/Session.h | 38 ++++++--------------------- lib/TTLS/include/Session.h | 48 +++++++++++++++++++++++++++++++++++ lib/TTLS/src/Session.cpp | 44 ++++++++++++++++++++++++++++++++ 3 files changed, 100 insertions(+), 30 deletions(-) diff --git a/lib/EAPBase/include/Session.h b/lib/EAPBase/include/Session.h index 3d89156..5a61bb1 100644 --- a/lib/EAPBase/include/Session.h +++ b/lib/EAPBase/include/Session.h @@ -220,16 +220,7 @@ namespace eap _In_ DWORD dwReceivedPacketSize, _In_bytecount_(dwReceivedPacketSize) const EapPacket *pReceivedPacket, _Out_ EapPeerMethodOutput *pEapOutput, - _Out_ EAP_ERROR **ppEapError) - { - UNREFERENCED_PARAMETER(dwReceivedPacketSize); - UNREFERENCED_PARAMETER(pReceivedPacket); - UNREFERENCED_PARAMETER(pEapOutput); - assert(ppEapError); - - *ppEapError = m_module.make_error(ERROR_NOT_SUPPORTED, _T(__FUNCTION__) _T(" Not supported.")); - return false; - } + _Out_ EAP_ERROR **ppEapError) = 0; /// @@ -242,17 +233,9 @@ namespace eap /// - \c false otherwise. See \p ppEapError for details. /// virtual bool get_response_packet( - _Inout_ DWORD *pdwSendPacketSize, - _Inout_bytecap_(*dwSendPacketSize) EapPacket *pSendPacket, - _Out_ EAP_ERROR **ppEapError) - { - UNREFERENCED_PARAMETER(pdwSendPacketSize); - UNREFERENCED_PARAMETER(pSendPacket); - assert(ppEapError); - - *ppEapError = m_module.make_error(ERROR_NOT_SUPPORTED, _T(__FUNCTION__) _T(" Not supported.")); - return false; - } + _Inout_ DWORD *pdwSendPacketSize, + _Inout_bytecap_(*dwSendPacketSize) EapPacket *pSendPacket, + _Out_ EAP_ERROR **ppEapError) = 0; /// @@ -264,15 +247,10 @@ namespace eap /// - \c true if succeeded /// - \c false otherwise. See \p ppEapError for details. /// - virtual bool get_result(_In_ EapPeerMethodResultReason reason, _Out_ EapPeerMethodResult *ppResult, _Out_ EAP_ERROR **ppEapError) - { - UNREFERENCED_PARAMETER(reason); - UNREFERENCED_PARAMETER(ppResult); - assert(ppEapError); - - *ppEapError = m_module.make_error(ERROR_NOT_SUPPORTED, _T(__FUNCTION__) _T(" Not supported.")); - return false; - } + virtual bool get_result( + _In_ EapPeerMethodResultReason reason, + _Out_ EapPeerMethodResult *ppResult, + _Out_ EAP_ERROR **ppEapError) = 0; /// @} diff --git a/lib/TTLS/include/Session.h b/lib/TTLS/include/Session.h index 0ffd88a..be85915 100644 --- a/lib/TTLS/include/Session.h +++ b/lib/TTLS/include/Session.h @@ -74,5 +74,53 @@ namespace eap /// \returns Reference to this object /// session_ttls& operator=(_Inout_ session_ttls &&other); + + /// \name Packet processing + /// @{ + + /// + /// Processes a packet received by EAPHost from a supplicant. + /// + /// \sa [EapPeerProcessRequestPacket function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363621.aspx) + /// + /// \returns + /// - \c true if succeeded + /// - \c false otherwise. See \p ppEapError for details. + /// + virtual bool process_request_packet( + _In_ DWORD dwReceivedPacketSize, + _In_bytecount_(dwReceivedPacketSize) const EapPacket *pReceivedPacket, + _Out_ EapPeerMethodOutput *pEapOutput, + _Out_ EAP_ERROR **ppEapError); + + /// + /// Obtains a response packet from the EAP method. + /// + /// \sa [EapPeerGetResponsePacket function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363610.aspx) + /// + /// \returns + /// - \c true if succeeded + /// - \c false otherwise. See \p ppEapError for details. + /// + virtual bool get_response_packet( + _Inout_ DWORD *pdwSendPacketSize, + _Inout_bytecap_(*dwSendPacketSize) EapPacket *pSendPacket, + _Out_ EAP_ERROR **ppEapError); + + /// + /// Obtains the result of an authentication session from the EAP method. + /// + /// \sa [EapPeerGetResult function](https://msdn.microsoft.com/en-us/library/windows/desktop/aa363611.aspx) + /// + /// \returns + /// - \c true if succeeded + /// - \c false otherwise. See \p ppEapError for details. + /// + virtual bool get_result( + _In_ EapPeerMethodResultReason reason, + _Out_ EapPeerMethodResult *ppResult, + _Out_ EAP_ERROR **ppEapError); + + /// @} }; } diff --git a/lib/TTLS/src/Session.cpp b/lib/TTLS/src/Session.cpp index 6362dee..62f4918 100644 --- a/lib/TTLS/src/Session.cpp +++ b/lib/TTLS/src/Session.cpp @@ -61,3 +61,47 @@ eap::session_ttls& eap::session_ttls::operator=(_Inout_ session_ttls &&other) return *this; } + + +bool eap::session_ttls::process_request_packet( + _In_ DWORD dwReceivedPacketSize, + _In_bytecount_(dwReceivedPacketSize) const EapPacket *pReceivedPacket, + _Out_ EapPeerMethodOutput *pEapOutput, + _Out_ EAP_ERROR **ppEapError) +{ + UNREFERENCED_PARAMETER(dwReceivedPacketSize); + UNREFERENCED_PARAMETER(pReceivedPacket); + UNREFERENCED_PARAMETER(pEapOutput); + assert(ppEapError); + + *ppEapError = m_module.make_error(ERROR_NOT_SUPPORTED, _T(__FUNCTION__) _T(" Not supported.")); + return false; +} + + +bool eap::session_ttls::get_response_packet( + _Inout_ DWORD *pdwSendPacketSize, + _Inout_bytecap_(*dwSendPacketSize) EapPacket *pSendPacket, + _Out_ EAP_ERROR **ppEapError) +{ + UNREFERENCED_PARAMETER(pdwSendPacketSize); + UNREFERENCED_PARAMETER(pSendPacket); + assert(ppEapError); + + *ppEapError = m_module.make_error(ERROR_NOT_SUPPORTED, _T(__FUNCTION__) _T(" Not supported.")); + return false; +} + + +bool eap::session_ttls::get_result( + _In_ EapPeerMethodResultReason reason, + _Out_ EapPeerMethodResult *ppResult, + _Out_ EAP_ERROR **ppEapError) +{ + UNREFERENCED_PARAMETER(reason); + UNREFERENCED_PARAMETER(ppResult); + assert(ppEapError); + + *ppEapError = m_module.make_error(ERROR_NOT_SUPPORTED, _T(__FUNCTION__) _T(" Not supported.")); + return false; +}