105ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root/* 205ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root * Copyright (C) 2011 The Android Open Source Project 305ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root * 405ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root * Licensed under the Apache License, Version 2.0 (the "License"); 505ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root * you may not use this file except in compliance with the License. 605ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root * You may obtain a copy of the License at 705ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root * 805ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root * http://www.apache.org/licenses/LICENSE-2.0 905ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root * 1005ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root * Unless required by applicable law or agreed to in writing, software 1105ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root * distributed under the License is distributed on an "AS IS" BASIS, 1205ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1305ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root * See the License for the specific language governing permissions and 1405ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root * limitations under the License. 1505ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root */ 1605ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root 1705ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Rootpackage android.content.pm; 1805ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root 1905ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Rootimport android.os.Parcel; 2005ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Rootimport android.os.Parcelable; 2105ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root 2205ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Rootimport java.security.PublicKey; 2305ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root 2405ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root/** 2505ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root * Contains information about a package verifier as used by 2605ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root * {@code PackageManagerService} during package verification. 2705ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root * 2805ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root * @hide 2905ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root */ 3005ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Rootpublic class VerifierInfo implements Parcelable { 3105ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root /** Package name of the verifier. */ 3205ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root public final String packageName; 3305ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root 3405ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root /** Signatures used to sign the package verifier's package. */ 3505ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root public final PublicKey publicKey; 3605ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root 3705ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root /** 3805ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root * Creates an object that represents a verifier info object. 3905ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root * 4005ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root * @param packageName the package name in Java-style. Must not be {@code 4105ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root * null} or empty. 4205ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root * @param publicKey the public key for the signer encoded in Base64. Must 4305ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root * not be {@code null} or empty. 4405ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root * @throws IllegalArgumentException if either argument is null or empty. 4505ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root */ 4605ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root public VerifierInfo(String packageName, PublicKey publicKey) { 4705ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root if (packageName == null || packageName.length() == 0) { 4805ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root throw new IllegalArgumentException("packageName must not be null or empty"); 4905ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root } else if (publicKey == null) { 5005ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root throw new IllegalArgumentException("publicKey must not be null"); 5105ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root } 5205ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root 5305ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root this.packageName = packageName; 5405ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root this.publicKey = publicKey; 5505ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root } 5605ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root 5705ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root private VerifierInfo(Parcel source) { 5805ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root packageName = source.readString(); 5905ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root publicKey = (PublicKey) source.readSerializable(); 6005ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root } 6105ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root 6205ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root @Override 6305ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root public int describeContents() { 6405ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root return 0; 6505ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root } 6605ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root 6705ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root @Override 6805ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root public void writeToParcel(Parcel dest, int flags) { 6905ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root dest.writeString(packageName); 7005ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root dest.writeSerializable(publicKey); 7105ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root } 7205ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root 7305ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root public static final Parcelable.Creator<VerifierInfo> CREATOR 7405ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root = new Parcelable.Creator<VerifierInfo>() { 7505ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root public VerifierInfo createFromParcel(Parcel source) { 7605ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root return new VerifierInfo(source); 7705ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root } 7805ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root 7905ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root public VerifierInfo[] newArray(int size) { 8005ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root return new VerifierInfo[size]; 8105ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root } 8205ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root }; 8305ca4c90644921df9193d92b2abdc81ef77e4a62Kenny Root}