| /** @file | |
| The Miscellaneous Routines for WiFi Connection Manager. | |
| Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| **/ | |
| #ifndef __EFI_WIFI_MGR_MISC_H__ | |
| #define __EFI_WIFI_MGR_MISC_H__ | |
| /** | |
| Empty function for event process function. | |
| @param[in] Event The Event needs to be processed | |
| @param[in] Context The context of the event | |
| **/ | |
| VOID | |
| EFIAPI | |
| WifiMgrInternalEmptyFunction ( | |
| IN EFI_EVENT Event, | |
| IN VOID *Context | |
| ); | |
| /** | |
| Convert the mac address into a hexadecimal encoded ":" seperated string. | |
| @param[in] Mac The mac address | |
| @param[in] StrSize The size, in bytes, of the output buffer specified by Str | |
| @param[out] Str The storage to return the mac string | |
| **/ | |
| VOID | |
| WifiMgrMacAddrToStr ( | |
| IN EFI_80211_MAC_ADDRESS *Mac, | |
| IN UINT32 StrSize, | |
| OUT CHAR16 *Str | |
| ); | |
| /** | |
| Read private key file to buffer. | |
| @param[in] FileContext The file context of private key file. | |
| @param[out] PrivateKeyDataAddr The buffer address to restore private key file, should be | |
| freed by caller. | |
| @param[out] PrivateKeyDataSize The size of read private key file. | |
| @retval EFI_SUCCESS Successfully read the private key file. | |
| @retval EFI_INVALID_PARAMETER One or more of the parameters is invalid. | |
| **/ | |
| EFI_STATUS | |
| WifiMgrReadFileToBuffer ( | |
| IN WIFI_MGR_FILE_CONTEXT *FileContext, | |
| OUT VOID **PrivateKeyDataAddr, | |
| OUT UINTN *PrivateKeyDataSize | |
| ); | |
| /** | |
| Get the Nic data by the NicIndex. | |
| @param[in] Private The pointer to the global private data structure. | |
| @param[in] NicIndex The index indicates the position of wireless NIC. | |
| @return Pointer to the Nic data, or NULL if not found. | |
| **/ | |
| WIFI_MGR_DEVICE_DATA * | |
| WifiMgrGetNicByIndex ( | |
| IN WIFI_MGR_PRIVATE_DATA *Private, | |
| IN UINT32 NicIndex | |
| ); | |
| /** | |
| Find a network profile through its' SSId and securit type, and the SSId is an unicode string. | |
| @param[in] SSId The target network's SSId. | |
| @param[in] SecurityType The target network's security type. | |
| @param[in] ProfileList The profile list on a Nic. | |
| @return Pointer to a network profile, or NULL if not found. | |
| **/ | |
| WIFI_MGR_NETWORK_PROFILE * | |
| WifiMgrGetProfileByUnicodeSSId ( | |
| IN CHAR16 *SSId, | |
| IN UINT8 SecurityType, | |
| IN LIST_ENTRY *ProfileList | |
| ); | |
| /** | |
| Find a network profile through its' SSId and securit type, and the SSId is an ascii string. | |
| @param[in] SSId The target network's SSId. | |
| @param[in] SecurityType The target network's security type. | |
| @param[in] ProfileList The profile list on a Nic. | |
| @return Pointer to a network profile, or NULL if not found. | |
| **/ | |
| WIFI_MGR_NETWORK_PROFILE * | |
| WifiMgrGetProfileByAsciiSSId ( | |
| IN CHAR8 *SSId, | |
| IN UINT8 SecurityType, | |
| IN LIST_ENTRY *ProfileList | |
| ); | |
| /** | |
| Find a network profile through its' profile index. | |
| @param[in] ProfileIndex The target network's profile index. | |
| @param[in] ProfileList The profile list on a Nic. | |
| @return Pointer to a network profile, or NULL if not found. | |
| **/ | |
| WIFI_MGR_NETWORK_PROFILE * | |
| WifiMgrGetProfileByProfileIndex ( | |
| IN UINT32 ProfileIndex, | |
| IN LIST_ENTRY *ProfileList | |
| ); | |
| /** | |
| To test if the AKMSuite is in supported AKMSuite list. | |
| @param[in] SupportedAKMSuiteCount The count of the supported AKMSuites. | |
| @param[in] SupportedAKMSuiteList The supported AKMSuite list. | |
| @param[in] AKMSuite The AKMSuite to be tested. | |
| @return True if this AKMSuite is supported, or False if not. | |
| **/ | |
| BOOLEAN | |
| WifiMgrSupportAKMSuite ( | |
| IN UINT16 SupportedAKMSuiteCount, | |
| IN UINT32 *SupportedAKMSuiteList, | |
| IN UINT32 *AKMSuite | |
| ); | |
| /** | |
| To check if the CipherSuite is in supported CipherSuite list. | |
| @param[in] SupportedCipherSuiteCount The count of the supported CipherSuites. | |
| @param[in] SupportedCipherSuiteList The supported CipherSuite list. | |
| @param[in] CipherSuite The CipherSuite to be tested. | |
| @return True if this CipherSuite is supported, or False if not. | |
| **/ | |
| BOOLEAN | |
| WifiMgrSupportCipherSuite ( | |
| IN UINT16 SupportedCipherSuiteCount, | |
| IN UINT32 *SupportedCipherSuiteList, | |
| IN UINT32 *CipherSuite | |
| ); | |
| /** | |
| Check an AKM suite list and a Cipher suite list to see if one or more AKM suites or Cipher suites | |
| are supported and find the matchable security type. | |
| @param[in] AKMList The target AKM suite list to be checked. | |
| @param[in] CipherList The target Cipher suite list to be checked | |
| @param[in] Nic The Nic to operate, contains the supported AKMSuite list | |
| and supported CipherSuite list | |
| @param[out] SecurityType To identify a security type from the AKM suite list and | |
| Cipher suite list | |
| @param[out] AKMSuiteSupported To identify if this security type is supported. If it is | |
| NULL, overcome this field | |
| @param[out] CipherSuiteSupported To identify if this security type is supported. If it is | |
| NULL, overcome this field | |
| @retval EFI_SUCCESS This operation has completed successfully. | |
| @retval EFI_INVALID_PARAMETER No Nic found or the suite list is null. | |
| **/ | |
| EFI_STATUS | |
| WifiMgrCheckRSN ( | |
| IN EFI_80211_AKM_SUITE_SELECTOR *AKMList, | |
| IN EFI_80211_CIPHER_SUITE_SELECTOR *CipherList, | |
| IN WIFI_MGR_DEVICE_DATA *Nic, | |
| OUT UINT8 *SecurityType, | |
| OUT BOOLEAN *AKMSuiteSupported, | |
| OUT BOOLEAN *CipherSuiteSupported | |
| ); | |
| /** | |
| To get the security type for a certain AKMSuite and CipherSuite. | |
| @param[in] AKMSuite An certain AKMSuite. | |
| @param[in] CipherSuite An certain CipherSuite. | |
| @return a security type if found, or SECURITY_TYPE_UNKNOWN. | |
| **/ | |
| UINT8 | |
| WifiMgrGetSecurityType ( | |
| IN UINT32 *AKMSuite, | |
| IN UINT32 *CipherSuite | |
| ); | |
| /** | |
| Get supported AKMSuites and CipherSuites from supplicant. | |
| @param[in] Nic The Nic to operate. | |
| @retval EFI_SUCCESS Get the supported suite list successfully. | |
| @retval EFI_INVALID_PARAMETER No Nic found or supplicant is NULL. | |
| **/ | |
| EFI_STATUS | |
| WifiMgrGetSupportedSuites ( | |
| IN WIFI_MGR_DEVICE_DATA *Nic | |
| ); | |
| /** | |
| Clean secrets from a network profile. | |
| @param[in] Profile The profile to be cleanned. | |
| **/ | |
| VOID | |
| WifiMgrCleanProfileSecrets ( | |
| IN WIFI_MGR_NETWORK_PROFILE *Profile | |
| ); | |
| /** | |
| Free all network profiles in a profile list. | |
| @param[in] ProfileList The profile list to be freed. | |
| **/ | |
| VOID | |
| WifiMgrFreeProfileList ( | |
| IN LIST_ENTRY *ProfileList | |
| ); | |
| /** | |
| Free user configured hidden network list. | |
| @param[in] HiddenList The hidden network list to be freed. | |
| **/ | |
| VOID | |
| WifiMgrFreeHiddenList ( | |
| IN LIST_ENTRY *HiddenList | |
| ); | |
| /** | |
| Free the resources of a config token. | |
| @param[in] ConfigToken The config token to be freed. | |
| **/ | |
| VOID | |
| WifiMgrFreeToken ( | |
| IN WIFI_MGR_MAC_CONFIG_TOKEN *ConfigToken | |
| ); | |
| #endif |