diff -r e03a3db4489e -r 9abfd4f00d37 eapol/eapol_framework/eapol_common/include/eap_method_settings.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eapol/eapol_framework/eapol_common/include/eap_method_settings.h Mon May 24 20:32:47 2010 +0300 @@ -0,0 +1,312 @@ +/* +* Copyright (c) 2001-2006 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: EAP-settings class. +* +*/ + +/* +* %version: 23 % +*/ + +#ifndef _EAP_METHOD_SETTINGS_H_ +#define _EAP_METHOD_SETTINGS_H_ + +#include "eap_am_tools.h" +#include "eap_expanded_type.h" +#include "eap_variable_data.h" +#include "eap_array.h" + +//------------------------------------------------------------------------------- + +class eap_certificate_entry_c +{ + +private: + + /// This is pointer to the tools class. + abs_eap_am_tools_c * const m_am_tools; + +public: + + eap_certificate_entry_c( + abs_eap_am_tools_c * const tools); + + virtual ~eap_certificate_entry_c(); + + enum eap_certificate_type_e + { + eap_certificate_type_none, + eap_certificate_type_user, + eap_certificate_type_CA, + }; + + bool get_is_valid(); + + bool get_is_valid_data(); + + eap_certificate_entry_c * copy(); + + void trace() const; + + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + // Specifies whether this entry describes user or CA certificate (mandatory) + eap_certificate_type_e m_CertType; + + // Subject name in distinguished name ASCII form. This is optional. + // For example "/C=US/O=Some organization/CN=Some common name". + bool m_SubjectNamePresent; + eap_variable_data_c m_SubjectName; + + // Issuer name in distinguished name ASCII form. This is optional. + // For example "/C=US/O=Some organization/CN=Some common name". + bool m_IssuerNamePresent; + eap_variable_data_c m_IssuerName; + + // Serial number in ASCII form. This is optional. + bool m_SerialNumberPresent; + eap_variable_data_c m_SerialNumber; + + // Subject key in binary form. This is mandatory. + bool m_SubjectKeyIDPresent; + eap_variable_data_c m_SubjectKeyID; + + // Thumbprint in binary form. This is optional. + bool m_ThumbprintPresent; + eap_variable_data_c m_Thumbprint; + + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + // This holds only the certificate label. This is the text UI will show. + bool m_LabelPresent; + eap_variable_data_c m_Label; + + // Primary name of the certificate if any, UI uses this. + bool m_PrimaryNamePresent; + eap_variable_data_c m_PrimaryName; + + // Secondary name of the certificate if any, UI uses this. + bool m_SecondaryNamePresent; + eap_variable_data_c m_SecondaryName; + + // UI uses this to indicate enabled certificate. + bool m_iIsEnabledPresent; + bool m_iIsEnabled; + + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +}; + +//------------------------------------------------------------------------------- + +class eap_method_values_c +{ + +private: + + /// This is pointer to the tools class. + abs_eap_am_tools_c * const m_am_tools; + +protected: + + abs_eap_am_tools_c * get_am_tools() const; + +public: + + eap_method_values_c( + abs_eap_am_tools_c * const tools); + + virtual ~eap_method_values_c(); + + bool m_is_valid; + + /// Status of the operation. + eap_status_e m_completion_status; + + /// Specifies the EAP-method these settings are for. + eap_type_value_e m_EAPType; + + /// Specifies the index type (bearer protocol) these settings are for. + /// Values are ELan or EVpn. + u32_t m_IndexType; + + /// Specifies unique index in the settings of the bearer protocol. + u32_t m_Index; + + /// Use automatic Ca certificate. + bool m_UseAutomaticCACertificatePresent; + bool m_UseAutomaticCACertificate; + + /// Use automatic username. + bool m_UseAutomaticUsernamePresent; + bool m_UseAutomaticUsername; + + /// Use automatic realm. + bool m_UseAutomaticRealmPresent; + bool m_UseAutomaticRealm; + + /// Username in ASCII format + bool m_UsernamePresent; + eap_variable_data_c m_Username_fix; + + /// Get: Whether password is stored in database. + /// Set: Whether password must be cleared from database. + bool m_PasswordExistPresent; + bool m_PasswordExist; + + /// Password in ASCII format + bool m_PasswordPresent; + eap_variable_data_c m_Password; + + /// Realm in ASCII format + bool m_RealmPresent; + eap_variable_data_c m_Realm; + + /// Use pseudonym identities in EAP-SIM/AKA + bool m_UsePseudonymsPresent; + bool m_UsePseudonyms; + + /// Whether EAP-TLS/TTLS/PEAP should verify server realm + bool m_VerifyServerRealmPresent; + bool m_VerifyServerRealm; + + /// Whether EAP-TLS/TTLS/PEAP should require client authentication + bool m_RequireClientAuthenticationPresent; + bool m_RequireClientAuthentication; + + /// General session validity time (in minutes) + bool m_SessionValidityTimePresent; + u32_t m_SessionValidityTime; + + /// An array of allowed cipher suites for EAP-TLS/TTLS/PEAP. + /// Refer to RFC2246 chapter A.5 for the values. + bool m_CipherSuitesPresent; + eap_array_c m_CipherSuites; + + /// Which EAP-PEAP versions are allowed + bool m_PEAPVersionsPresent; + bool m_PEAPv0Allowed; + bool m_PEAPv1Allowed; + bool m_PEAPv2Allowed; + + /// Array listing the allowed certificates for EAP-TLS/TTLS/PEAP. + /// Subject key ID and Certificate type are the only mandatory certificate + /// details needed at the moment. + bool m_CertificatesPresent; + eap_array_c m_Certificates; + + /// Array listing the allowed encapsulated EAP types (in priority order). + /// Use EAP type values from eap_type_value_e. + bool m_EnabledEncapsulatedEAPTypesPresent; + eap_array_c m_EnabledEncapsulatedEAPTypes; + + /// Array listing the disabled encapsulated EAP types. + /// Use EAP type values from eap_type_value_e. + bool m_DisabledEncapsulatedEAPTypesPresent; + eap_array_c m_DisabledEncapsulatedEAPTypes; + + /// Whether Authenticated provisioning mode allowed or not in EAP-FAST. + bool m_AuthProvModeAllowedPresent; + bool m_AuthProvModeAllowed; + + /// Whether Unauthenticated provisioning mode allowed or not in EAP-FAST. + bool m_UnauthProvModeAllowedPresent; + bool m_UnauthProvModeAllowed; + + /// PAC group reference in ASCII format for EAP-FAST. + bool m_PACGroupReferencePresent; + eap_variable_data_c m_PACGroupReference; + + /// Whether to Warn (or Prompt) for ADHP (Authenticated Diffie-Hellman Protocol) + /// auto-provisioning when there is no PAC at all. EAP-FAST specific. + bool m_WarnADHPNoPACPresent; + bool m_WarnADHPNoPAC; + + /// Whether to Warn (or Prompt) for ADHP auto-provisioning when + /// there is no PAC that matches the A-ID sent by server. EAP-FAST specific. + bool m_WarnADHPNoMatchingPACPresent; + bool m_WarnADHPNoMatchingPAC; + + /// Whether to Warn (or Prompt) when client encouters a server that has provisioned + /// the client with a PAC before but is not currently selected as the default server. + /// EAP-FAST specific. + bool m_WarnNotDefaultServerPresent; + bool m_WarnNotDefaultServer; + + // Array listing the active and disabled EAP types (in priority order). + // Use EAP type values from eap_type_value_e. + bool m_SelectedEAPTypesPresent; + eap_array_c m_active_eap_methods; + eap_array_c m_disabled_eap_methods; + + bool m_TunnelingTypePresent; + eap_type_value_e m_TunnelingType; + + bool m_DestinationIndexAndTypePresent; + u32_t m_DestinationIndexType; + u32_t m_DestinationIndex; + + bool m_MethodInfoPresent; + eap_variable_data_c m_KReleaseDate; + eap_variable_data_c m_KEapTypeVersion; + eap_variable_data_c m_KManufacturer; + + bool m_ButtonIdPresent; // JPH: remove this + i32_t m_ButtonId; // JPH: remove this + + bool m_ShowPassWordPromptPresent; + bool m_ShowPassWordPrompt; + + bool m_UseIdentityPrivacyPresent; + bool m_UseIdentityPrivacy; + +}; + +//------------------------------------------------------------------------------- + +class eap_method_settings_c +: public eap_method_values_c +{ +public: + + eap_method_settings_c( + abs_eap_am_tools_c * const tools); + + eap_method_settings_c( + abs_eap_am_tools_c * const tools, + const eap_method_settings_c * const init); + + virtual ~eap_method_settings_c(); + + void trace() const; + +}; + +//------------------------------------------------------------------------------- + +#if defined(USE_EAP_TRACE) + + #define EAP_TRACE_METHOD_SETTINGS(settings) { (settings)->trace(); } + +#else + + #define EAP_TRACE_METHOD_SETTINGS(settings) + +#endif //#if defined(USE_EAP_TRACE) + + +//------------------------------------------------------------------------------- + +#endif //#ifndef _EAP_METHOD_SETTINGS_H_ + +// End of file