1 /* 2 * Copyright (c) 2023-2024 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_manager_proxy.h" 26 27 #ifdef WIFI_EDM_ENABLE 28 #include "wifi_msg.h" 29 #include "wifi_password.h" 30 #endif 31 32 namespace OHOS { 33 namespace EDM { 34 struct AsyncIsWifiActiveCallbackInfo : AsyncCallbackInfo { 35 OHOS::AppExecFwk::ElementName elementName; 36 }; 37 38 #ifdef WIFI_EDM_ENABLE 39 struct AsyncSetWifiProfileCallbackInfo : AsyncCallbackInfo { 40 OHOS::AppExecFwk::ElementName elementName; 41 OHOS::Wifi::WifiDeviceConfig wifiDeviceConfig; 42 WifiPassword pwd; 43 }; 44 #endif 45 46 enum class IpType { 47 STATIC = 0, 48 DHCP, 49 UNKNOWN, 50 }; 51 52 enum class SecurityType { 53 // Invalid security type. 54 SEC_TYPE_INVALID = 0, 55 // Open. 56 SEC_TYPE_OPEN = 1, 57 // Wired Equivalent Privacy (WEP). 58 SEC_TYPE_WEP = 2, 59 // Pre-shared key (PSK). 60 SEC_TYPE_PSK = 3, 61 // Simultaneous Authentication of Equals (SAE). 62 SEC_TYPE_SAE = 4, 63 // EAP authentication. 64 SEC_TYPE_EAP = 5, 65 // SUITE_B_192 192 bit level. 66 SEC_TYPE_EAP_SUITE_B = 6, 67 // Opportunistic Wireless Encryption. 68 SEC_TYPE_OWE = 7, 69 // WAPI certificate to be specified. 70 SEC_TYPE_WAPI_CERT = 8, 71 // WAPI pre-shared key to be specified. 72 SEC_TYPE_WAPI_PSK = 9, 73 }; 74 75 enum class EapMethod { 76 EAP_NONE = 0, 77 EAP_PEAP = 1, 78 EAP_TLS = 2, 79 EAP_TTLS = 3, 80 EAP_PWD = 4, 81 EAP_SIM = 5, 82 EAP_AKA = 6, 83 EAP_AKA_PRIME = 7, 84 EAP_UNAUTH_TLS = 8, 85 }; 86 87 class WifiManagerAddon { 88 public: 89 WifiManagerAddon() = default; 90 ~WifiManagerAddon() = default; 91 92 static napi_value Init(napi_env env, napi_value exports); 93 private: 94 #ifdef WIFI_EDM_ENABLE 95 static bool JsObjToDeviceConfig(napi_env env, napi_value object, Wifi::WifiDeviceConfig &config, 96 WifiPassword &pwd); 97 static bool ConvertEncryptionMode(int32_t securityType, Wifi::WifiDeviceConfig &config, WifiPassword &pwd); 98 static bool ProcessIpType(int32_t ipType, napi_env env, napi_value object, Wifi::WifiIpConfig &ipConfig); 99 static bool ConfigStaticIp(napi_env env, napi_value object, Wifi::WifiIpConfig &ipConfig); 100 static bool ProcessEapConfig(napi_env env, napi_value object, 101 Wifi::WifiEapConfig &eapConfig, WifiPassword &pwd); 102 static bool ProcessEapPeapConfig(napi_env env, napi_value object, 103 Wifi::WifiEapConfig &eapConfig, WifiPassword &pwd); 104 static bool ProcessEapTlsConfig(napi_env env, napi_value object, Wifi::WifiEapConfig &eapConfig); 105 #endif 106 static napi_value IsWifiActive(napi_env env, napi_callback_info info); 107 static napi_value SetWifiProfile(napi_env env, napi_callback_info info); 108 static void NativeIsWifiActive(napi_env env, void *data); 109 static void NativeSetWifiProfile(napi_env env, void *data); 110 static void CreateWifiSecurityTypeObject(napi_env env, napi_value value); 111 static void CreateIpTypeObject(napi_env env, napi_value value); 112 static void CreateEapMethodObject(napi_env env, napi_value value); 113 static void CreatePhase2MethodObject(napi_env env, napi_value value); 114 static napi_value SetWifiDisabled(napi_env env, napi_callback_info info); 115 static napi_value IsWifiDisabled(napi_env env, napi_callback_info info); 116 static napi_value IsWifiActiveSync(napi_env env, napi_callback_info info); 117 static napi_value SetWifiProfileSync(napi_env env, napi_callback_info info); 118 }; 119 } // namespace EDM 120 } // namespace OHOS 121 122 #endif // INTERFACES_KITS_WIFI_MANAGER_INCLUDE_WIFI_MANAGER_ADDON_H 123