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