summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEcco Park <eccopark@google.com>2018-04-12 18:33:18 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2018-04-12 18:33:18 +0000
commit356af575e0317a61da154b97139bdc2cbc1d2c09 (patch)
treed28708b0a32fc16bd62205c041d4493c54234e76
parent03b2a94a34ab39bc7d8a26824808d7b2e99ee650 (diff)
parent2e889dc0b3f348f45cc5f5006d8784bed30583a9 (diff)
Merge changes from topic "passpoint_r1" into pi-dev
* changes: Wifi: Allow Hotspot 2.0 connection without Roaming Consortium ANQP-element Wifi: Allow Hotspot 2.0 credential without realm matching
-rw-r--r--service/java/com/android/server/wifi/hotspot2/ANQPMatcher.java6
-rw-r--r--service/java/com/android/server/wifi/hotspot2/NetworkDetail.java2
-rw-r--r--service/java/com/android/server/wifi/hotspot2/PasspointManager.java2
-rw-r--r--service/java/com/android/server/wifi/hotspot2/PasspointProvider.java28
-rw-r--r--service/java/com/android/server/wifi/util/InformationElementUtil.java7
-rw-r--r--tests/wifitests/src/com/android/server/wifi/hotspot2/ANQPMatcherTest.java24
-rw-r--r--tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java28
-rw-r--r--tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointProviderTest.java93
-rw-r--r--tests/wifitests/src/com/android/server/wifi/util/InformationElementUtilTest.java4
9 files changed, 166 insertions, 28 deletions
diff --git a/service/java/com/android/server/wifi/hotspot2/ANQPMatcher.java b/service/java/com/android/server/wifi/hotspot2/ANQPMatcher.java
index 649534662..a144874b8 100644
--- a/service/java/com/android/server/wifi/hotspot2/ANQPMatcher.java
+++ b/service/java/com/android/server/wifi/hotspot2/ANQPMatcher.java
@@ -163,7 +163,7 @@ public class ANQPMatcher {
}
}
- if (realmMatch == AuthMatch.NONE || realmData.getEAPMethods().isEmpty()) {
+ if (realmData.getEAPMethods().isEmpty()) {
return realmMatch;
}
@@ -179,6 +179,10 @@ public class ANQPMatcher {
if (eapMethodMatch == AuthMatch.NONE) {
return AuthMatch.NONE;
}
+
+ if (realmMatch == AuthMatch.NONE) {
+ return eapMethodMatch;
+ }
return realmMatch | eapMethodMatch;
}
diff --git a/service/java/com/android/server/wifi/hotspot2/NetworkDetail.java b/service/java/com/android/server/wifi/hotspot2/NetworkDetail.java
index 0c7716286..edee2da1a 100644
--- a/service/java/com/android/server/wifi/hotspot2/NetworkDetail.java
+++ b/service/java/com/android/server/wifi/hotspot2/NetworkDetail.java
@@ -253,7 +253,7 @@ public class NetworkDetail {
mHSRelease = vsa.hsRelease;
mAnqpDomainID = vsa.anqpDomainID;
mAnqpOICount = roamingConsortium.anqpOICount;
- mRoamingConsortiums = roamingConsortium.roamingConsortiums;
+ mRoamingConsortiums = roamingConsortium.getRoamingConsortiums();
mExtendedCapabilities = extendedCapabilities;
mANQPElements = null;
//set up channel info
diff --git a/service/java/com/android/server/wifi/hotspot2/PasspointManager.java b/service/java/com/android/server/wifi/hotspot2/PasspointManager.java
index 9423edea9..a0915fa52 100644
--- a/service/java/com/android/server/wifi/hotspot2/PasspointManager.java
+++ b/service/java/com/android/server/wifi/hotspot2/PasspointManager.java
@@ -411,7 +411,7 @@ public class PasspointManager {
for (Map.Entry<String, PasspointProvider> entry : mProviders.entrySet()) {
PasspointProvider provider = entry.getValue();
- PasspointMatch matchStatus = provider.match(anqpEntry.getElements());
+ PasspointMatch matchStatus = provider.match(anqpEntry.getElements(), roamingConsortium);
if (matchStatus == PasspointMatch.HomeProvider
|| matchStatus == PasspointMatch.RoamingProvider) {
allMatches.add(Pair.create(provider, matchStatus));
diff --git a/service/java/com/android/server/wifi/hotspot2/PasspointProvider.java b/service/java/com/android/server/wifi/hotspot2/PasspointProvider.java
index 23ab57ff4..f86a938d7 100644
--- a/service/java/com/android/server/wifi/hotspot2/PasspointProvider.java
+++ b/service/java/com/android/server/wifi/hotspot2/PasspointProvider.java
@@ -40,6 +40,7 @@ import com.android.server.wifi.hotspot2.anqp.RoamingConsortiumElement;
import com.android.server.wifi.hotspot2.anqp.ThreeGPPNetworkElement;
import com.android.server.wifi.hotspot2.anqp.eap.AuthParam;
import com.android.server.wifi.hotspot2.anqp.eap.NonEAPInnerAuth;
+import com.android.server.wifi.util.InformationElementUtil.RoamingConsortium;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
@@ -253,10 +254,12 @@ public class PasspointProvider {
* Return the matching status with the given AP, based on the ANQP elements from the AP.
*
* @param anqpElements ANQP elements from the AP
+ * @param roamingConsortium Roaming Consortium information element from the AP
* @return {@link PasspointMatch}
*/
- public PasspointMatch match(Map<ANQPElementType, ANQPElement> anqpElements) {
- PasspointMatch providerMatch = matchProvider(anqpElements);
+ public PasspointMatch match(Map<ANQPElementType, ANQPElement> anqpElements,
+ RoamingConsortium roamingConsortium) {
+ PasspointMatch providerMatch = matchProvider(anqpElements, roamingConsortium);
// Perform authentication match against the NAI Realm.
int authMatch = ANQPMatcher.matchNAIRealm(
@@ -454,9 +457,11 @@ public class PasspointProvider {
* Perform a provider match based on the given ANQP elements.
*
* @param anqpElements List of ANQP elements
+ * @param roamingConsortium Roaming Consortium information element from the AP
* @return {@link PasspointMatch}
*/
- private PasspointMatch matchProvider(Map<ANQPElementType, ANQPElement> anqpElements) {
+ private PasspointMatch matchProvider(Map<ANQPElementType, ANQPElement> anqpElements,
+ RoamingConsortium roamingConsortium) {
// Domain name matching.
if (ANQPMatcher.matchDomainName(
(DomainNameElement) anqpElements.get(ANQPElementType.ANQPDomName),
@@ -464,13 +469,26 @@ public class PasspointProvider {
return PasspointMatch.HomeProvider;
}
- // Roaming Consortium OI matching.
+ // ANQP Roaming Consortium OI matching.
+ long[] providerOIs = mConfig.getHomeSp().getRoamingConsortiumOis();
if (ANQPMatcher.matchRoamingConsortium(
(RoamingConsortiumElement) anqpElements.get(ANQPElementType.ANQPRoamingConsortium),
- mConfig.getHomeSp().getRoamingConsortiumOis())) {
+ providerOIs)) {
return PasspointMatch.RoamingProvider;
}
+ long[] roamingConsortiums = roamingConsortium.getRoamingConsortiums();
+ // Roaming Consortium OI information element matching.
+ if (roamingConsortiums != null && providerOIs != null) {
+ for (long sta_oi: roamingConsortiums) {
+ for (long ap_oi: providerOIs) {
+ if (sta_oi == ap_oi) {
+ return PasspointMatch.RoamingProvider;
+ }
+ }
+ }
+ }
+
// 3GPP Network matching.
if (ANQPMatcher.matchThreeGPPNetwork(
(ThreeGPPNetworkElement) anqpElements.get(ANQPElementType.ANQP3GPPNetwork),
diff --git a/service/java/com/android/server/wifi/util/InformationElementUtil.java b/service/java/com/android/server/wifi/util/InformationElementUtil.java
index 14912b5f5..2128a410d 100644
--- a/service/java/com/android/server/wifi/util/InformationElementUtil.java
+++ b/service/java/com/android/server/wifi/util/InformationElementUtil.java
@@ -259,7 +259,12 @@ public class InformationElementUtil {
public static class RoamingConsortium {
public int anqpOICount = 0;
- public long[] roamingConsortiums = null;
+
+ private long[] roamingConsortiums = null;
+
+ public long[] getRoamingConsortiums() {
+ return roamingConsortiums;
+ }
public void from(InformationElement ie) {
if (ie.id != InformationElement.EID_ROAMING_CONSORTIUM) {
diff --git a/tests/wifitests/src/com/android/server/wifi/hotspot2/ANQPMatcherTest.java b/tests/wifitests/src/com/android/server/wifi/hotspot2/ANQPMatcherTest.java
index a86d6708c..101fe16f6 100644
--- a/tests/wifitests/src/com/android/server/wifi/hotspot2/ANQPMatcherTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/hotspot2/ANQPMatcherTest.java
@@ -158,6 +158,30 @@ public class ANQPMatcherTest {
}
/**
+ * Verify that method match will be returned when the specified EAP
+ * method only matches a eap method in the NAI Realm ANQP element.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void matchNAIRealmWithMethodMatch() throws Exception {
+ // Test data.
+ String providerRealm = "test.com";
+ String anqpRealm = "test2.com";
+ int eapMethodID = EAPConstants.EAP_TLS;
+
+ // Setup NAI Realm element.
+ EAPMethod method = new EAPMethod(eapMethodID, new HashMap<Integer, Set<AuthParam>>());
+ NAIRealmData realmData = new NAIRealmData(
+ Arrays.asList(new String[] {anqpRealm}), Arrays.asList(new EAPMethod[] {method}));
+ NAIRealmElement element = new NAIRealmElement(
+ Arrays.asList(new NAIRealmData[] {realmData}));
+
+ assertEquals(AuthMatch.METHOD,
+ ANQPMatcher.matchNAIRealm(element, providerRealm, eapMethodID, null));
+ }
+
+ /**
* Verify that a realm and method match will be returned when the specified realm and EAP
* method matches a realm in the NAI Realm ANQP element.
*
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 0e04a05a7..2a76d6a32 100644
--- a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java
@@ -82,6 +82,7 @@ import com.android.server.wifi.hotspot2.anqp.DomainNameElement;
import com.android.server.wifi.hotspot2.anqp.HSOsuProvidersElement;
import com.android.server.wifi.hotspot2.anqp.I18Name;
import com.android.server.wifi.hotspot2.anqp.OsuProviderInfo;
+import com.android.server.wifi.util.InformationElementUtil.RoamingConsortium;
import com.android.server.wifi.util.ScanResultUtil;
import org.junit.Before;
@@ -698,7 +699,8 @@ public class PasspointManagerTest {
ANQPData entry = new ANQPData(mClock, null);
when(mAnqpCache.getEntry(TEST_ANQP_KEY)).thenReturn(entry);
- when(provider.match(anyMap())).thenReturn(PasspointMatch.HomeProvider);
+ when(provider.match(anyMap(), any(RoamingConsortium.class)))
+ .thenReturn(PasspointMatch.HomeProvider);
Pair<PasspointProvider, PasspointMatch> result =
mManager.matchProvider(createTestScanResult());
assertEquals(PasspointMatch.HomeProvider, result.second);
@@ -716,7 +718,8 @@ public class PasspointManagerTest {
ANQPData entry = new ANQPData(mClock, null);
when(mAnqpCache.getEntry(TEST_ANQP_KEY)).thenReturn(entry);
- when(provider.match(anyMap())).thenReturn(PasspointMatch.RoamingProvider);
+ when(provider.match(anyMap(), any(RoamingConsortium.class)))
+ .thenReturn(PasspointMatch.RoamingProvider);
Pair<PasspointProvider, PasspointMatch> result =
mManager.matchProvider(createTestScanResult());
assertEquals(PasspointMatch.RoamingProvider, result.second);
@@ -734,7 +737,8 @@ public class PasspointManagerTest {
ANQPData entry = new ANQPData(mClock, null);
when(mAnqpCache.getEntry(TEST_ANQP_KEY)).thenReturn(entry);
- when(provider.match(anyMap())).thenReturn(PasspointMatch.None);
+ when(provider.match(anyMap(), any(RoamingConsortium.class)))
+ .thenReturn(PasspointMatch.None);
assertNull(mManager.matchProvider(createTestScanResult()));
}
@@ -789,7 +793,8 @@ public class PasspointManagerTest {
ANQPData entry = new ANQPData(mClock, null);
when(mAnqpCache.getEntry(TEST_ANQP_KEY)).thenReturn(entry);
- when(provider.match(anyMap())).thenReturn(PasspointMatch.HomeProvider);
+ when(provider.match(anyMap(), any(RoamingConsortium.class)))
+ .thenReturn(PasspointMatch.HomeProvider);
when(provider.getWifiConfig()).thenReturn(new WifiConfiguration());
WifiConfiguration config = mManager.getMatchingWifiConfig(createTestScanResult());
assertEquals(ScanResultUtil.createQuotedSSID(TEST_SSID), config.SSID);
@@ -808,7 +813,8 @@ public class PasspointManagerTest {
ANQPData entry = new ANQPData(mClock, null);
when(mAnqpCache.getEntry(TEST_ANQP_KEY)).thenReturn(entry);
- when(provider.match(anyMap())).thenReturn(PasspointMatch.RoamingProvider);
+ when(provider.match(anyMap(), any(RoamingConsortium.class)))
+ .thenReturn(PasspointMatch.RoamingProvider);
when(provider.getWifiConfig()).thenReturn(new WifiConfiguration());
WifiConfiguration config = mManager.getMatchingWifiConfig(createTestScanResult());
assertEquals(ScanResultUtil.createQuotedSSID(TEST_SSID), config.SSID);
@@ -827,7 +833,8 @@ public class PasspointManagerTest {
ANQPData entry = new ANQPData(mClock, null);
when(mAnqpCache.getEntry(TEST_ANQP_KEY)).thenReturn(entry);
- when(provider.match(anyMap())).thenReturn(PasspointMatch.None);
+ when(provider.match(anyMap(), any(RoamingConsortium.class)))
+ .thenReturn(PasspointMatch.None);
assertNull(mManager.getMatchingWifiConfig(createTestScanResult()));
verify(provider, never()).getWifiConfig();
}
@@ -897,9 +904,12 @@ public class PasspointManagerTest {
when(mAnqpCache.getEntry(TEST_ANQP_KEY)).thenReturn(entry);
- when(providerHome.match(anyMap())).thenReturn(PasspointMatch.HomeProvider);
- when(providerRoaming.match(anyMap())).thenReturn(PasspointMatch.RoamingProvider);
- when(providerNone.match(anyMap())).thenReturn(PasspointMatch.None);
+ when(providerHome.match(anyMap(), any(RoamingConsortium.class)))
+ .thenReturn(PasspointMatch.HomeProvider);
+ when(providerRoaming.match(anyMap(), any(RoamingConsortium.class)))
+ .thenReturn(PasspointMatch.RoamingProvider);
+ when(providerNone.match(anyMap(), any(RoamingConsortium.class)))
+ .thenReturn(PasspointMatch.None);
when(providerHome.getWifiConfig()).thenReturn(new WifiConfiguration());
when(providerRoaming.getWifiConfig()).thenReturn(new WifiConfiguration());
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 53feae67a..0055fbaaa 100644
--- a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointProviderTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointProviderTest.java
@@ -48,6 +48,7 @@ import com.android.server.wifi.hotspot2.anqp.eap.AuthParam;
import com.android.server.wifi.hotspot2.anqp.eap.EAPMethod;
import com.android.server.wifi.hotspot2.anqp.eap.NonEAPInnerAuth;
+import com.android.server.wifi.util.InformationElementUtil.RoamingConsortium;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
@@ -77,12 +78,14 @@ public class PasspointProviderTest {
@Mock WifiKeyStore mKeyStore;
@Mock SIMAccessor mSimAccessor;
+ @Mock RoamingConsortium mRoamingConsortium;
PasspointProvider mProvider;
/** Sets up test. */
@Before
public void setUp() throws Exception {
initMocks(this);
+ when(mRoamingConsortium.getRoamingConsortiums()).thenReturn(null);
}
/**
@@ -362,7 +365,8 @@ public class PasspointProviderTest {
anqpElementMap.put(ANQPElementType.ANQPDomName,
createDomainNameElement(new String[] {testDomain}));
- assertEquals(PasspointMatch.HomeProvider, mProvider.match(anqpElementMap));
+ assertEquals(PasspointMatch.HomeProvider,
+ mProvider.match(anqpElementMap, mRoamingConsortium));
}
/**
@@ -397,7 +401,8 @@ public class PasspointProviderTest {
createNAIRealmElement(testRealm, EAPConstants.EAP_TTLS,
new NonEAPInnerAuth(NonEAPInnerAuth.AUTH_TYPE_MSCHAPV2)));
- assertEquals(PasspointMatch.HomeProvider, mProvider.match(anqpElementMap));
+ assertEquals(PasspointMatch.HomeProvider,
+ mProvider.match(anqpElementMap, mRoamingConsortium));
}
/**
@@ -432,7 +437,7 @@ public class PasspointProviderTest {
anqpElementMap.put(ANQPElementType.ANQPNAIRealm,
createNAIRealmElement(testRealm, EAPConstants.EAP_TLS, null));
- assertEquals(PasspointMatch.None, mProvider.match(anqpElementMap));
+ assertEquals(PasspointMatch.None, mProvider.match(anqpElementMap, mRoamingConsortium));
}
/**
@@ -462,7 +467,8 @@ public class PasspointProviderTest {
anqpElementMap.put(ANQPElementType.ANQPDomName,
createDomainNameElement(new String[] {"wlan.mnc456.mcc123.3gppnetwork.org"}));
- assertEquals(PasspointMatch.HomeProvider, mProvider.match(anqpElementMap));
+ assertEquals(PasspointMatch.HomeProvider,
+ mProvider.match(anqpElementMap, mRoamingConsortium));
}
/**
@@ -493,7 +499,75 @@ public class PasspointProviderTest {
anqpElementMap.put(ANQPElementType.ANQPRoamingConsortium,
createRoamingConsortiumElement(anqpRCOIs));
- assertEquals(PasspointMatch.RoamingProvider, mProvider.match(anqpElementMap));
+ assertEquals(PasspointMatch.RoamingProvider,
+ mProvider.match(anqpElementMap, mRoamingConsortium));
+ }
+
+ /**
+ * Verify that a provider is a roaming provider when a roaming consortium OI matches an OI
+ * in the roaming consortium information element.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void matchRoamingConsortiumIe() throws Exception {
+ long[] providerRCOIs = new long[] {0x1234L, 0x2345L};
+ long[] ieRCOIs = new long[] {0x1234L, 0x2133L};
+
+ // Setup test provider.
+ PasspointConfiguration config = new PasspointConfiguration();
+ HomeSp homeSp = new HomeSp();
+ homeSp.setRoamingConsortiumOis(providerRCOIs);
+ config.setHomeSp(homeSp);
+ Credential credential = new Credential();
+ Credential.UserCredential userCredential = new Credential.UserCredential();
+ userCredential.setNonEapInnerMethod(Credential.UserCredential.AUTH_METHOD_MSCHAPV2);
+ credential.setUserCredential(userCredential);
+ config.setCredential(credential);
+ mProvider = createProvider(config);
+
+ // Setup Roaming Consortium ANQP element.
+ Map<ANQPElementType, ANQPElement> anqpElementMap = new HashMap<>();
+
+ // Setup Roaming Consortium Information element.
+ when(mRoamingConsortium.getRoamingConsortiums()).thenReturn(ieRCOIs);
+
+ assertEquals(PasspointMatch.RoamingProvider,
+ mProvider.match(anqpElementMap, mRoamingConsortium));
+ }
+
+ /**
+ * Verify that none of matched providers are not found when a roaming consortium OI doesn't
+ * matches an OI in the roaming consortium information element and
+ * none of NAI realms match each other.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void misMatchForRoamingConsortiumIeAndNAIRealm() throws Exception {
+ long[] providerRCOIs = new long[] {0x1234L, 0x2345L};
+ long[] ieRCOIs = new long[] {0x2255L, 0x2133L};
+
+ // Setup test provider.
+ PasspointConfiguration config = new PasspointConfiguration();
+ HomeSp homeSp = new HomeSp();
+ homeSp.setRoamingConsortiumOis(providerRCOIs);
+ config.setHomeSp(homeSp);
+ Credential credential = new Credential();
+ Credential.UserCredential userCredential = new Credential.UserCredential();
+ userCredential.setNonEapInnerMethod(Credential.UserCredential.AUTH_METHOD_MSCHAPV2);
+ credential.setUserCredential(userCredential);
+ config.setCredential(credential);
+ mProvider = createProvider(config);
+
+ // Setup Roaming Consortium ANQP element.
+ Map<ANQPElementType, ANQPElement> anqpElementMap = new HashMap<>();
+
+ // Setup Roaming Consortium Information element.
+ when(mRoamingConsortium.getRoamingConsortiums()).thenReturn(ieRCOIs);
+
+ assertEquals(PasspointMatch.None,
+ mProvider.match(anqpElementMap, mRoamingConsortium));
}
/**
@@ -523,7 +597,8 @@ public class PasspointProviderTest {
anqpElementMap.put(ANQPElementType.ANQP3GPPNetwork,
createThreeGPPNetworkElement(new String[] {"123456"}));
- assertEquals(PasspointMatch.RoamingProvider, mProvider.match(anqpElementMap));
+ assertEquals(PasspointMatch.RoamingProvider,
+ mProvider.match(anqpElementMap, mRoamingConsortium));
}
/**
@@ -553,7 +628,8 @@ public class PasspointProviderTest {
createNAIRealmElement(testRealm, EAPConstants.EAP_TTLS,
new NonEAPInnerAuth(NonEAPInnerAuth.AUTH_TYPE_MSCHAPV2)));
- assertEquals(PasspointMatch.RoamingProvider, mProvider.match(anqpElementMap));
+ assertEquals(PasspointMatch.RoamingProvider,
+ mProvider.match(anqpElementMap, mRoamingConsortium));
}
/**
@@ -595,7 +671,8 @@ public class PasspointProviderTest {
anqpElementMap.put(ANQPElementType.ANQP3GPPNetwork,
createThreeGPPNetworkElement(new String[] {"123456"}));
- assertEquals(PasspointMatch.HomeProvider, mProvider.match(anqpElementMap));
+ assertEquals(PasspointMatch.HomeProvider,
+ mProvider.match(anqpElementMap, mRoamingConsortium));
}
/**
diff --git a/tests/wifitests/src/com/android/server/wifi/util/InformationElementUtilTest.java b/tests/wifitests/src/com/android/server/wifi/util/InformationElementUtilTest.java
index 8c4b2ff58..a1b37ff7b 100644
--- a/tests/wifitests/src/com/android/server/wifi/util/InformationElementUtilTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/util/InformationElementUtilTest.java
@@ -692,8 +692,8 @@ public class InformationElementUtilTest {
InformationElementUtil.RoamingConsortium roamingConsortium =
InformationElementUtil.getRoamingConsortiumIE(new InformationElement[] {ie});
assertEquals(1, roamingConsortium.anqpOICount);
- assertEquals(1, roamingConsortium.roamingConsortiums.length);
- assertEquals(0x112233, roamingConsortium.roamingConsortiums[0]);
+ assertEquals(1, roamingConsortium.getRoamingConsortiums().length);
+ assertEquals(0x112233, roamingConsortium.getRoamingConsortiums()[0]);
}
/**