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