Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 697e02a3 authored by Hai Shalom's avatar Hai Shalom
Browse files

[Passpoint] Fix connected network not showing in Wi-Fi picker

Newly added network by OSU does not appear in Wi-Fi picker even
when connected.
Root cause: newly added unique identifier included the certs and
key material in the hash, but after the profile is installed,
the certs and keys are moved to keystore and removed from the
configuration, hence the change in hash.

Bug: 149322822
Test: Manual OSU connection and provisioning successfully,
verifying connected network appears in Wi-Fi picker
Test: atest PasspointConfigurationTest

Change-Id: Idec09bc77cb3562bb6bfe9e586a3aa7b2dce85bd
parent 488cc772
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -909,8 +909,8 @@ public final class PasspointConfiguration implements Parcelable {
        }

        StringBuilder sb = new StringBuilder();
        sb.append(String.format("%s_%x%x", mHomeSp.getFqdn(), mHomeSp.hashCode(),
                mCredential.hashCode()));
        sb.append(String.format("%s_%x%x", mHomeSp.getFqdn(), mHomeSp.getUniqueId(),
                mCredential.getUniqueId()));
        return sb.toString();
    }
}
+22 −0
Original line number Diff line number Diff line
@@ -1020,6 +1020,28 @@ public final class Credential implements Parcelable {
                Arrays.hashCode(mClientCertificateChain));
    }

    /**
     * Get a unique identifier for Credential. This identifier depends only on items that remain
     * constant throughout the lifetime of a subscription's credentials.
     *
     * @hide
     * @return a Unique identifier for a Credential object
     */
    public int getUniqueId() {
        int usedCredential;

        // Initialize usedCredential based on the credential type of the profile
        if (mUserCredential != null) {
            usedCredential = 0;
        } else if (mCertCredential != null) {
            usedCredential = 1;
        } else {
            usedCredential = 2;
        }

        return Objects.hash(usedCredential, mRealm);
    }

    @Override
    public String toString() {
        StringBuilder builder = new StringBuilder();
+14 −0
Original line number Diff line number Diff line
@@ -305,6 +305,20 @@ public final class HomeSp implements Parcelable {
                Arrays.hashCode(mRoamingConsortiumOis));
    }

    /**
     * Get a unique identifier for HomeSp. This identifier depends only on items that remain
     * constant throughout the lifetime of a subscription.
     *
     * @hide
     * @return a Unique identifier for a HomeSp object
     */
    public int getUniqueId() {
        return Objects.hash(mFqdn, mFriendlyName, mHomeNetworkIds, Arrays.hashCode(mMatchAllOis),
                Arrays.hashCode(mMatchAnyOis), Arrays.hashCode(mOtherHomePartners),
                Arrays.hashCode(mRoamingConsortiumOis));
    }


    @Override
    public String toString() {
        StringBuilder builder = new StringBuilder();