// // Copyright (C) 2013 The Android Open Source Project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // #ifndef SHILL_SUPPLICANT_SUPPLICANT_EAP_STATE_HANDLER_H_ #define SHILL_SUPPLICANT_SUPPLICANT_EAP_STATE_HANDLER_H_ #include <string> #include "shill/service.h" namespace shill { // This object tracks the state of wpa_supplicant's EAP association. // It parses events from wpa_supplicant and can notify callers when // wpa_supplicant succeeds or fails authentication. In the latter // case it can explain the failure in detail based on the course of // events leading up to it. class SupplicantEAPStateHandler { public: SupplicantEAPStateHandler(); virtual ~SupplicantEAPStateHandler(); // Receive the |status| and |parameter| from an EAP event and returns // true if this state transition indicates that the EAP authentication // process has succeeded. If instead the EAP authentication has failed, // |failure| will be set to reflect the type of failure that occurred, // false will be returned. If this EAP event has no direct outcome, // this function returns false without changing |failure|. virtual bool ParseStatus(const std::string& status, const std::string& parameter, Service::ConnectFailure* failure); // Resets the internal state of the handler. virtual void Reset(); virtual bool is_eap_in_progress() { return is_eap_in_progress_; } private: friend class SupplicantEAPStateHandlerTest; // The stored TLS error type which may lead to an EAP failure. std::string tls_error_; // Whether or not an EAP authentication is in progress. Note // specifically that an EAP failure in wpa_supplicant does not // automatically cause the EAP process to stop, while success does. bool is_eap_in_progress_; }; } // namespace shill #endif // SHILL_SUPPLICANT_SUPPLICANT_EAP_STATE_HANDLER_H_