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}