summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--service/java/com/android/server/wifi/WifiServiceImpl.java3
-rw-r--r--service/java/com/android/server/wifi/WifiStateMachine.java7
-rw-r--r--service/java/com/android/server/wifi/hotspot2/PasspointConfigStoreData.java8
-rw-r--r--service/java/com/android/server/wifi/hotspot2/PasspointManager.java10
-rw-r--r--service/java/com/android/server/wifi/hotspot2/PasspointObjectFactory.java4
-rw-r--r--service/java/com/android/server/wifi/hotspot2/PasspointProvider.java13
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java12
-rw-r--r--tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointConfigStoreDataTest.java6
-rw-r--r--tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java35
-rw-r--r--tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointProviderTest.java3
10 files changed, 61 insertions, 40 deletions
diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java
index d715fae63..b68301010 100644
--- a/service/java/com/android/server/wifi/WifiServiceImpl.java
+++ b/service/java/com/android/server/wifi/WifiServiceImpl.java
@@ -1098,7 +1098,8 @@ public class WifiServiceImpl extends IWifiManager.Stub {
com.android.internal.R.bool.config_wifi_hotspot2_enabled)) {
throw new UnsupportedOperationException("Passpoint not enabled");
}
- return mWifiStateMachine.syncAddOrUpdatePasspointConfig(mWifiStateMachineChannel, config);
+ return mWifiStateMachine.syncAddOrUpdatePasspointConfig(mWifiStateMachineChannel, config,
+ Binder.getCallingUid());
}
/**
diff --git a/service/java/com/android/server/wifi/WifiStateMachine.java b/service/java/com/android/server/wifi/WifiStateMachine.java
index ebe6c3d07..ce25ba1ad 100644
--- a/service/java/com/android/server/wifi/WifiStateMachine.java
+++ b/service/java/com/android/server/wifi/WifiStateMachine.java
@@ -1846,9 +1846,9 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss
* @return true on success
*/
public boolean syncAddOrUpdatePasspointConfig(AsyncChannel channel,
- PasspointConfiguration config) {
+ PasspointConfiguration config, int uid) {
Message resultMsg = channel.sendMessageSynchronously(CMD_ADD_OR_UPDATE_PASSPOINT_CONFIG,
- config);
+ uid, 0, config);
boolean result = (resultMsg.arg1 == SUCCESS);
resultMsg.recycle();
return result;
@@ -3875,7 +3875,8 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss
break;
case CMD_ADD_OR_UPDATE_PASSPOINT_CONFIG:
int addResult = mPasspointManager.addOrUpdateProvider(
- (PasspointConfiguration) message.obj) ? SUCCESS : FAILURE;
+ (PasspointConfiguration) message.obj, message.arg1)
+ ? SUCCESS : FAILURE;
replyToMessage(message, message.what, addResult);
break;
case CMD_REMOVE_PASSPOINT_CONFIG:
diff --git a/service/java/com/android/server/wifi/hotspot2/PasspointConfigStoreData.java b/service/java/com/android/server/wifi/hotspot2/PasspointConfigStoreData.java
index 16432bdd7..74a4760b4 100644
--- a/service/java/com/android/server/wifi/hotspot2/PasspointConfigStoreData.java
+++ b/service/java/com/android/server/wifi/hotspot2/PasspointConfigStoreData.java
@@ -60,6 +60,7 @@ public class PasspointConfigStoreData implements WifiConfigStore.StoreData {
"Configuration";
private static final String XML_TAG_PROVIDER_ID = "ProviderID";
+ private static final String XML_TAG_CREATOR_UID = "CreatorUID";
private static final String XML_TAG_CA_CERTIFICATE_ALIAS = "CaCertificateAlias";
private static final String XML_TAG_CLIENT_CERTIFICATE_ALIAS = "ClientCertificateAlias";
private static final String XML_TAG_CLIENT_PRIVATE_KEY_ALIAS = "ClientPrivateKeyAlias";
@@ -203,6 +204,7 @@ public class PasspointConfigStoreData implements WifiConfigStore.StoreData {
throws XmlPullParserException, IOException {
XmlUtil.writeNextSectionStart(out, XML_TAG_SECTION_HEADER_PASSPOINT_PROVIDER);
XmlUtil.writeNextValue(out, XML_TAG_PROVIDER_ID, provider.getProviderId());
+ XmlUtil.writeNextValue(out, XML_TAG_CREATOR_UID, provider.getCreatorUid());
XmlUtil.writeNextValue(out, XML_TAG_CA_CERTIFICATE_ALIAS,
provider.getCaCertificateAlias());
XmlUtil.writeNextValue(out, XML_TAG_CLIENT_CERTIFICATE_ALIAS,
@@ -298,6 +300,7 @@ public class PasspointConfigStoreData implements WifiConfigStore.StoreData {
private PasspointProvider deserializeProvider(XmlPullParser in, int outerTagDepth)
throws XmlPullParserException, IOException {
long providerId = Long.MIN_VALUE;
+ int creatorUid = Integer.MIN_VALUE;
String caCertificateAlias = null;
String clientCertificateAlias = null;
String clientPrivateKeyAlias = null;
@@ -311,6 +314,9 @@ public class PasspointConfigStoreData implements WifiConfigStore.StoreData {
case XML_TAG_PROVIDER_ID:
providerId = (long) value;
break;
+ case XML_TAG_CREATOR_UID:
+ creatorUid = (int) value;
+ break;
case XML_TAG_CA_CERTIFICATE_ALIAS:
caCertificateAlias = (String) value;
break;
@@ -337,7 +343,7 @@ public class PasspointConfigStoreData implements WifiConfigStore.StoreData {
if (config == null) {
throw new XmlPullParserException("Missing Passpoint configuration");
}
- return new PasspointProvider(config, mKeyStore, mSimAccessor, providerId,
+ return new PasspointProvider(config, mKeyStore, mSimAccessor, providerId, creatorUid,
caCertificateAlias, clientCertificateAlias, clientPrivateKeyAlias);
}
diff --git a/service/java/com/android/server/wifi/hotspot2/PasspointManager.java b/service/java/com/android/server/wifi/hotspot2/PasspointManager.java
index ea7181321..f707a704c 100644
--- a/service/java/com/android/server/wifi/hotspot2/PasspointManager.java
+++ b/service/java/com/android/server/wifi/hotspot2/PasspointManager.java
@@ -218,7 +218,7 @@ public class PasspointManager {
* @param config Configuration of the Passpoint provider to be added
* @return true if provider is added, false otherwise
*/
- public boolean addOrUpdateProvider(PasspointConfiguration config) {
+ public boolean addOrUpdateProvider(PasspointConfiguration config, int uid) {
if (config == null) {
Log.e(TAG, "Configuration not provided");
return false;
@@ -245,7 +245,7 @@ public class PasspointManager {
// Create a provider and install the necessary certificates and keys.
PasspointProvider newProvider = mObjectFactory.makePasspointProvider(
- config, mKeyStore, mSimAccessor, mProviderIndex++);
+ config, mKeyStore, mSimAccessor, mProviderIndex++, uid);
if (!newProvider.installCertsAndKeys()) {
Log.e(TAG, "Failed to install certificates and keys to keystore");
@@ -261,7 +261,8 @@ public class PasspointManager {
mProviders.put(config.getHomeSp().getFqdn(), newProvider);
mWifiConfigManager.saveToStore(true /* forceWrite */);
- Log.d(TAG, "Added/updated Passpoint configuration: " + config.getHomeSp().getFqdn());
+ Log.d(TAG, "Added/updated Passpoint configuration: " + config.getHomeSp().getFqdn()
+ + " by " + uid);
return true;
}
@@ -530,7 +531,8 @@ public class PasspointManager {
// Note that for legacy configuration, the alias for client private key is the same as the
// alias for the client certificate.
PasspointProvider provider = new PasspointProvider(passpointConfig, mKeyStore,
- mSimAccessor, mProviderIndex++, enterpriseConfig.getCaCertificateAlias(),
+ mSimAccessor, mProviderIndex++, wifiConfig.creatorUid,
+ enterpriseConfig.getCaCertificateAlias(),
enterpriseConfig.getClientCertificateAlias(),
enterpriseConfig.getClientCertificateAlias());
mProviders.put(passpointConfig.getHomeSp().getFqdn(), provider);
diff --git a/service/java/com/android/server/wifi/hotspot2/PasspointObjectFactory.java b/service/java/com/android/server/wifi/hotspot2/PasspointObjectFactory.java
index 16982969b..c41c49acb 100644
--- a/service/java/com/android/server/wifi/hotspot2/PasspointObjectFactory.java
+++ b/service/java/com/android/server/wifi/hotspot2/PasspointObjectFactory.java
@@ -49,8 +49,8 @@ public class PasspointObjectFactory{
* @return {@link PasspointProvider}
*/
public PasspointProvider makePasspointProvider(PasspointConfiguration config,
- WifiKeyStore keyStore, SIMAccessor simAccessor, long providerId) {
- return new PasspointProvider(config, keyStore, simAccessor, providerId);
+ WifiKeyStore keyStore, SIMAccessor simAccessor, long providerId, int creatorUid) {
+ return new PasspointProvider(config, keyStore, simAccessor, providerId, creatorUid);
}
/**
diff --git a/service/java/com/android/server/wifi/hotspot2/PasspointProvider.java b/service/java/com/android/server/wifi/hotspot2/PasspointProvider.java
index df4303c29..33867bbdd 100644
--- a/service/java/com/android/server/wifi/hotspot2/PasspointProvider.java
+++ b/service/java/com/android/server/wifi/hotspot2/PasspointProvider.java
@@ -79,6 +79,7 @@ public class PasspointProvider {
private String mClientCertificateAlias;
private final long mProviderId;
+ private final int mCreatorUid;
private final IMSIParameter mImsiParameter;
private final List<String> mMatchingSIMImsiList;
@@ -87,17 +88,18 @@ public class PasspointProvider {
private final AuthParam mAuthParam;
public PasspointProvider(PasspointConfiguration config, WifiKeyStore keyStore,
- SIMAccessor simAccessor, long providerId) {
- this(config, keyStore, simAccessor, providerId, null, null, null);
+ SIMAccessor simAccessor, long providerId, int creatorUid) {
+ this(config, keyStore, simAccessor, providerId, creatorUid, null, null, null);
}
public PasspointProvider(PasspointConfiguration config, WifiKeyStore keyStore,
- SIMAccessor simAccessor, long providerId, String caCertificateAlias,
+ SIMAccessor simAccessor, long providerId, int creatorUid, String caCertificateAlias,
String clientCertificateAlias, String clientPrivateKeyAlias) {
// Maintain a copy of the configuration to avoid it being updated by others.
mConfig = new PasspointConfiguration(config);
mKeyStore = keyStore;
mProviderId = providerId;
+ mCreatorUid = creatorUid;
mCaCertificateAlias = caCertificateAlias;
mClientCertificateAlias = clientCertificateAlias;
mClientPrivateKeyAlias = clientPrivateKeyAlias;
@@ -144,6 +146,10 @@ public class PasspointProvider {
return mProviderId;
}
+ public int getCreatorUid() {
+ return mCreatorUid;
+ }
+
/**
* Install certificates and key based on current configuration.
* Note: the certificates and keys in the configuration will get cleared once
@@ -386,6 +392,7 @@ public class PasspointProvider {
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("ProviderId: ").append(mProviderId).append("\n");
+ builder.append("CreatorUID: ").append(mCreatorUid).append("\n");
builder.append("Configuration Begin ---\n");
builder.append(mConfig);
builder.append("Configuration End ---\n");
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java b/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java
index c901227e0..3b108dc44 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java
@@ -1166,19 +1166,19 @@ public class WifiStateMachineTest {
*/
@Test
public void syncAddOrUpdatePasspointConfig() throws Exception {
- when(mPasspointManager.addOrUpdateProvider(any(PasspointConfiguration.class)))
- .thenReturn(true);
+ when(mPasspointManager.addOrUpdateProvider(any(PasspointConfiguration.class),
+ eq(MANAGED_PROFILE_UID))).thenReturn(true);
mLooper.startAutoDispatch();
assertTrue(mWsm.syncAddOrUpdatePasspointConfig(mWsmAsyncChannel,
- new PasspointConfiguration()));
+ new PasspointConfiguration(), MANAGED_PROFILE_UID));
mLooper.stopAutoDispatch();
reset(mPasspointManager);
- when(mPasspointManager.addOrUpdateProvider(any(PasspointConfiguration.class)))
- .thenReturn(false);
+ when(mPasspointManager.addOrUpdateProvider(any(PasspointConfiguration.class),
+ eq(MANAGED_PROFILE_UID))).thenReturn(false);
mLooper.startAutoDispatch();
assertFalse(mWsm.syncAddOrUpdatePasspointConfig(mWsmAsyncChannel,
- new PasspointConfiguration()));
+ new PasspointConfiguration(), MANAGED_PROFILE_UID));
mLooper.stopAutoDispatch();
}
diff --git a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointConfigStoreDataTest.java b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointConfigStoreDataTest.java
index 5b2eabfd3..cd3120f9e 100644
--- a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointConfigStoreDataTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointConfigStoreDataTest.java
@@ -59,6 +59,7 @@ public class PasspointConfigStoreDataTest {
private static final String TEST_CLIENT_CERTIFICATE_ALIAS = "ClientCert";
private static final String TEST_CLIENT_PRIVATE_KEY_ALIAS = "ClientPrivateKey";
private static final long TEST_PROVIDER_ID = 1;
+ private static final int TEST_CREATOR_UID = 1234;
@Mock WifiKeyStore mKeyStore;
@Mock SIMAccessor mSimAccessor;
@@ -234,8 +235,9 @@ public class PasspointConfigStoreDataTest {
// Setup expected data.
List<PasspointProvider> providerList = new ArrayList<>();
providerList.add(new PasspointProvider(createFullPasspointConfiguration(),
- mKeyStore, mSimAccessor, TEST_PROVIDER_ID, TEST_CA_CERTIFICATE_ALIAS,
- TEST_CLIENT_CERTIFICATE_ALIAS, TEST_CLIENT_PRIVATE_KEY_ALIAS));
+ mKeyStore, mSimAccessor, TEST_PROVIDER_ID, TEST_CREATOR_UID,
+ TEST_CA_CERTIFICATE_ALIAS, TEST_CLIENT_CERTIFICATE_ALIAS,
+ TEST_CLIENT_PRIVATE_KEY_ALIAS));
// Serialize data for user store.
when(mDataSource.getProviders()).thenReturn(providerList);
diff --git a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java
index 28d7e2df0..c8ca7139d 100644
--- a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java
@@ -106,6 +106,7 @@ public class PasspointManagerTest {
private static final int TEST_ANQP_DOMAIN_ID = 0;
private static final ANQPNetworkKey TEST_ANQP_KEY = ANQPNetworkKey.buildKey(
TEST_SSID, TEST_BSSID, TEST_HESSID, TEST_ANQP_DOMAIN_ID);
+ private static final int TEST_CREATOR_UID = 1234;
@Mock Context mContext;
@Mock WifiNative mWifiNative;
@@ -248,8 +249,8 @@ public class PasspointManagerTest {
PasspointConfiguration config = createTestConfigWithUserCredential();
PasspointProvider provider = createMockProvider(config);
when(mObjectFactory.makePasspointProvider(eq(config), eq(mWifiKeyStore),
- eq(mSimAccessor), anyLong())).thenReturn(provider);
- assertTrue(mManager.addOrUpdateProvider(config));
+ eq(mSimAccessor), anyLong(), eq(TEST_CREATOR_UID))).thenReturn(provider);
+ assertTrue(mManager.addOrUpdateProvider(config, TEST_CREATOR_UID));
return provider;
}
@@ -399,7 +400,7 @@ public class PasspointManagerTest {
*/
@Test
public void addProviderWithNullConfig() throws Exception {
- assertFalse(mManager.addOrUpdateProvider(null));
+ assertFalse(mManager.addOrUpdateProvider(null, TEST_CREATOR_UID));
}
/**
@@ -409,7 +410,7 @@ public class PasspointManagerTest {
*/
@Test
public void addProviderWithEmptyConfig() throws Exception {
- assertFalse(mManager.addOrUpdateProvider(new PasspointConfiguration()));
+ assertFalse(mManager.addOrUpdateProvider(new PasspointConfiguration(), TEST_CREATOR_UID));
}
/**
@@ -423,7 +424,7 @@ public class PasspointManagerTest {
PasspointConfiguration config = createTestConfigWithUserCredential();
// EAP-TLS not allowed for user credential.
config.getCredential().getUserCredential().setEapType(EAPConstants.EAP_TLS);
- assertFalse(mManager.addOrUpdateProvider(config));
+ assertFalse(mManager.addOrUpdateProvider(config, TEST_CREATOR_UID));
}
/**
@@ -436,8 +437,8 @@ public class PasspointManagerTest {
PasspointConfiguration config = createTestConfigWithUserCredential();
PasspointProvider provider = createMockProvider(config);
when(mObjectFactory.makePasspointProvider(eq(config), eq(mWifiKeyStore),
- eq(mSimAccessor), anyLong())).thenReturn(provider);
- assertTrue(mManager.addOrUpdateProvider(config));
+ eq(mSimAccessor), anyLong(), eq(TEST_CREATOR_UID))).thenReturn(provider);
+ assertTrue(mManager.addOrUpdateProvider(config, TEST_CREATOR_UID));
verifyInstalledConfig(config);
verify(mWifiConfigManager).saveToStore(true);
reset(mWifiConfigManager);
@@ -471,8 +472,8 @@ public class PasspointManagerTest {
PasspointConfiguration config = createTestConfigWithSimCredential();
PasspointProvider provider = createMockProvider(config);
when(mObjectFactory.makePasspointProvider(eq(config), eq(mWifiKeyStore),
- eq(mSimAccessor), anyLong())).thenReturn(provider);
- assertTrue(mManager.addOrUpdateProvider(config));
+ eq(mSimAccessor), anyLong(), eq(TEST_CREATOR_UID))).thenReturn(provider);
+ assertTrue(mManager.addOrUpdateProvider(config, TEST_CREATOR_UID));
verifyInstalledConfig(config);
verify(mWifiConfigManager).saveToStore(true);
reset(mWifiConfigManager);
@@ -509,8 +510,8 @@ public class PasspointManagerTest {
PasspointConfiguration origConfig = createTestConfigWithSimCredential();
PasspointProvider origProvider = createMockProvider(origConfig);
when(mObjectFactory.makePasspointProvider(eq(origConfig), eq(mWifiKeyStore),
- eq(mSimAccessor), anyLong())).thenReturn(origProvider);
- assertTrue(mManager.addOrUpdateProvider(origConfig));
+ eq(mSimAccessor), anyLong(), eq(TEST_CREATOR_UID))).thenReturn(origProvider);
+ assertTrue(mManager.addOrUpdateProvider(origConfig, TEST_CREATOR_UID));
verifyInstalledConfig(origConfig);
verify(mWifiConfigManager).saveToStore(true);
reset(mWifiConfigManager);
@@ -526,8 +527,8 @@ public class PasspointManagerTest {
PasspointConfiguration newConfig = createTestConfigWithUserCredential();
PasspointProvider newProvider = createMockProvider(newConfig);
when(mObjectFactory.makePasspointProvider(eq(newConfig), eq(mWifiKeyStore),
- eq(mSimAccessor), anyLong())).thenReturn(newProvider);
- assertTrue(mManager.addOrUpdateProvider(newConfig));
+ eq(mSimAccessor), anyLong(), eq(TEST_CREATOR_UID))).thenReturn(newProvider);
+ assertTrue(mManager.addOrUpdateProvider(newConfig, TEST_CREATOR_UID));
verifyInstalledConfig(newConfig);
verify(mWifiConfigManager).saveToStore(true);
@@ -550,8 +551,8 @@ public class PasspointManagerTest {
PasspointProvider provider = mock(PasspointProvider.class);
when(provider.installCertsAndKeys()).thenReturn(false);
when(mObjectFactory.makePasspointProvider(eq(config), eq(mWifiKeyStore),
- eq(mSimAccessor), anyLong())).thenReturn(provider);
- assertFalse(mManager.addOrUpdateProvider(config));
+ eq(mSimAccessor), anyLong(), eq(TEST_CREATOR_UID))).thenReturn(provider);
+ assertFalse(mManager.addOrUpdateProvider(config, TEST_CREATOR_UID));
}
/**
@@ -814,8 +815,8 @@ public class PasspointManagerTest {
PasspointProvider provider = createMockProvider(config);
// Verify the provider ID used to create the new provider.
when(mObjectFactory.makePasspointProvider(eq(config), eq(mWifiKeyStore),
- eq(mSimAccessor), eq(providerIndex))).thenReturn(provider);
- assertTrue(mManager.addOrUpdateProvider(config));
+ eq(mSimAccessor), eq(providerIndex), eq(TEST_CREATOR_UID))).thenReturn(provider);
+ assertTrue(mManager.addOrUpdateProvider(config, TEST_CREATOR_UID));
verifyInstalledConfig(config);
verify(mWifiConfigManager).saveToStore(true);
reset(mWifiConfigManager);
diff --git a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointProviderTest.java b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointProviderTest.java
index afa04b549..c416a961a 100644
--- a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointProviderTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointProviderTest.java
@@ -67,6 +67,7 @@ import java.util.Set;
@SmallTest
public class PasspointProviderTest {
private static final long PROVIDER_ID = 12L;
+ private static final int CREATOR_UID = 1234;
private static final String CA_CERTIFICATE_NAME = "CACERT_HS2_12";
private static final String CLIENT_CERTIFICATE_NAME = "USRCERT_HS2_12";
private static final String CLIENT_PRIVATE_KEY_NAME = "USRPKEY_HS2_12";
@@ -91,7 +92,7 @@ public class PasspointProviderTest {
* @return {@link com.android.server.wifi.hotspot2.PasspointProvider}
*/
private PasspointProvider createProvider(PasspointConfiguration config) {
- return new PasspointProvider(config, mKeyStore, mSimAccessor, PROVIDER_ID);
+ return new PasspointProvider(config, mKeyStore, mSimAccessor, PROVIDER_ID, CREATOR_UID);
}
/**