• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2012 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.content.pm;
18 
19 import android.content.pm.ManifestDigest;
20 import android.net.Uri;
21 import android.os.Parcel;
22 import android.os.Parcelable;
23 
24 /**
25  * Represents verification parameters used to verify packages to be installed.
26  *
27  * @deprecated callers should migrate to {@link PackageInstaller}.
28  * @hide
29  */
30 @Deprecated
31 public class VerificationParams implements Parcelable {
32     /** A constant used to indicate that a uid value is not present. */
33     public static final int NO_UID = -1;
34 
35     /** What we print out first when toString() is called. */
36     private static final String TO_STRING_PREFIX = "VerificationParams{";
37 
38     /** The location of the supplementary verification file. */
39     private final Uri mVerificationURI;
40 
41     /** URI referencing where the package was downloaded from. */
42     private final Uri mOriginatingURI;
43 
44     /** HTTP referrer URI associated with the originatingURI. */
45     private final Uri mReferrer;
46 
47     /** UID of the application that the install request originated from. */
48     private final int mOriginatingUid;
49 
50     /** UID of application requesting the install */
51     private int mInstallerUid;
52 
53     /**
54      * An object that holds the digest of the package which can be used to
55      * verify ownership.
56      */
57     private final ManifestDigest mManifestDigest;
58 
59     /**
60      * Creates verification specifications for installing with application verification.
61      *
62      * @param verificationURI The location of the supplementary verification
63      *            file. This can be a 'file:' or a 'content:' URI. May be {@code null}.
64      * @param originatingURI URI referencing where the package was downloaded
65      *            from. May be {@code null}.
66      * @param referrer HTTP referrer URI associated with the originatingURI.
67      *            May be {@code null}.
68      * @param originatingUid UID of the application that the install request originated
69      *            from, or NO_UID if not present
70      * @param manifestDigest an object that holds the digest of the package
71      *            which can be used to verify ownership. May be {@code null}.
72      */
VerificationParams(Uri verificationURI, Uri originatingURI, Uri referrer, int originatingUid, ManifestDigest manifestDigest)73     public VerificationParams(Uri verificationURI, Uri originatingURI, Uri referrer,
74             int originatingUid, ManifestDigest manifestDigest) {
75         mVerificationURI = verificationURI;
76         mOriginatingURI = originatingURI;
77         mReferrer = referrer;
78         mOriginatingUid = originatingUid;
79         mManifestDigest = manifestDigest;
80         mInstallerUid = NO_UID;
81     }
82 
getVerificationURI()83     public Uri getVerificationURI() {
84         return mVerificationURI;
85     }
86 
getOriginatingURI()87     public Uri getOriginatingURI() {
88         return mOriginatingURI;
89     }
90 
getReferrer()91     public Uri getReferrer() {
92         return mReferrer;
93     }
94 
95     /** return NO_UID if not available */
getOriginatingUid()96     public int getOriginatingUid() {
97         return mOriginatingUid;
98     }
99 
getManifestDigest()100     public ManifestDigest getManifestDigest() {
101         return mManifestDigest;
102     }
103 
104     /** @return NO_UID when not set */
getInstallerUid()105     public int getInstallerUid() {
106         return mInstallerUid;
107     }
108 
setInstallerUid(int uid)109     public void setInstallerUid(int uid) {
110         mInstallerUid = uid;
111     }
112 
113     @Override
describeContents()114     public int describeContents() {
115         return 0;
116     }
117 
118     @Override
equals(Object o)119     public boolean equals(Object o) {
120         if (this == o) {
121             return true;
122         }
123 
124         if (!(o instanceof VerificationParams)) {
125             return false;
126         }
127 
128         final VerificationParams other = (VerificationParams) o;
129 
130         if (mVerificationURI == null) {
131             if (other.mVerificationURI != null) {
132                 return false;
133             }
134         } else if (!mVerificationURI.equals(other.mVerificationURI)) {
135             return false;
136         }
137 
138         if (mOriginatingURI == null) {
139             if (other.mOriginatingURI != null) {
140                 return false;
141             }
142         } else if (!mOriginatingURI.equals(other.mOriginatingURI)) {
143             return false;
144         }
145 
146         if (mReferrer == null) {
147             if (other.mReferrer != null) {
148                 return false;
149             }
150         } else if (!mReferrer.equals(other.mReferrer)) {
151             return false;
152         }
153 
154         if (mOriginatingUid != other.mOriginatingUid) {
155             return false;
156         }
157 
158         if (mManifestDigest == null) {
159             if (other.mManifestDigest != null) {
160                 return false;
161             }
162         } else if (!mManifestDigest.equals(other.mManifestDigest)) {
163             return false;
164         }
165 
166         if (mInstallerUid != other.mInstallerUid) {
167             return false;
168         }
169 
170         return true;
171     }
172 
173     @Override
hashCode()174     public int hashCode() {
175         int hash = 3;
176 
177         hash += 5 * (mVerificationURI == null ? 1 : mVerificationURI.hashCode());
178         hash += 7 * (mOriginatingURI == null ? 1 : mOriginatingURI.hashCode());
179         hash += 11 * (mReferrer == null ? 1 : mReferrer.hashCode());
180         hash += 13 * mOriginatingUid;
181         hash += 17 * (mManifestDigest == null ? 1 : mManifestDigest.hashCode());
182         hash += 19 * mInstallerUid;
183 
184         return hash;
185     }
186 
187     @Override
toString()188     public String toString() {
189         final StringBuilder sb = new StringBuilder(TO_STRING_PREFIX);
190 
191         sb.append("mVerificationURI=");
192         sb.append(mVerificationURI.toString());
193         sb.append(",mOriginatingURI=");
194         sb.append(mOriginatingURI.toString());
195         sb.append(",mReferrer=");
196         sb.append(mReferrer.toString());
197         sb.append(",mOriginatingUid=");
198         sb.append(mOriginatingUid);
199         sb.append(",mManifestDigest=");
200         sb.append(mManifestDigest.toString());
201         sb.append(",mInstallerUid=");
202         sb.append(mInstallerUid);
203         sb.append('}');
204 
205         return sb.toString();
206     }
207 
208     @Override
writeToParcel(Parcel dest, int flags)209     public void writeToParcel(Parcel dest, int flags) {
210         dest.writeParcelable(mVerificationURI, 0);
211         dest.writeParcelable(mOriginatingURI, 0);
212         dest.writeParcelable(mReferrer, 0);
213         dest.writeInt(mOriginatingUid);
214         dest.writeParcelable(mManifestDigest, 0);
215         dest.writeInt(mInstallerUid);
216     }
217 
218 
VerificationParams(Parcel source)219     private VerificationParams(Parcel source) {
220         mVerificationURI = source.readParcelable(Uri.class.getClassLoader());
221         mOriginatingURI = source.readParcelable(Uri.class.getClassLoader());
222         mReferrer = source.readParcelable(Uri.class.getClassLoader());
223         mOriginatingUid = source.readInt();
224         mManifestDigest = source.readParcelable(ManifestDigest.class.getClassLoader());
225         mInstallerUid = source.readInt();
226     }
227 
228     public static final Parcelable.Creator<VerificationParams> CREATOR =
229             new Parcelable.Creator<VerificationParams>() {
230         public VerificationParams createFromParcel(Parcel source) {
231                 return new VerificationParams(source);
232         }
233 
234         public VerificationParams[] newArray(int size) {
235             return new VerificationParams[size];
236         }
237     };
238 }
239