geteduroam / ionic-app

iOS and Android app for geteduroam
BSD 3-Clause "New" or "Revised" License
16 stars 12 forks source link

HS20 support #10

Closed jornane closed 4 years ago

jornane commented 4 years ago

The eap-config files generated by CAT and geteduroam contain the following:

<CredentialApplicability>
    <IEEE80211>
        <SSID>eduroam</SSID>
        <MinRSNProto>CCMP</MinRSNProto>
    </IEEE80211>
</CredentialApplicability>
<CredentialApplicability>
    <IEEE80211>
        <ConsortiumOID>001bc50460</ConsortiumOID>
    </IEEE80211>
</CredentialApplicability>

This indicates that the network should be configured on SSID eduroam, but also HS20 ConsortiumOID 001bc50460.

On platforms where this is supported, the app should configure both SSID and HS20. HS20 is sometimes also called Passpoint.

jornane commented 4 years ago

Clarifications after a question from @agomezmoron on Slack:

The domain is optional in HS20, but iOS and Android require it to be set. Set it to the value of the ID attribute in EAPIdentityProvider. So <EAPIdentityProvider ID="edu.nl" namespace="urn:RFC4282:realm" lang="nb" version="1"> gives domain edu.nl.

The display name is a harder problem, and I don't have a good solution. Use DisplayName in ProviderInfo for now, I'll ask around if we should add a tag for this.

agomezmoron commented 4 years ago

Hi @jornane, to ensure we are in the same page:

jornane commented 4 years ago
agomezmoron commented 4 years ago

Adding also the message from Slack: The existence of a IEEE80211 with ConsortiumOID indicates that HS20 support is available

Thanks @jornane for the info :)

agomezmoron commented 4 years ago

The support for AndroidQ is not yet available:

The documentation says for Passpoint: https://developer.android.com/reference/android/net/wifi/WifiNetworkSuggestion.Builder#setPasspointConfig(android.net.wifi.hotspot2.PasspointConfiguration) (that it's in the API Level 30, Android Q is 29 or higher). On the other side, if we go to the source code that Google has published in the master branch...https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/wifi/java/android/net/wifi/WifiNetworkSuggestion.java that class doesn't have yet that method (but the class to configure Passpoint exists https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java)

So, by now, it's not feasible (Android has released the api level 29, not the 30 yet) https://developer.android.com/studio/releases/platforms

We will leave "//TODO" block to cover that in the future (as soon as the API 30 is released and we will be able to see the source code and how it's handled to create a proper object for Passpoint).