17fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang/*
27fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang * Copyright (C) 2014 The Android Open Source Project
37fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang *
47fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang * Licensed under the Apache License, Version 2.0 (the "License");
57fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang * you may not use this file except in compliance with the License.
67fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang * You may obtain a copy of the License at
77fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang *
87fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang *      http://www.apache.org/licenses/LICENSE-2.0
97fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang *
107fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang * Unless required by applicable law or agreed to in writing, software
117fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang * distributed under the License is distributed on an "AS IS" BASIS,
127fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang * See the License for the specific language governing permissions and
147fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang * limitations under the License.
157fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang */
167fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
177fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Changpackage android.net.wifi.passpoint;
187fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
197fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Changimport android.net.wifi.WifiEnterpriseConfig;
207fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Changimport android.os.Parcelable;
217fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Changimport android.os.Parcel;
227fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
237fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Changimport java.util.Collection;
247fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Changimport java.util.Iterator;
257fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Changimport java.util.Map;
268dd64036cdaec757d3b19654a2c3c336ce902433roger.changimport java.util.Set;
278dd64036cdaec757d3b19654a2c3c336ce902433roger.chang
287fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
297c28c3663470ce5eb818cfa2ce4a993e4bae8f33Yuhao Zheng/**
307c28c3663470ce5eb818cfa2ce4a993e4bae8f33Yuhao Zheng * A class representing a Wi-Fi Passpoint credential.
318a9eb81df1218884bf0c4cdb214d2f1ec0a5679cYuhao Zheng * @hide
327c28c3663470ce5eb818cfa2ce4a993e4bae8f33Yuhao Zheng */
337fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Changpublic class WifiPasspointCredential implements Parcelable {
347fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
357fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    private final static String TAG = "PasspointCredential";
368dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    private final static boolean DBG = true;
378dd64036cdaec757d3b19654a2c3c336ce902433roger.chang
388dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    /** Wi-Fi nodes**/
398dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    private String mWifiSpFqdn;
408dd64036cdaec757d3b19654a2c3c336ce902433roger.chang
418dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    /** PerProviderSubscription nodes **/
427fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    private String mCredentialName;
438dd64036cdaec757d3b19654a2c3c336ce902433roger.chang
448dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    /** SubscriptionUpdate nodes **/
458dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    private String mSubscriptionUpdateInterval;
467fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    private String mSubscriptionUpdateMethod;
478dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    private String mSubscriptionUpdateRestriction;
488dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    private String mSubscriptionUpdateURI;
498dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    private String mSubscriptionUpdateUsername;
508dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    private String mSubscriptionUpdatePassword;
518dd64036cdaec757d3b19654a2c3c336ce902433roger.chang
528dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    /** HomeSP nodes **/
538dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    private String mHomeSpFqdn;
548dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    private String mFriendlyName;
558dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    private Collection<WifiPasspointDmTree.HomeOIList> mHomeOIList;
568dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    private Collection<WifiPasspointDmTree.OtherHomePartners> mOtherHomePartnerList;
578dd64036cdaec757d3b19654a2c3c336ce902433roger.chang
588dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    /** SubscriptionParameters nodes**/
598dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    private String mCreationDate;
608dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    private String mExpirationDate;
618dd64036cdaec757d3b19654a2c3c336ce902433roger.chang
628dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    /** Credential nodes **/
637fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    private String mType;
647fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    private String mInnerMethod;
657fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    private String mCertType;
667fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    private String mCertSha256Fingerprint;
678dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    private String mUpdateIdentifier;
687fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    private String mUsername;
697fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    private String mPasswd;
708dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    private String mRealm;
717fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    private String mImsi;
727fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    private String mMcc;
737fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    private String mMnc;
747fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    private String mCaRootCert;
757fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    private String mClientCert;
768dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    private boolean mCheckAaaServerCertStatus;
777fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
788dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    /** Policy nodes **/
798dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    private String mPolicyUpdateUri;
807fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    private String mPolicyUpdateInterval;
818dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    private String mPolicyUpdateUsername;
828dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    private String mPolicyUpdatePassword;
837fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    private String mPolicyUpdateRestriction;
847fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    private String mPolicyUpdateMethod;
857fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    private Collection<WifiPasspointDmTree.PreferredRoamingPartnerList> mPreferredRoamingPartnerList;
867fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    private Collection<WifiPasspointDmTree.MinBackhaulThresholdNetwork> mMinBackhaulThresholdNetwork;
877fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    private Collection<WifiPasspointDmTree.SPExclusionList> mSpExclusionList;
888dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    private Collection<WifiPasspointDmTree.RequiredProtoPortTuple> mRequiredProtoPortTuple;
897fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    private String mMaxBssLoad;
907fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
918dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    /** CrednetialPriority node **/
928dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    private int mCrednetialPriority;
937fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
948dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    /** AAAServerTrustRoot nodes **/
958dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    private String mAaaCertUrl;
968dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    private String mAaaSha256Fingerprint;
977fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
988dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    /** Others **/
998dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    private boolean mIsMachineRemediation;
1008dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    private boolean mUserPreferred = false;
1018dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    private String mWifiTreePath;
1028dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    private WifiEnterpriseConfig mEnterpriseConfig;
1037fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
1047fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
1058dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    public WifiPasspointCredential() {}
1067fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
1077fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /**
1087fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang     * Constructor
1097fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang     * @param realm Realm of the passpoint credential
1107c28c3663470ce5eb818cfa2ce4a993e4bae8f33Yuhao Zheng     * @param fqdn Fully qualified domain name (FQDN) of the credential
111bd9af355975e0feb54385c4615b9f9314b52dba7Yuhao Zheng     * @param config Enterprise config, must be either EAP-TLS or EAP-TTLS
1127fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang     * @see WifiEnterpriseConfig
1137fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang     */
1147c28c3663470ce5eb818cfa2ce4a993e4bae8f33Yuhao Zheng    public WifiPasspointCredential(String realm, String fqdn, WifiEnterpriseConfig config) {
1157fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mRealm = realm;
1167fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        switch (config.getEapMethod()) {
1177fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            case WifiEnterpriseConfig.Eap.TLS:
1187fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            case WifiEnterpriseConfig.Eap.TTLS:
119bd9af355975e0feb54385c4615b9f9314b52dba7Yuhao Zheng                mEnterpriseConfig = new WifiEnterpriseConfig(config);
1207fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang                break;
1217fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            default:
1227fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang                // ignore
1237fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        }
1247fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
1257fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
1267fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
1277fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public WifiPasspointCredential(String type,
1287fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            String caroot,
1297fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            String clientcert,
1307fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            String mcc,
1317fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            String mnc,
1327fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            WifiPasspointDmTree.SpFqdn sp,
1337fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            WifiPasspointDmTree.CredentialInfo credinfo) {
1347fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
1357fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        if (credinfo == null) {
1367fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            return;
1377fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        }
1387fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
1397fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mType = type;
1407fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mCaRootCert = caroot;
1417fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mClientCert = clientcert;
1427fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
1438dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        mWifiSpFqdn = sp.nodeName;
1447fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mUpdateIdentifier = sp.perProviderSubscription.UpdateIdentifier;
1457fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
1467fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mCredentialName = credinfo.nodeName;
1478dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        mOtherHomePartnerList = credinfo.homeSP.otherHomePartners.values();
1487fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
1498dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        Set set = credinfo.aAAServerTrustRoot.entrySet();
1508dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        Iterator i = set.iterator();
1517fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        if (i.hasNext()) {
1527fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            Map.Entry entry3 = (Map.Entry) i.next();
1537fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            WifiPasspointDmTree.AAAServerTrustRoot aaa = (WifiPasspointDmTree.AAAServerTrustRoot) entry3.getValue();
1548dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            mAaaCertUrl = aaa.CertURL;
1558dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            mAaaSha256Fingerprint = aaa.CertSHA256Fingerprint;
1567fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        }
1577fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
1587fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mCertType = credinfo.credential.digitalCertificate.CertificateType;
1597fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mCertSha256Fingerprint = credinfo.credential.digitalCertificate.CertSHA256Fingerprint;
1607fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mUsername = credinfo.credential.usernamePassword.Username;
1617fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mPasswd = credinfo.credential.usernamePassword.Password;
1627fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mIsMachineRemediation = credinfo.credential.usernamePassword.MachineManaged;
1637fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mInnerMethod = credinfo.credential.usernamePassword.eAPMethod.InnerMethod;
1647fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mImsi = credinfo.credential.sim.IMSI;
1657fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mMcc = mcc;
1667fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mMnc = mnc;
1677fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mCreationDate = credinfo.credential.CreationDate;
1687fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mExpirationDate = credinfo.credential.ExpirationDate;
1697fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mRealm = credinfo.credential.Realm;
1707fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
1717fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        if (credinfo.credentialPriority == null) {
1728dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            mCrednetialPriority = 128;
1738dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        } else {
1748dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            mCrednetialPriority = Integer.parseInt(credinfo.credentialPriority);
1757fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        }
1767fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
1777fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mHomeSpFqdn = credinfo.homeSP.FQDN;
1787fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
1798dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        mSubscriptionUpdateInterval = credinfo.subscriptionUpdate.UpdateInterval;
1807fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mSubscriptionUpdateMethod = credinfo.subscriptionUpdate.UpdateMethod;
1817fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mSubscriptionUpdateRestriction = credinfo.subscriptionUpdate.Restriction;
1827fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mSubscriptionUpdateURI = credinfo.subscriptionUpdate.URI;
1838dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        mSubscriptionUpdateUsername = credinfo.subscriptionUpdate.usernamePassword.Username;
1848dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        mSubscriptionUpdatePassword = credinfo.subscriptionUpdate.usernamePassword.Password;
1857fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
1868dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        mPolicyUpdateUri = credinfo.policy.policyUpdate.URI;
1877fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mPolicyUpdateInterval = credinfo.policy.policyUpdate.UpdateInterval;
1888dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        mPolicyUpdateUsername = credinfo.policy.policyUpdate.usernamePassword.Username;
1898dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        mPolicyUpdatePassword = credinfo.policy.policyUpdate.usernamePassword.Password;
1907fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mPolicyUpdateRestriction = credinfo.policy.policyUpdate.Restriction;
1917fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mPolicyUpdateMethod = credinfo.policy.policyUpdate.UpdateMethod;
1927fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mPreferredRoamingPartnerList = credinfo.policy.preferredRoamingPartnerList.values();
1937fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mMinBackhaulThresholdNetwork = credinfo.policy.minBackhaulThreshold.values();
1947fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mRequiredProtoPortTuple = credinfo.policy.requiredProtoPortTuple.values();
1957fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mMaxBssLoad = credinfo.policy.maximumBSSLoadValue;
1967fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mSpExclusionList = credinfo.policy.sPExclusionList.values();
1977fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
1987fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mHomeOIList = credinfo.homeSP.homeOIList.values();
1997fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mFriendlyName = credinfo.homeSP.FriendlyName;
2008dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        mCheckAaaServerCertStatus = credinfo.credential.CheckAAAServerCertStatus;
2017fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
2027fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
2037fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
2047fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public String getUpdateIdentifier() {
2057fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mUpdateIdentifier;
2067fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
2077fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
2087fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
2097fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public String getUpdateMethod() {
2107fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mSubscriptionUpdateMethod;
2117fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
2127fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
2137fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
2147fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public void setUpdateMethod(String method) {
2157fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mSubscriptionUpdateMethod = method;
2167fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
2177fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
2187fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
2198dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    public String getWifiSpFqdn() {
2208dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        return mWifiSpFqdn;
2217fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
2227fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
2237fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
2247fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public String getCredName() {
2257fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mCredentialName;
2267fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
2277fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
2287fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
2298dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    public String getType() {
2307fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mType;
2317fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
2327fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
2337fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /**
234bd9af355975e0feb54385c4615b9f9314b52dba7Yuhao Zheng     * Get enterprise config of this Passpoint credential.
235bd9af355975e0feb54385c4615b9f9314b52dba7Yuhao Zheng     * @return Enterprise config
236bd9af355975e0feb54385c4615b9f9314b52dba7Yuhao Zheng     * @see WifiEnterpriseConfig
2377fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang     */
238bd9af355975e0feb54385c4615b9f9314b52dba7Yuhao Zheng    public WifiEnterpriseConfig getEnterpriseConfig() {
239bd9af355975e0feb54385c4615b9f9314b52dba7Yuhao Zheng        return new WifiEnterpriseConfig(mEnterpriseConfig);
240bd9af355975e0feb54385c4615b9f9314b52dba7Yuhao Zheng    }
241bd9af355975e0feb54385c4615b9f9314b52dba7Yuhao Zheng
242bd9af355975e0feb54385c4615b9f9314b52dba7Yuhao Zheng    /**
243bd9af355975e0feb54385c4615b9f9314b52dba7Yuhao Zheng     * Set enterprise config of this Passpoint credential.
244bd9af355975e0feb54385c4615b9f9314b52dba7Yuhao Zheng     * @param config Enterprise config, must be either EAP-TLS or EAP-TTLS
245bd9af355975e0feb54385c4615b9f9314b52dba7Yuhao Zheng     * @see WifiEnterpriseConfig
246bd9af355975e0feb54385c4615b9f9314b52dba7Yuhao Zheng     */
247bd9af355975e0feb54385c4615b9f9314b52dba7Yuhao Zheng    public void setEnterpriseConfig(WifiEnterpriseConfig config) {
248bd9af355975e0feb54385c4615b9f9314b52dba7Yuhao Zheng        // TODO
2497fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
2507fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
2517fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
2527fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public String getCertType() {
2537fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mCertType;
2547fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
2557fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
2567fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
2577fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public String getCertSha256Fingerprint() {
2587fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mCertSha256Fingerprint;
2597fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
2607fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
261bd9af355975e0feb54385c4615b9f9314b52dba7Yuhao Zheng    /** @hide */
2627fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public String getUserName() {
2637fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mUsername;
2647fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
2657fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
2667fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
2677fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public String getPassword() {
2687fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        // TODO: guarded by connectivity internal
2697fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mPasswd;
2707fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
2717fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
2727c28c3663470ce5eb818cfa2ce4a993e4bae8f33Yuhao Zheng    /** @hide */
2737fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public String getImsi() {
2747fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mImsi;
2757fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
2767fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
2777fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
2787fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public String getMcc() {
2797fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mMcc;
2807fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
2817fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
2827fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
2837fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public String getMnc() {
2847fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mMnc;
2857fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
2867fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
287bd9af355975e0feb54385c4615b9f9314b52dba7Yuhao Zheng    /** @hide */
2887c28c3663470ce5eb818cfa2ce4a993e4bae8f33Yuhao Zheng    public String getCaRootCertPath() {
2897fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mCaRootCert;
2907fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
2917fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
292bd9af355975e0feb54385c4615b9f9314b52dba7Yuhao Zheng    /** @hide */
2937fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public String getClientCertPath() {
2947fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mClientCert;
2957fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
2967fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
2977fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /**
2987c28c3663470ce5eb818cfa2ce4a993e4bae8f33Yuhao Zheng     * Get the realm of this Passpoint credential.
2997fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang     * @return Realm
3007fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang     */
3017fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public String getRealm() {
3027fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mRealm;
3037fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
3047fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
3057c28c3663470ce5eb818cfa2ce4a993e4bae8f33Yuhao Zheng    /**
3067c28c3663470ce5eb818cfa2ce4a993e4bae8f33Yuhao Zheng     * Set the ream of this Passpoint credential.
3077c28c3663470ce5eb818cfa2ce4a993e4bae8f33Yuhao Zheng     * @param realm Realm
3087c28c3663470ce5eb818cfa2ce4a993e4bae8f33Yuhao Zheng     */
3097c28c3663470ce5eb818cfa2ce4a993e4bae8f33Yuhao Zheng    public void setRealm(String realm) {
3107c28c3663470ce5eb818cfa2ce4a993e4bae8f33Yuhao Zheng        mRealm = realm;
3117c28c3663470ce5eb818cfa2ce4a993e4bae8f33Yuhao Zheng    }
3127c28c3663470ce5eb818cfa2ce4a993e4bae8f33Yuhao Zheng
3137fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
3147fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public int getPriority() {
3157fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        if (mUserPreferred) {
3167fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            return 0;
3177fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        }
3187fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
3198dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        return mCrednetialPriority;
3207fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
3217fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
3227fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /**
3237c28c3663470ce5eb818cfa2ce4a993e4bae8f33Yuhao Zheng     * Get the fully qualified domain name (FQDN) of this Passpoint credential.
3247fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang     * @return FQDN
3257fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang     */
3268dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    public String getHomeSpFqdn() {
3277fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mHomeSpFqdn;
3287fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
3297fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
3307c28c3663470ce5eb818cfa2ce4a993e4bae8f33Yuhao Zheng    /**
3317c28c3663470ce5eb818cfa2ce4a993e4bae8f33Yuhao Zheng     * Set the fully qualified domain name (FQDN) of this Passpoint credential.
3327c28c3663470ce5eb818cfa2ce4a993e4bae8f33Yuhao Zheng     * @param fqdn FQDN
3337c28c3663470ce5eb818cfa2ce4a993e4bae8f33Yuhao Zheng     */
334833a6f3d1bf0ade93fc0d35dcb12fc1902a7761droger.chang    public void setHomeFqdn(String fqdn) {
3357c28c3663470ce5eb818cfa2ce4a993e4bae8f33Yuhao Zheng        mHomeSpFqdn = fqdn;
3367c28c3663470ce5eb818cfa2ce4a993e4bae8f33Yuhao Zheng    }
3377c28c3663470ce5eb818cfa2ce4a993e4bae8f33Yuhao Zheng
3387c28c3663470ce5eb818cfa2ce4a993e4bae8f33Yuhao Zheng
3397fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
3408dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    public Collection<WifiPasspointDmTree.OtherHomePartners> getOtherHomePartnerList() {
3418dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        return mOtherHomePartnerList;
3427fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
3437fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
3447fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
3458dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    public String getSubscriptionUpdateUsername() {
3468dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        return mSubscriptionUpdateUsername;
3477fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
3487fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
3497fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
3508dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    public String getSubscriptionUpdatePassword() {
3518dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        return mSubscriptionUpdatePassword;
3527fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
3537fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
3547fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
3558dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    public String getPolicyUpdateUri() {
3568dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        return mPolicyUpdateUri;
3577fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
3587fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
3597fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
3607fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public String getPolicyUpdateInterval() {
3617fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mPolicyUpdateInterval;
3627fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
3637fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
3647fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
3658dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    public String getPolicyUpdateUsername() {
3668dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        return mPolicyUpdateUsername;
3677fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
3687fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
3697fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
3708dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    public String getPolicyUpdatePassword() {
3718dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        return mPolicyUpdatePassword;
3727fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
3737fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
3747fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
3757fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public String getPolicyUpdateRestriction() {
3767fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mPolicyUpdateRestriction;
3777fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
3787fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
3797fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
3807fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public String getPolicyUpdateMethod() {
3817fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mPolicyUpdateMethod;
3827fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
3837fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
3847fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
3857fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public String getCreationDate() {
3867fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mCreationDate;
3877fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
3887fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
3897fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
3907fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public String getExpirationDate() {
3917fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mExpirationDate;
3927fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
3937fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
3947fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
3957fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public void setExpirationDate(String expirationdate) {
3967fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mExpirationDate = expirationdate;
3977fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
3987fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
3997fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
4008dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    public Collection<WifiPasspointDmTree.PreferredRoamingPartnerList> getPreferredRoamingPartnerList() {
4017fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mPreferredRoamingPartnerList;
4027fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
4037fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
4047fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
4058dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    public Collection<WifiPasspointDmTree.HomeOIList> getHomeOiList() {
4067fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mHomeOIList;
4077fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
4087fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
4097fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
4107fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public Collection<WifiPasspointDmTree.MinBackhaulThresholdNetwork> getBackhaulThresholdList() {
4117fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mMinBackhaulThresholdNetwork;
4127fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
4137fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
4147fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
4157fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public Collection<WifiPasspointDmTree.RequiredProtoPortTuple> getRequiredProtoPortList() {
4167fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mRequiredProtoPortTuple;
4177fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
4187fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
4197fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
4207fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public Collection<WifiPasspointDmTree.SPExclusionList> getSPExclusionList() {
4217fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mSpExclusionList;
4227fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
4237fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
4247fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
4257fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public boolean getIsMachineRemediation() {
4267fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mIsMachineRemediation;
4277fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
4287fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
4297fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
4308dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    public String getAaaCertUrl() {
4318dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        return mAaaCertUrl;
4327fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
4337fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
4347fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
4358dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    public String getAaaSha256Fingerprint() {
4368dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        return mAaaSha256Fingerprint;
4377fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
4387fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
4397fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
4407fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public String getSubscriptionUpdateRestriction() {
4417fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mSubscriptionUpdateRestriction;
4427fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
4437fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
4447fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
4457fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public String getSubscriptionUpdateURI() {
4467fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mSubscriptionUpdateURI;
4477fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
4487fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
4497fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
4507fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public String getSubscriptionUpdateInterval() {
4517fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mSubscriptionUpdateInterval;
4527fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
4537fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
4547fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
4557fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public String getFriendlyName() {
4567fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mFriendlyName;
4577fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
4587fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
4597fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
4607fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public String getMaxBssLoad() {
4617fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mMaxBssLoad;
4627fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
4637fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
4647fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
4657fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public boolean getUserPreference() {
4667fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mUserPreferred;
4677fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
4687fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
4697fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
4707fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public boolean getCheckAaaServerCertStatus() {
4717fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return mCheckAaaServerCertStatus;
4727fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
4737fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
4747fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
4757fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public void setUserPreference(boolean value) {
4767fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        mUserPreferred = value;
4777fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
4787fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
4797fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    @Override
4807fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
4817fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public boolean equals(Object obj) {
4827fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        boolean result = false;
4837fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        if (obj instanceof WifiPasspointCredential) {
4847fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            final WifiPasspointCredential other = (WifiPasspointCredential) obj;
4857fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            if (this.mType.equals(other.mType)) {
4867fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang                if (this.mType.equals("TTLS")) {
4877fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang                    result = this.mUsername.equals(other.mUsername) &&
4887fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang                            this.mPasswd.equals(other.mPasswd) &&
4897fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang                            this.mRealm.equals(other.mRealm) &&
4907fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang                            this.mHomeSpFqdn.equals(other.mHomeSpFqdn);
4917fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang                }
4927fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang                if (this.mType.equals("TLS")) {
4937fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang                    result = this.mRealm.equals(other.mRealm) &&
494535e0fb8060458c827a29b99af579dd656ef8c49roger.chang                            this.mHomeSpFqdn.equals(other.mHomeSpFqdn) &&
495535e0fb8060458c827a29b99af579dd656ef8c49roger.chang                            this.mClientCert.equals(other.mClientCert);
4967fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang                }
4977fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang                if (this.mType.equals("SIM")) {
4987fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang                    result = this.mMcc.equals(other.mMcc) &&
4997fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang                            this.mMnc.equals(other.mMnc) &&
5007fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang                            this.mImsi.equals(other.mImsi) &&
5017fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang                            this.mHomeSpFqdn.equals(other.mHomeSpFqdn);
5027fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang                }
5037fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            }
5047fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        }
5057fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return result;
5067fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
5077fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
5087fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    @Override
5097fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
5107fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public String toString() {
5117fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        StringBuffer sb = new StringBuffer();
5127fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        String none = "<none>";
5137fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
5148dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        if (!DBG) {
5158dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            sb.append(none);
5168dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        } else {
5178dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            sb.append(", UpdateIdentifier: ")
5188dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            .append(mUpdateIdentifier == null ? none : mUpdateIdentifier)
5198dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            .append(", SubscriptionUpdateMethod: ")
5208dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            .append(mSubscriptionUpdateMethod == null ? none : mSubscriptionUpdateMethod)
5218dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            .append(", Type: ").append(mType == null ? none : mType)
5228dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            .append(", Username: ").append(mUsername == null ? none : mUsername)
5238dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            .append(", Passwd: ").append(mPasswd == null ? none : mPasswd)
5248dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            .append(", SubDMAccUsername: ")
5258dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            .append(mSubscriptionUpdateUsername == null ? none : mSubscriptionUpdateUsername)
5268dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            .append(", SubDMAccPassword: ")
5278dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            .append(mSubscriptionUpdatePassword == null ? none : mSubscriptionUpdatePassword)
5288dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            .append(", PolDMAccUsername: ")
5298dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            .append(mPolicyUpdateUsername == null ? none : mPolicyUpdateUsername)
5308dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            .append(", PolDMAccPassword: ")
5318dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            .append(mPolicyUpdatePassword == null ? none : mPolicyUpdatePassword)
5328dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            .append(", Imsi: ").append(mImsi == null ? none : mImsi)
5338dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            .append(", Mcc: ").append(mMcc == null ? none : mMcc)
5348dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            .append(", Mnc: ").append(mMnc == null ? none : mMnc)
5358dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            .append(", CaRootCert: ").append(mCaRootCert == null ? none : mCaRootCert)
5368dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            .append(", Realm: ").append(mRealm == null ? none : mRealm)
5378dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            .append(", Priority: ").append(mCrednetialPriority)
5388dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            .append(", Fqdn: ").append(mHomeSpFqdn == null ? none : mHomeSpFqdn)
5398dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            .append(", Otherhomepartners: ")
5408dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            .append(mOtherHomePartnerList == null ? none : mOtherHomePartnerList)
5418dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            .append(", ExpirationDate: ")
5428dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            .append(mExpirationDate == null ? none : mExpirationDate)
5438dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            .append(", MaxBssLoad: ").append(mMaxBssLoad == null ? none : mMaxBssLoad)
5448dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            .append(", SPExclusionList: ").append(mSpExclusionList);
5458dd64036cdaec757d3b19654a2c3c336ce902433roger.chang
5468dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            if (mPreferredRoamingPartnerList != null) {
5478dd64036cdaec757d3b19654a2c3c336ce902433roger.chang                sb.append("PreferredRoamingPartnerList:");
5488dd64036cdaec757d3b19654a2c3c336ce902433roger.chang                for (WifiPasspointDmTree.PreferredRoamingPartnerList prpListItem : mPreferredRoamingPartnerList) {
5498dd64036cdaec757d3b19654a2c3c336ce902433roger.chang                    sb.append("[fqdnmatch:").append(prpListItem.FQDN_Match).
5508dd64036cdaec757d3b19654a2c3c336ce902433roger.chang                            append(", priority:").append(prpListItem.Priority).
5518dd64036cdaec757d3b19654a2c3c336ce902433roger.chang                            append(", country:").append(prpListItem.Country).append("]");
5528dd64036cdaec757d3b19654a2c3c336ce902433roger.chang                }
5537fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            }
5547fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
5558dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            if (mHomeOIList != null) {
5568dd64036cdaec757d3b19654a2c3c336ce902433roger.chang                sb.append("HomeOIList:");
5578dd64036cdaec757d3b19654a2c3c336ce902433roger.chang                for (WifiPasspointDmTree.HomeOIList HomeOIListItem : mHomeOIList) {
5588dd64036cdaec757d3b19654a2c3c336ce902433roger.chang                    sb.append("[HomeOI:").append(HomeOIListItem.HomeOI).
5598dd64036cdaec757d3b19654a2c3c336ce902433roger.chang                            append(", HomeOIRequired:").append(HomeOIListItem.HomeOIRequired).
5608dd64036cdaec757d3b19654a2c3c336ce902433roger.chang                            append("]");
5618dd64036cdaec757d3b19654a2c3c336ce902433roger.chang                }
5627fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            }
5637fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
5648dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            if (mMinBackhaulThresholdNetwork != null) {
5658dd64036cdaec757d3b19654a2c3c336ce902433roger.chang                sb.append("BackHaulThreshold:");
5668dd64036cdaec757d3b19654a2c3c336ce902433roger.chang                for (WifiPasspointDmTree.MinBackhaulThresholdNetwork BhtListItem : mMinBackhaulThresholdNetwork) {
5678dd64036cdaec757d3b19654a2c3c336ce902433roger.chang                    sb.append("[networkType:").append(BhtListItem.NetworkType).
5688dd64036cdaec757d3b19654a2c3c336ce902433roger.chang                            append(", dlBandwidth:").append(BhtListItem.DLBandwidth).
5698dd64036cdaec757d3b19654a2c3c336ce902433roger.chang                            append(", ulBandwidth:").append(BhtListItem.ULBandwidth).
5708dd64036cdaec757d3b19654a2c3c336ce902433roger.chang                            append("]");
5718dd64036cdaec757d3b19654a2c3c336ce902433roger.chang                }
5727fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            }
5737fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
5748dd64036cdaec757d3b19654a2c3c336ce902433roger.chang            if (mRequiredProtoPortTuple != null) {
5758dd64036cdaec757d3b19654a2c3c336ce902433roger.chang                sb.append("WifiMORequiredProtoPortTupleList:");
5768dd64036cdaec757d3b19654a2c3c336ce902433roger.chang                for (WifiPasspointDmTree.RequiredProtoPortTuple RpptListItem : mRequiredProtoPortTuple) {
5778dd64036cdaec757d3b19654a2c3c336ce902433roger.chang                    sb.append("[IPProtocol:").append(RpptListItem.IPProtocol).
5788dd64036cdaec757d3b19654a2c3c336ce902433roger.chang                            append(", PortNumber:").append(RpptListItem.PortNumber).
5798dd64036cdaec757d3b19654a2c3c336ce902433roger.chang                            append("]");
5808dd64036cdaec757d3b19654a2c3c336ce902433roger.chang                }
5817fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            }
5827fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        }
5837fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return sb.toString();
5847fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
5857fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
5867fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** Implement the Parcelable interface {@hide} */
5877fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public int describeContents() {
5887fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return 0;
5897fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
5907fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
5917fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** Implement the Parcelable interface {@hide} */
5927fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public void writeToParcel(Parcel dest, int flags) {
5938dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        dest.writeString(mWifiSpFqdn);
5948dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        dest.writeString(mCredentialName);
5957fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        dest.writeString(mType);
5968dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        dest.writeInt(mCrednetialPriority);
5977fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        dest.writeString(mHomeSpFqdn);
5988dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        dest.writeString(mRealm);
5998dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    }
6008dd64036cdaec757d3b19654a2c3c336ce902433roger.chang
6018dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    /** Implement the Parcelable interface {@hide} */
6028dd64036cdaec757d3b19654a2c3c336ce902433roger.chang    public void readFromParcel(Parcel in) {
6038dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        mWifiSpFqdn = in.readString();
6048dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        mCredentialName = in.readString();
6058dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        mType = in.readString();
6068dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        mCrednetialPriority = in.readInt();
6078dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        mHomeSpFqdn = in.readString();
6088dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        mRealm = in.readString();
6097fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
6107fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
6117fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** Implement the Parcelable interface {@hide} */
6127fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public static final Creator<WifiPasspointCredential> CREATOR =
6137fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            new Creator<WifiPasspointCredential>() {
6147fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang                public WifiPasspointCredential createFromParcel(Parcel in) {
6157fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang                    WifiPasspointCredential pc = new WifiPasspointCredential();
6168dd64036cdaec757d3b19654a2c3c336ce902433roger.chang                    pc.mWifiSpFqdn = in.readString();
6178dd64036cdaec757d3b19654a2c3c336ce902433roger.chang                    pc.mCredentialName = in.readString();
6187fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang                    pc.mType = in.readString();
6198dd64036cdaec757d3b19654a2c3c336ce902433roger.chang                    pc.mCrednetialPriority = in.readInt();
6207fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang                    pc.mHomeSpFqdn = in.readString();
6218dd64036cdaec757d3b19654a2c3c336ce902433roger.chang                    pc.mRealm = in.readString();
6227fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang                    return pc;
6237fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang                }
6247fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
6257fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang                public WifiPasspointCredential[] newArray(int size) {
6267fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang                    return new WifiPasspointCredential[size];
6277fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang                }
6287fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            };
6297fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
6307fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
6317fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public int compareTo(WifiPasspointCredential another) {
6327fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
6337fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        //The smaller the higher
6348dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        if (mCrednetialPriority < another.mCrednetialPriority) {
6357fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            return -1;
6368dd64036cdaec757d3b19654a2c3c336ce902433roger.chang        } else if (mCrednetialPriority == another.mCrednetialPriority) {
6377fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            return this.mType.compareTo(another.mType);
6387fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        } else {
6397fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            return 1;
6407fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        }
6417fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
6427fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
6437fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    @Override
6447fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    /** @hide */
6457fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    public int hashCode() {
6467fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        int hash = 208;
6477fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        if (mType != null) {
6487fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            hash += mType.hashCode();
6497fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        }
6507fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        if (mRealm != null) {
6517fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            hash += mRealm.hashCode();
6527fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        }
6537fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        if (mHomeSpFqdn != null) {
6547fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            hash += mHomeSpFqdn.hashCode();
6557fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        }
6567fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        if (mUsername != null) {
6577fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            hash += mUsername.hashCode();
6587fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        }
6597fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        if (mPasswd != null) {
6607fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang            hash += mPasswd.hashCode();
6617fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        }
6627fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang
6637fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang        return hash;
6647fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang    }
6657fee7232ee2ae45fb3cd4fcce314e8f1101ae8dbRoger Chang}
666