11d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvistpackage com.android.server.wifi.hotspot2.pps; 21d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist 31d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvistimport android.util.Base64; 41d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist 51d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvistimport com.android.server.wifi.hotspot2.Utils; 61d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvistimport com.android.server.wifi.hotspot2.omadm.OMAException; 71d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvistimport com.android.server.wifi.hotspot2.omadm.OMANode; 82e814680f4dd27a5f825afab189843582235cedcJan Nordqvistimport com.android.server.wifi.hotspot2.omadm.PasspointManagementObjectManager; 91d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist 101d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvistimport java.nio.charset.StandardCharsets; 111d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist 122e814680f4dd27a5f825afab189843582235cedcJan Nordqvistimport static com.android.server.wifi.hotspot2.omadm.PasspointManagementObjectManager.TAG_CertSHA256Fingerprint; 132e814680f4dd27a5f825afab189843582235cedcJan Nordqvistimport static com.android.server.wifi.hotspot2.omadm.PasspointManagementObjectManager.TAG_CertURL; 142e814680f4dd27a5f825afab189843582235cedcJan Nordqvistimport static com.android.server.wifi.hotspot2.omadm.PasspointManagementObjectManager.TAG_Password; 152e814680f4dd27a5f825afab189843582235cedcJan Nordqvistimport static com.android.server.wifi.hotspot2.omadm.PasspointManagementObjectManager.TAG_Restriction; 162e814680f4dd27a5f825afab189843582235cedcJan Nordqvistimport static com.android.server.wifi.hotspot2.omadm.PasspointManagementObjectManager.TAG_TrustRoot; 172e814680f4dd27a5f825afab189843582235cedcJan Nordqvistimport static com.android.server.wifi.hotspot2.omadm.PasspointManagementObjectManager.TAG_URI; 182e814680f4dd27a5f825afab189843582235cedcJan Nordqvistimport static com.android.server.wifi.hotspot2.omadm.PasspointManagementObjectManager.TAG_UpdateInterval; 192e814680f4dd27a5f825afab189843582235cedcJan Nordqvistimport static com.android.server.wifi.hotspot2.omadm.PasspointManagementObjectManager.TAG_UpdateMethod; 202e814680f4dd27a5f825afab189843582235cedcJan Nordqvistimport static com.android.server.wifi.hotspot2.omadm.PasspointManagementObjectManager.TAG_Username; 212e814680f4dd27a5f825afab189843582235cedcJan Nordqvistimport static com.android.server.wifi.hotspot2.omadm.PasspointManagementObjectManager.TAG_UsernamePassword; 221d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist 231d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvistpublic class UpdateInfo { 241d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist public enum UpdateRestriction {HomeSP, RoamingPartner, Unrestricted} 251d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist 261d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist private final long mInterval; 271d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist private final boolean mSPPClientInitiated; 281d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist private final UpdateRestriction mUpdateRestriction; 291d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist private final String mURI; 301d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist private final String mUsername; 311d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist private final String mPassword; 321d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist private final String mCertURL; 331d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist private final String mCertFP; 341d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist 351d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist public UpdateInfo(OMANode policyUpdate) throws OMAException { 362e814680f4dd27a5f825afab189843582235cedcJan Nordqvist mInterval = PasspointManagementObjectManager.getLong(policyUpdate, TAG_UpdateInterval, null) 372e814680f4dd27a5f825afab189843582235cedcJan Nordqvist * PasspointManagementObjectManager.IntervalFactor; 382e814680f4dd27a5f825afab189843582235cedcJan Nordqvist mSPPClientInitiated = PasspointManagementObjectManager.getSelection(policyUpdate, 392e814680f4dd27a5f825afab189843582235cedcJan Nordqvist TAG_UpdateMethod); 402e814680f4dd27a5f825afab189843582235cedcJan Nordqvist mUpdateRestriction = 412e814680f4dd27a5f825afab189843582235cedcJan Nordqvist PasspointManagementObjectManager.getSelection(policyUpdate, TAG_Restriction); 422e814680f4dd27a5f825afab189843582235cedcJan Nordqvist mURI = PasspointManagementObjectManager.getString(policyUpdate, TAG_URI); 431d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist 441d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist OMANode unp = policyUpdate.getChild(TAG_UsernamePassword); 451d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist if (unp != null) { 462e814680f4dd27a5f825afab189843582235cedcJan Nordqvist mUsername = PasspointManagementObjectManager.getString(unp.getChild(TAG_Username)); 472e814680f4dd27a5f825afab189843582235cedcJan Nordqvist String pw = PasspointManagementObjectManager.getString(unp.getChild(TAG_Password)); 481d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist mPassword = new String(Base64.decode(pw.getBytes(StandardCharsets.US_ASCII), 491d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist Base64.DEFAULT), StandardCharsets.UTF_8); 501d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist } 511d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist else { 521d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist mUsername = null; 531d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist mPassword = null; 541d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist } 551d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist 562e814680f4dd27a5f825afab189843582235cedcJan Nordqvist OMANode trustRoot = PasspointManagementObjectManager.getChild(policyUpdate, TAG_TrustRoot); 572e814680f4dd27a5f825afab189843582235cedcJan Nordqvist mCertURL = PasspointManagementObjectManager.getString(trustRoot, TAG_CertURL); 582e814680f4dd27a5f825afab189843582235cedcJan Nordqvist mCertFP = PasspointManagementObjectManager.getString(trustRoot, TAG_CertSHA256Fingerprint); 591d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist } 601d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist 611d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist public long getInterval() { 621d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist return mInterval; 631d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist } 641d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist 651d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist public boolean isSPPClientInitiated() { 661d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist return mSPPClientInitiated; 671d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist } 681d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist 691d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist public UpdateRestriction getUpdateRestriction() { 701d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist return mUpdateRestriction; 711d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist } 721d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist 731d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist public String getURI() { 741d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist return mURI; 751d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist } 761d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist 771d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist public String getUsername() { 781d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist return mUsername; 791d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist } 801d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist 811d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist public String getPassword() { 821d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist return mPassword; 831d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist } 841d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist 851d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist public String getCertURL() { 861d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist return mCertURL; 871d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist } 881d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist 891d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist public String getCertFP() { 901d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist return mCertFP; 911d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist } 921d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist 931d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist @Override 941d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist public String toString() { 951d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist return "UpdateInfo{" + 961d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist "interval=" + Utils.toHMS(mInterval) + 971d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist ", SPPClientInitiated=" + mSPPClientInitiated + 981d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist ", updateRestriction=" + mUpdateRestriction + 991d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist ", URI='" + mURI + '\'' + 1001d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist ", username='" + mUsername + '\'' + 1011d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist ", password=" + mPassword + 1021d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist ", certURL='" + mCertURL + '\'' + 1031d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist ", certFP='" + mCertFP + '\'' + 1041d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist '}'; 1051d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist } 1061d5cd3938f9191184cd9aea3059a3b62bf3a0372Jan Nordqvist} 107