1 /* 2 * Copyright (c) 2023-2025 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef INTERFACES_KITS_WIFI_MANAGER_INCLUDE_WIFI_MANAGER_ADDON_H 17 #define INTERFACES_KITS_WIFI_MANAGER_INCLUDE_WIFI_MANAGER_ADDON_H 18 19 #include "napi_edm_error.h" 20 #include "napi_edm_common.h" 21 #include "napi/native_common.h" 22 #include "napi/native_node_api.h" 23 #include "napi/native_api.h" 24 #include "want.h" 25 #include "wifi_id.h" 26 #include "wifi_manager_proxy.h" 27 28 #ifdef WIFI_EDM_ENABLE 29 #include "wifi_msg.h" 30 #include "wifi_password.h" 31 #endif 32 33 namespace OHOS { 34 namespace EDM { 35 struct AsyncIsWifiActiveCallbackInfo : AsyncCallbackInfo { 36 OHOS::AppExecFwk::ElementName elementName; 37 }; 38 39 #ifdef WIFI_EDM_ENABLE 40 struct AsyncSetWifiProfileCallbackInfo : AsyncCallbackInfo { 41 OHOS::AppExecFwk::ElementName elementName; 42 OHOS::Wifi::WifiDeviceConfig wifiDeviceConfig; 43 WifiPassword pwd; 44 }; 45 #endif 46 47 enum class IpType { 48 STATIC = 0, 49 DHCP, 50 UNKNOWN, 51 }; 52 53 enum class SecurityType { 54 // Invalid security type. 55 SEC_TYPE_INVALID = 0, 56 // Open. 57 SEC_TYPE_OPEN = 1, 58 // Wired Equivalent Privacy (WEP). 59 SEC_TYPE_WEP = 2, 60 // Pre-shared key (PSK). 61 SEC_TYPE_PSK = 3, 62 // Simultaneous Authentication of Equals (SAE). 63 SEC_TYPE_SAE = 4, 64 // EAP authentication. 65 SEC_TYPE_EAP = 5, 66 // SUITE_B_192 192 bit level. 67 SEC_TYPE_EAP_SUITE_B = 6, 68 // Opportunistic Wireless Encryption. 69 SEC_TYPE_OWE = 7, 70 // WAPI certificate to be specified. 71 SEC_TYPE_WAPI_CERT = 8, 72 // WAPI pre-shared key to be specified. 73 SEC_TYPE_WAPI_PSK = 9, 74 }; 75 76 enum class EapMethod { 77 EAP_NONE = 0, 78 EAP_PEAP = 1, 79 EAP_TLS = 2, 80 EAP_TTLS = 3, 81 EAP_PWD = 4, 82 EAP_SIM = 5, 83 EAP_AKA = 6, 84 EAP_AKA_PRIME = 7, 85 EAP_UNAUTH_TLS = 8, 86 }; 87 88 class WifiManagerAddon { 89 public: 90 WifiManagerAddon() = default; 91 ~WifiManagerAddon() = default; 92 93 static napi_value Init(napi_env env, napi_value exports); 94 private: 95 #ifdef WIFI_EDM_ENABLE 96 static bool JsObjToDeviceConfig(napi_env env, napi_value object, Wifi::WifiDeviceConfig &config, 97 WifiPassword &pwd); 98 static bool ConvertEncryptionMode(int32_t securityType, Wifi::WifiDeviceConfig &config, WifiPassword &pwd); 99 static bool ProcessIpType(int32_t ipType, napi_env env, napi_value object, Wifi::WifiIpConfig &ipConfig); 100 static bool ConfigStaticIp(napi_env env, napi_value object, Wifi::WifiIpConfig &ipConfig); 101 static bool ProcessEapConfig(napi_env env, napi_value object, 102 Wifi::WifiEapConfig &eapConfig, WifiPassword &pwd); 103 static bool ProcessEapPeapConfig(napi_env env, napi_value object, 104 Wifi::WifiEapConfig &eapConfig, WifiPassword &pwd); 105 static bool ProcessEapTlsConfig(napi_env env, napi_value object, Wifi::WifiEapConfig &eapConfig); 106 #endif 107 static napi_value IsWifiActive(napi_env env, napi_callback_info info); 108 static napi_value IsWifiActiveHandler(napi_env env, napi_callback_info info, napi_async_execute_callback execute); 109 static napi_value SetWifiProfile(napi_env env, napi_callback_info info); 110 static napi_value SetWifiProfileHandler(napi_env env, napi_callback_info info, napi_async_execute_callback execute); 111 static void NativeIsWifiActive(napi_env env, void *data); 112 static void NativeSetWifiProfile(napi_env env, void *data); 113 static void CreateWifiSecurityTypeObject(napi_env env, napi_value value); 114 static void CreateIpTypeObject(napi_env env, napi_value value); 115 static void CreateEapMethodObject(napi_env env, napi_value value); 116 static void CreatePhase2MethodObject(napi_env env, napi_value value); 117 static napi_value SetWifiDisabled(napi_env env, napi_callback_info info); 118 static napi_value IsWifiDisabled(napi_env env, napi_callback_info info); 119 static napi_value IsWifiActiveSync(napi_env env, napi_callback_info info); 120 static napi_value SetWifiProfileSync(napi_env env, napi_callback_info info); 121 static napi_value AddAllowedWifiList(napi_env env, napi_callback_info info); 122 static napi_value GetAllowedWifiList(napi_env env, napi_callback_info info); 123 static napi_value RemoveAllowedWifiList(napi_env env, napi_callback_info info); 124 static napi_value AddOrRemoveAllowedWifiList(napi_env env, napi_callback_info info, bool isAdd); 125 static bool ParseWifiInfoArray(napi_env env, std::vector<WifiId> &wifiIds, napi_value object, bool isAllowed); 126 static bool GetWifiIdFromNAPI(napi_env env, napi_value value, WifiId &wifiId, bool isAllowed); 127 static napi_value WifiIdToJsObj(napi_env env, const WifiId &wifiId); 128 static napi_value AddDisallowedWifiList(napi_env env, napi_callback_info info); 129 static napi_value GetDisallowedWifiList(napi_env env, napi_callback_info info); 130 static napi_value RemoveDisallowedWifiList(napi_env env, napi_callback_info info); 131 static napi_value AddOrRemoveDisallowedWifiList(napi_env env, napi_callback_info info, bool isAdd); 132 static napi_value GetWifiList(napi_env env, napi_callback_info info, EdmInterfaceCode policyCode); 133 static napi_value TurnOnWifi(napi_env env, napi_callback_info info); 134 static napi_value TurnOffWifi(napi_env env, napi_callback_info info); 135 }; 136 } // namespace EDM 137 } // namespace OHOS 138 139 #endif // INTERFACES_KITS_WIFI_MANAGER_INCLUDE_WIFI_MANAGER_ADDON_H 140