diff options
-rw-r--r-- | Android.bp | 2 | ||||
-rw-r--r-- | service/CleanSpec.mk | 4 | ||||
-rw-r--r-- | service/apex/Android.bp | 45 | ||||
-rw-r--r-- | service/apex/AndroidManifest.xml | 24 | ||||
-rw-r--r-- | service/apex/apex_manifest.json | 5 | ||||
-rw-r--r-- | service/apex/com.android.wifi.avbpubkey | bin | 0 -> 1032 bytes | |||
-rw-r--r-- | service/apex/com.android.wifi.pem | 51 | ||||
-rw-r--r-- | service/apex/com.android.wifi.pk8 | bin | 0 -> 2375 bytes | |||
-rw-r--r-- | service/apex/com.android.wifi.x509.pem | 35 | ||||
-rw-r--r-- | service/java/com/android/server/wifi/WifiNative.java | 10 |
10 files changed, 174 insertions, 2 deletions
diff --git a/Android.bp b/Android.bp index 7c74fcb3e..5c41f75c7 100644 --- a/Android.bp +++ b/Android.bp @@ -16,5 +16,7 @@ subdirs = [ "libwifi_system", "libwifi_system_iface", "service", + "service/apex", + "service/proto", "tests", ] diff --git a/service/CleanSpec.mk b/service/CleanSpec.mk index da0481f51..603ba73bd 100644 --- a/service/CleanSpec.mk +++ b/service/CleanSpec.mk @@ -50,6 +50,10 @@ $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/etc/init/wifi.rc) $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/priv-app/WifiStack) $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/etc/init/wifi_inprocess.rc) $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/priv-app/InProcessWifiStack) +$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/framework/wifi-service.jar) +$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/priv-app/wifi-service-resources) +$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/lib64/libwifi-jni.so) +$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/lib/libwifi-jni.so) # ************************************************ # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST # ************************************************ diff --git a/service/apex/Android.bp b/service/apex/Android.bp new file mode 100644 index 000000000..fff3f2455 --- /dev/null +++ b/service/apex/Android.bp @@ -0,0 +1,45 @@ +// +// Copyright (C) 2019 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. +// + +// Mainline wifi apex module. +apex { + name: "com.android.wifi", + manifest: "apex_manifest.json", + native_shared_libs: ["libwifi-jni"], + java_libs: ["wifi-service"], + apps: ["wifi-service-resources"], + + required: [ + "cacerts_wfa", + "services", + ], + + init_rc: ["../wifi.rc"], + + key: "com.android.wifi.key", + certificate: ":com.android.wifi.certificate", +} + +apex_key { + name: "com.android.wifi.key", + public_key: "com.android.wifi.avbpubkey", + private_key: "com.android.wifi.pem", +} + +android_app_certificate { + name: "com.android.wifi.certificate", + certificate: "com.android.wifi", +} diff --git a/service/apex/AndroidManifest.xml b/service/apex/AndroidManifest.xml new file mode 100644 index 000000000..efc8cc0f0 --- /dev/null +++ b/service/apex/AndroidManifest.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + * Copyright (C) 2019 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. + --> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.wifi"> + <!-- APEX does not have classes.dex --> + <application android:hasCode="false" /> + <!-- Setting maxSdk to lock the module to R. minSdk is auto-set by build system --> + <uses-sdk android:maxSdkVersion="30" android:targetSdkVersion="30"/> +</manifest> + diff --git a/service/apex/apex_manifest.json b/service/apex/apex_manifest.json new file mode 100644 index 000000000..a5792552c --- /dev/null +++ b/service/apex/apex_manifest.json @@ -0,0 +1,5 @@ +{ + "name": "com.android.wifi", + "version": 1 +} + diff --git a/service/apex/com.android.wifi.avbpubkey b/service/apex/com.android.wifi.avbpubkey Binary files differnew file mode 100644 index 000000000..e98ee34db --- /dev/null +++ b/service/apex/com.android.wifi.avbpubkey diff --git a/service/apex/com.android.wifi.pem b/service/apex/com.android.wifi.pem new file mode 100644 index 000000000..3d080f1e7 --- /dev/null +++ b/service/apex/com.android.wifi.pem @@ -0,0 +1,51 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +799iaQKCAQBxXf42ntccUK4e2s8OlAKx92WoFSc9j1hqAVXoUlYEso0fSd9/uzv4 +0jG267h1lj2bahFOjp8zoJOLr/l4djMYvVn1uDH78DkbuSEMPdS/TPu0ifyR6Ral +/1/OZteCb4ut1ct2hl2f4XEHhNxoaYKOz4DdcfWzDH1UMuNdLoAPZ2xHTJ3D/1Qz +YzglYOwALQPUMXeKGQcWSzxRQXdkGOYxBiGdHtcOHzD4H7Z5GlQJ/Wr2xAreRFUr +ApzXpbJ2ZlboCooxEPmyzuLDlrawllWIHjgBfbf1Ht8D5dUmo8XWfXrJt8ovj9xl +e3bnHhNpI+Xgb4NVhoB01px7oVXNp4S7AoIBAQDU5VsyDmdL1a8hVLL0rLzAjBh/ +RSK2IGqibfOITLcmvCn46JOVmytc2F+odjrsAvHUmU+yQNgMpmDNch292TXR2aJq +kqxV1HsNJ/Pb9wFHb8xP29MgMeLMhfo35EPUdYVtsHTzH+5cbDT50PpOnXff6+h0 +fhrMElXYu4wg6ZPZ4BYt/PY+qhiRZ47MtAqw3byaCe2+sLNSpU/tt+klIYuWvTyV +pE/suflS3/JnJCzs8MrP0mX73AoILauqGEsc8+hsf5X2Rra2sllV4YfiGKSUoISq +u9wRjoGkB8SSg1GywotyXFJc3dQoLtMCk0ABBQCM9zp+xjdB9AeWS4tjSBO3 +-----END RSA PRIVATE KEY----- diff --git a/service/apex/com.android.wifi.pk8 b/service/apex/com.android.wifi.pk8 Binary files differnew file mode 100644 index 000000000..a47b169eb --- /dev/null +++ b/service/apex/com.android.wifi.pk8 diff --git a/service/apex/com.android.wifi.x509.pem b/service/apex/com.android.wifi.x509.pem new file mode 100644 index 000000000..fbc798dfc --- /dev/null +++ b/service/apex/com.android.wifi.x509.pem @@ -0,0 +1,35 @@ +-----BEGIN CERTIFICATE----- +MIIGJzCCBA+gAwIBAgIUYfh1Zzu3M79bdOVvnEraqzmHwFAwDQYJKoZIhvcNAQEL +BQAwgaExCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQH +DA1Nb3VudGFpbiBWaWV3MQ8wDQYDVQQKDAZHb29nbGUxEDAOBgNVBAsMB0FuZHJv +aWQxFTATBgNVBAMMDGFuZHJvaWQtd2lmaTErMCkGCSqGSIb3DQEJARYcYW5kcm9p +ZC13aWZpLXRlYW1AZ29vZ2xlLmNvbTAgFw0xOTExMjExNzIwMzZaGA80NzU3MTAx +NzE3MjAzNlowgaExCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYw +FAYDVQQHDA1Nb3VudGFpbiBWaWV3MQ8wDQYDVQQKDAZHb29nbGUxEDAOBgNVBAsM +B0FuZHJvaWQxFTATBgNVBAMMDGFuZHJvaWQtd2lmaTErMCkGCSqGSIb3DQEJARYc +YW5kcm9pZC13aWZpLXRlYW1AZ29vZ2xlLmNvbTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAKZmFJJiKPBqWfJ1jt0T1WEQ/6PzDOxF8smQql8TDeO2hbNK +v75hrZ668RkyQfx5kejU0sY3lG7xj7TouYUlRJys0FqfyVbhUCDC4+gOvX/U5i9F +VhOS4PLPTEQ7k8/siDkCp412uYkOTbK4TGTL/21vD0aLJKqf/ofSbDS8HWfmhEVJ +vMIL+bOGdGTQ+wbDp3Pus1zob+yRPE66iQQ7ZKFCVcX0+hSWjzf7nS2Fmf0E952c +A2KnI0CpSxWogS4YLSbvZPDueo+kwfdHsQkl3H8VNUTbKNwAdVCeemrtkqFjy/s7 +c8Igm4gAPyyh9PDAzw+Qgquy+11NMiln06oKAAZpz26V7ylMkAqR2OMACZqkLRP7 +lWX+qp79NVcXtaz/RJi8/UKSCo5jAlsUoDgz8ddozUXswK1lvlN7BS9wQ4XS5JXY +IxGjz2ipaWI+cjD+rctaS1d2stujL1Iu93eAgFv0uzCbm8jI1XT/qWhZir0f5KcH +ihqiMPiY2psob4tA4zdccOTYw545XA/sT7kS2DuTlRXQv7y2Yt62EOsxpAhGEWKr +Rw+aBuk8Vs/6xST5WfqU0H8syaVqWNlevLC8ltLIF1MJpBC8FXKS1L2QNMGVTDyh +UDrxnVCRU0gsr7fE39cNTFyobh9Uq3qXAkAbA50zgo2vuEp5htdy1s4QaJKJAgMB +AAGjUzBRMB0GA1UdDgQWBBS4m2DrPxP8E3qgWUFlFe/25emNFDAfBgNVHSMEGDAW +gBS4m2DrPxP8E3qgWUFlFe/25emNFDAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3 +DQEBCwUAA4ICAQBxlQ16HQXTVMPPOmuDlfSZOoWdYyK8cCxVEsuco1uN0pMd5ekl +EoTE6GrcjBI1LIoI9n3s/3lnYZrdgQ/kIXNHHutizONz6jgT8m4m3w8BqC9QOXKQ +d7qElOesp4ruJZoAGuQOoDuNg544ypQZGhBwFQi3RPvk/W1U2ZrXNYO1ONHNFE1/ +ZXotGkNxhB9E+eVYo16MKpyxEpT5vE+k0LK/VRFDGrZF2p2C7DXmMOE66lY3iyRP +ynKVbzoI0dyyVl/BZ/9dGCCgvhJWo3oUfwRLxqwOt81DOiDUT2DV2XB2TEPFLTwQ +gwlw5Lkmd7ecj7J0E4QIkAPsQYLI/fVelC6QUeqvbKORur4vvkVdhOj2GBpb/6tQ +F5i8osLk1kqBwMpnDZCGKSS22JqY7lBPmlkCPCfRd3uVmK42ItAUpYcdLk7lb90o +wO5OgpOPajl6ImYe8kpqoeLBUK4E6qrve3MLMukhCSwR8hrteAEL86R631P6A747 +mkZUgbKPqkeUSFd+0AfzLTjvaevgfIEF/wz5HDHGAloWkd45m5Tdd5I06fqPVu/2 +rxzqZChKW2XHtwaTl5qkYUHi6pqkq+oWhpjWCS84wCNmlX8j4lrZ5mumoOaPpElK +Tbj1WZ16OOPDXWONclE29gfC/+XaOKLLhjdfh0+ZEJ7BZSCBCMyQWXxbcQ== +-----END CERTIFICATE----- diff --git a/service/java/com/android/server/wifi/WifiNative.java b/service/java/com/android/server/wifi/WifiNative.java index eeef34fc3..21abbd254 100644 --- a/service/java/com/android/server/wifi/WifiNative.java +++ b/service/java/com/android/server/wifi/WifiNative.java @@ -72,6 +72,8 @@ import java.util.TimeZone; */ public class WifiNative { private static final String TAG = "WifiNative"; + private static final String JNI_LIB = "/apex/com.android.wifi/lib64/libwifi-jni.so"; + private final SupplicantStaIfaceHal mSupplicantStaIfaceHal; private final HostapdHal mHostapdHal; private final WifiVendorHal mWifiVendorHal; @@ -3365,8 +3367,12 @@ public class WifiNative { /* Register native functions */ static { /* Native functions are defined in libwifi-jni.so */ - System.loadLibrary("wifi-jni"); - registerNatives(); + try { + System.load(JNI_LIB); + registerNatives(); + } catch (UnsatisfiedLinkError e) { + Log.wtf(TAG, "Failed to load jni library", e); + } } private static native int registerNatives(); |