1package com.android.hotspot2.pps; 2 3import android.util.Base64; 4 5import com.android.hotspot2.Utils; 6import com.android.hotspot2.omadm.MOManager; 7import com.android.hotspot2.omadm.OMAException; 8import com.android.hotspot2.omadm.OMANode; 9 10import java.nio.charset.StandardCharsets; 11 12import static com.android.hotspot2.omadm.MOManager.TAG_CertSHA256Fingerprint; 13import static com.android.hotspot2.omadm.MOManager.TAG_CertURL; 14import static com.android.hotspot2.omadm.MOManager.TAG_Password; 15import static com.android.hotspot2.omadm.MOManager.TAG_Restriction; 16import static com.android.hotspot2.omadm.MOManager.TAG_TrustRoot; 17import static com.android.hotspot2.omadm.MOManager.TAG_URI; 18import static com.android.hotspot2.omadm.MOManager.TAG_UpdateInterval; 19import static com.android.hotspot2.omadm.MOManager.TAG_UpdateMethod; 20import static com.android.hotspot2.omadm.MOManager.TAG_Username; 21import static com.android.hotspot2.omadm.MOManager.TAG_UsernamePassword; 22 23public class UpdateInfo { 24 public enum UpdateRestriction {HomeSP, RoamingPartner, Unrestricted} 25 26 private final long mInterval; 27 private final boolean mSPPClientInitiated; 28 private final UpdateRestriction mUpdateRestriction; 29 private final String mURI; 30 private final String mUsername; 31 private final String mPassword; 32 private final String mCertURL; 33 private final String mCertFP; 34 35 public UpdateInfo(OMANode policyUpdate) throws OMAException { 36 mInterval = MOManager.getLong(policyUpdate, TAG_UpdateInterval, null) * 37 MOManager.IntervalFactor; 38 mSPPClientInitiated = MOManager.getSelection(policyUpdate, TAG_UpdateMethod); 39 mUpdateRestriction = MOManager.getSelection(policyUpdate, TAG_Restriction); 40 mURI = MOManager.getString(policyUpdate, TAG_URI); 41 42 OMANode unp = policyUpdate.getChild(TAG_UsernamePassword); 43 if (unp != null) { 44 mUsername = MOManager.getString(unp.getChild(TAG_Username)); 45 String pw = MOManager.getString(unp.getChild(TAG_Password)); 46 mPassword = new String(Base64.decode(pw.getBytes(StandardCharsets.US_ASCII), 47 Base64.DEFAULT), StandardCharsets.UTF_8); 48 } else { 49 mUsername = null; 50 mPassword = null; 51 } 52 53 OMANode trustRoot = MOManager.getChild(policyUpdate, TAG_TrustRoot); 54 mCertURL = MOManager.getString(trustRoot, TAG_CertURL); 55 mCertFP = MOManager.getString(trustRoot, TAG_CertSHA256Fingerprint); 56 } 57 58 public long getInterval() { 59 return mInterval; 60 } 61 62 public boolean isSPPClientInitiated() { 63 return mSPPClientInitiated; 64 } 65 66 public UpdateRestriction getUpdateRestriction() { 67 return mUpdateRestriction; 68 } 69 70 public String getURI() { 71 return mURI; 72 } 73 74 public String getUsername() { 75 return mUsername; 76 } 77 78 public String getPassword() { 79 return mPassword; 80 } 81 82 public String getCertURL() { 83 return mCertURL; 84 } 85 86 public String getCertFP() { 87 return mCertFP; 88 } 89 90 @Override 91 public String toString() { 92 return "UpdateInfo{" + 93 "interval=" + Utils.toHMS(mInterval) + 94 ", SPPClientInitiated=" + mSPPClientInitiated + 95 ", updateRestriction=" + mUpdateRestriction + 96 ", URI='" + mURI + '\'' + 97 ", username='" + mUsername + '\'' + 98 ", password=" + mPassword + 99 ", certURL='" + mCertURL + '\'' + 100 ", certFP='" + mCertFP + '\'' + 101 '}'; 102 } 103} 104