package com.android.hotspot2.pps;
import android.util.Base64;
import com.android.hotspot2.Utils;
import com.android.hotspot2.omadm.MOManager;
import com.android.hotspot2.omadm.OMAException;
import com.android.hotspot2.omadm.OMANode;
import java.nio.charset.StandardCharsets;
import static com.android.hotspot2.omadm.MOManager.TAG_CertSHA256Fingerprint;
import static com.android.hotspot2.omadm.MOManager.TAG_CertURL;
import static com.android.hotspot2.omadm.MOManager.TAG_Password;
import static com.android.hotspot2.omadm.MOManager.TAG_Restriction;
import static com.android.hotspot2.omadm.MOManager.TAG_TrustRoot;
import static com.android.hotspot2.omadm.MOManager.TAG_URI;
import static com.android.hotspot2.omadm.MOManager.TAG_UpdateInterval;
import static com.android.hotspot2.omadm.MOManager.TAG_UpdateMethod;
import static com.android.hotspot2.omadm.MOManager.TAG_Username;
import static com.android.hotspot2.omadm.MOManager.TAG_UsernamePassword;
public class UpdateInfo {
public enum UpdateRestriction {HomeSP, RoamingPartner, Unrestricted}
private final long mInterval;
private final boolean mSPPClientInitiated;
private final UpdateRestriction mUpdateRestriction;
private final String mURI;
private final String mUsername;
private final String mPassword;
private final String mCertURL;
private final String mCertFP;
public UpdateInfo(OMANode policyUpdate) throws OMAException {
mInterval = MOManager.getLong(policyUpdate, TAG_UpdateInterval, null) *
MOManager.IntervalFactor;
mSPPClientInitiated = MOManager.getSelection(policyUpdate, TAG_UpdateMethod);
mUpdateRestriction = MOManager.getSelection(policyUpdate, TAG_Restriction);
mURI = MOManager.getString(policyUpdate, TAG_URI);
OMANode unp = policyUpdate.getChild(TAG_UsernamePassword);
if (unp != null) {
mUsername = MOManager.getString(unp.getChild(TAG_Username));
String pw = MOManager.getString(unp.getChild(TAG_Password));
mPassword = new String(Base64.decode(pw.getBytes(StandardCharsets.US_ASCII),
Base64.DEFAULT), StandardCharsets.UTF_8);
} else {
mUsername = null;
mPassword = null;
}
OMANode trustRoot = MOManager.getChild(policyUpdate, TAG_TrustRoot);
mCertURL = MOManager.getString(trustRoot, TAG_CertURL);
mCertFP = MOManager.getString(trustRoot, TAG_CertSHA256Fingerprint);
}
public long getInterval() {
return mInterval;
}
public boolean isSPPClientInitiated() {
return mSPPClientInitiated;
}
public UpdateRestriction getUpdateRestriction() {
return mUpdateRestriction;
}
public String getURI() {
return mURI;
}
public String getUsername() {
return mUsername;
}
public String getPassword() {
return mPassword;
}
public String getCertURL() {
return mCertURL;
}
public String getCertFP() {
return mCertFP;
}
@Override
public String toString() {
return "UpdateInfo{" +
"interval=" + Utils.toHMS(mInterval) +
", SPPClientInitiated=" + mSPPClientInitiated +
", updateRestriction=" + mUpdateRestriction +
", URI='" + mURI + '\'' +
", username='" + mUsername + '\'' +
", password=" + mPassword +
", certURL='" + mCertURL + '\'' +
", certFP='" + mCertFP + '\'' +
'}';
}
}