1ed0883b8349832c510353310f48a47f316900a00Sander Alewijnse/*
2ed0883b8349832c510353310f48a47f316900a00Sander Alewijnse * Copyright 2014, The Android Open Source Project
3ed0883b8349832c510353310f48a47f316900a00Sander Alewijnse *
4ed0883b8349832c510353310f48a47f316900a00Sander Alewijnse * Licensed under the Apache License, Version 2.0 (the "License");
5ed0883b8349832c510353310f48a47f316900a00Sander Alewijnse * you may not use this file except in compliance with the License.
6ed0883b8349832c510353310f48a47f316900a00Sander Alewijnse * You may obtain a copy of the License at
7ed0883b8349832c510353310f48a47f316900a00Sander Alewijnse *
8ed0883b8349832c510353310f48a47f316900a00Sander Alewijnse *     http://www.apache.org/licenses/LICENSE-2.0
9ed0883b8349832c510353310f48a47f316900a00Sander Alewijnse *
10ed0883b8349832c510353310f48a47f316900a00Sander Alewijnse * Unless required by applicable law or agreed to in writing, software
11ed0883b8349832c510353310f48a47f316900a00Sander Alewijnse * distributed under the License is distributed on an "AS IS" BASIS,
12ed0883b8349832c510353310f48a47f316900a00Sander Alewijnse * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ed0883b8349832c510353310f48a47f316900a00Sander Alewijnse * See the License for the specific language governing permissions and
14ed0883b8349832c510353310f48a47f316900a00Sander Alewijnse * limitations under the License.
15ed0883b8349832c510353310f48a47f316900a00Sander Alewijnse */
16ed0883b8349832c510353310f48a47f316900a00Sander Alewijnse
17ed0883b8349832c510353310f48a47f316900a00Sander Alewijnsepackage com.android.managedprovisioning;
18ed0883b8349832c510353310f48a47f316900a00Sander Alewijnse
19d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnseimport android.os.Parcel;
20d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnseimport android.os.Parcelable;
21f88f709f4a03da9451ea63a60fdb09f0ce972dd3Sander Alewijnseimport android.os.PersistableBundle;
2248fdbe03c7cc39accada396a96acff09bdecb3b2Sander Alewijnseimport android.util.Base64;
2363254f4c85d3a0643bafb78558fa2cb75f4ee3d5Sander Alewijnseimport java.util.Locale;
2463254f4c85d3a0643bafb78558fa2cb75f4ee3d5Sander Alewijnse
2548fdbe03c7cc39accada396a96acff09bdecb3b2Sander Alewijnse
26ed0883b8349832c510353310f48a47f316900a00Sander Alewijnse/**
27ed0883b8349832c510353310f48a47f316900a00Sander Alewijnse * Provisioning Parameters for DeviceOwner Provisioning
28ed0883b8349832c510353310f48a47f316900a00Sander Alewijnse */
29d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnsepublic class ProvisioningParams implements Parcelable {
3056f7157c220d657d48406caf8e0d61904dfd7789Sander Alewijnse    public static final long DEFAULT_LOCAL_TIME = -1;
3156f7157c220d657d48406caf8e0d61904dfd7789Sander Alewijnse    public static final boolean DEFAULT_WIFI_HIDDEN = false;
3256f7157c220d657d48406caf8e0d61904dfd7789Sander Alewijnse    public static final int DEFAULT_WIFI_PROXY_PORT = 0;
3356f7157c220d657d48406caf8e0d61904dfd7789Sander Alewijnse
349aff1405be928aa8be52fa3a0229209a3f051d9fSander Alewijnse    public String mTimeZone;
359aff1405be928aa8be52fa3a0229209a3f051d9fSander Alewijnse    public long mLocalTime = DEFAULT_LOCAL_TIME;
369aff1405be928aa8be52fa3a0229209a3f051d9fSander Alewijnse    public Locale mLocale;
379aff1405be928aa8be52fa3a0229209a3f051d9fSander Alewijnse
389aff1405be928aa8be52fa3a0229209a3f051d9fSander Alewijnse    public String mWifiSsid;
399aff1405be928aa8be52fa3a0229209a3f051d9fSander Alewijnse    public boolean mWifiHidden = DEFAULT_WIFI_HIDDEN;
409aff1405be928aa8be52fa3a0229209a3f051d9fSander Alewijnse    public String mWifiSecurityType;
419aff1405be928aa8be52fa3a0229209a3f051d9fSander Alewijnse    public String mWifiPassword;
429aff1405be928aa8be52fa3a0229209a3f051d9fSander Alewijnse    public String mWifiProxyHost;
439aff1405be928aa8be52fa3a0229209a3f051d9fSander Alewijnse    public int mWifiProxyPort = DEFAULT_WIFI_PROXY_PORT;
449aff1405be928aa8be52fa3a0229209a3f051d9fSander Alewijnse    public String mWifiProxyBypassHosts;
459aff1405be928aa8be52fa3a0229209a3f051d9fSander Alewijnse    public String mWifiPacUrl;
469aff1405be928aa8be52fa3a0229209a3f051d9fSander Alewijnse
479aff1405be928aa8be52fa3a0229209a3f051d9fSander Alewijnse    public String mDeviceAdminPackageName; // Package name of the device admin package.
489aff1405be928aa8be52fa3a0229209a3f051d9fSander Alewijnse
499aff1405be928aa8be52fa3a0229209a3f051d9fSander Alewijnse    public String mDeviceAdminPackageDownloadLocation; // Url of the device admin .apk
50d8dcb1f2cf3f537a6199671179470828f74236adSander Alewijnse    public String mDeviceAdminPackageDownloadCookieHeader; // Cookie header for http request
519aff1405be928aa8be52fa3a0229209a3f051d9fSander Alewijnse    public byte[] mDeviceAdminPackageChecksum = new byte[0]; // SHA-1 sum of the .apk file.
5256f7157c220d657d48406caf8e0d61904dfd7789Sander Alewijnse
53f88f709f4a03da9451ea63a60fdb09f0ce972dd3Sander Alewijnse    public PersistableBundle mAdminExtrasBundle;
54f88f709f4a03da9451ea63a60fdb09f0ce972dd3Sander Alewijnse
558f9bd13b0d15d6fb1b6f27d28c94d37f8252a8cdSander Alewijnse    public boolean mStartedByNfc; // True iff provisioning flow was started by Nfc bump.
568f9bd13b0d15d6fb1b6f27d28c94d37f8252a8cdSander Alewijnse
5756f7157c220d657d48406caf8e0d61904dfd7789Sander Alewijnse    public String getLocaleAsString() {
5856f7157c220d657d48406caf8e0d61904dfd7789Sander Alewijnse        if (mLocale != null) {
5956f7157c220d657d48406caf8e0d61904dfd7789Sander Alewijnse            return mLocale.getLanguage() + "_" + mLocale.getCountry();
6056f7157c220d657d48406caf8e0d61904dfd7789Sander Alewijnse        } else {
6156f7157c220d657d48406caf8e0d61904dfd7789Sander Alewijnse            return null;
6256f7157c220d657d48406caf8e0d61904dfd7789Sander Alewijnse        }
6356f7157c220d657d48406caf8e0d61904dfd7789Sander Alewijnse    }
6456f7157c220d657d48406caf8e0d61904dfd7789Sander Alewijnse
6556f7157c220d657d48406caf8e0d61904dfd7789Sander Alewijnse    public String getDeviceAdminPackageChecksumAsString() {
6648fdbe03c7cc39accada396a96acff09bdecb3b2Sander Alewijnse        return Base64.encodeToString(mDeviceAdminPackageChecksum,
6748fdbe03c7cc39accada396a96acff09bdecb3b2Sander Alewijnse                Base64.URL_SAFE | Base64.NO_PADDING | Base64.NO_WRAP);
6856f7157c220d657d48406caf8e0d61904dfd7789Sander Alewijnse    }
69d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse
70d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse    @Override
71d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse    public int describeContents() {
72d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse        return 0;
73d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse    }
74d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse
75d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse    @Override
76d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse    public void writeToParcel(Parcel out, int flags) {
77d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse        out.writeString(mTimeZone);
78d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse        out.writeLong(mLocalTime);
79d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse        out.writeSerializable(mLocale);
80d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse        out.writeString(mWifiSsid);
81d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse        out.writeInt(mWifiHidden ? 1 : 0);
82d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse        out.writeString(mWifiSecurityType);
83d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse        out.writeString(mWifiPassword);
84d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse        out.writeString(mWifiProxyHost);
85d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse        out.writeInt(mWifiProxyPort);
86d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse        out.writeString(mWifiProxyBypassHosts);
87d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse        out.writeString(mDeviceAdminPackageName);
8856f7157c220d657d48406caf8e0d61904dfd7789Sander Alewijnse        out.writeString(mDeviceAdminPackageDownloadLocation);
89d8dcb1f2cf3f537a6199671179470828f74236adSander Alewijnse        out.writeString(mDeviceAdminPackageDownloadCookieHeader);
9010c827bf3412da6803ff5cd662b5c827b72eb942Sander Alewijnse        out.writeInt(mDeviceAdminPackageChecksum.length);
9156f7157c220d657d48406caf8e0d61904dfd7789Sander Alewijnse        out.writeByteArray(mDeviceAdminPackageChecksum);
92f88f709f4a03da9451ea63a60fdb09f0ce972dd3Sander Alewijnse        out.writeParcelable(mAdminExtrasBundle, 0 /* default */);
938f9bd13b0d15d6fb1b6f27d28c94d37f8252a8cdSander Alewijnse        out.writeInt(mStartedByNfc ? 1 : 0);
94d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse    }
95d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse
96d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse    public static final Parcelable.Creator<ProvisioningParams> CREATOR
97d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse        = new Parcelable.Creator<ProvisioningParams>() {
98d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse        @Override
99d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse        public ProvisioningParams createFromParcel(Parcel in) {
100d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse            ProvisioningParams params = new ProvisioningParams();
101d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse            params.mTimeZone = in.readString();
102d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse            params.mLocalTime = in.readLong();
103d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse            params.mLocale = (Locale) in.readSerializable();
104d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse            params.mWifiSsid = in.readString();
1058f9bd13b0d15d6fb1b6f27d28c94d37f8252a8cdSander Alewijnse            params.mWifiHidden = in.readInt() == 1;
106d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse            params.mWifiSecurityType = in.readString();
107d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse            params.mWifiPassword = in.readString();
108d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse            params.mWifiProxyHost = in.readString();
109d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse            params.mWifiProxyPort = in.readInt();
110d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse            params.mWifiProxyBypassHosts = in.readString();
111d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse            params.mDeviceAdminPackageName = in.readString();
11256f7157c220d657d48406caf8e0d61904dfd7789Sander Alewijnse            params.mDeviceAdminPackageDownloadLocation = in.readString();
113d8dcb1f2cf3f537a6199671179470828f74236adSander Alewijnse            params.mDeviceAdminPackageDownloadCookieHeader = in.readString();
11410c827bf3412da6803ff5cd662b5c827b72eb942Sander Alewijnse            int checksumLength = in.readInt();
11510c827bf3412da6803ff5cd662b5c827b72eb942Sander Alewijnse            params.mDeviceAdminPackageChecksum = new byte[checksumLength];
11656f7157c220d657d48406caf8e0d61904dfd7789Sander Alewijnse            in.readByteArray(params.mDeviceAdminPackageChecksum);
117f88f709f4a03da9451ea63a60fdb09f0ce972dd3Sander Alewijnse            params.mAdminExtrasBundle = in.readParcelable(null /* use default classloader */);
1188f9bd13b0d15d6fb1b6f27d28c94d37f8252a8cdSander Alewijnse            params.mStartedByNfc = in.readInt() == 1;
119d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse            return params;
120d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse        }
121d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse
122d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse        @Override
123d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse        public ProvisioningParams[] newArray(int size) {
124d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse            return new ProvisioningParams[size];
125d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse        }
126d70438542632a1c8df15bdd9d91bfee52bf2b655Sander Alewijnse    };
127ed0883b8349832c510353310f48a47f316900a00Sander Alewijnse}
128