• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
UpdateInfo(OMANode policyUpdate)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 
getInterval()60     public long getInterval() {
61         return mInterval;
62     }
63 
isSPPClientInitiated()64     public boolean isSPPClientInitiated() {
65         return mSPPClientInitiated;
66     }
67 
getUpdateRestriction()68     public UpdateRestriction getUpdateRestriction() {
69         return mUpdateRestriction;
70     }
71 
getURI()72     public String getURI() {
73         return mURI;
74     }
75 
getUsername()76     public String getUsername() {
77         return mUsername;
78     }
79 
getPassword()80     public String getPassword() {
81         return mPassword;
82     }
83 
getCertURL()84     public String getCertURL() {
85         return mCertURL;
86     }
87 
getCertFP()88     public String getCertFP() {
89         return mCertFP;
90     }
91 
92     @Override
toString()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