18ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis/* 28ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis * Copyright (C) 2016 The Android Open Source Project 38ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis * 48ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis * Licensed under the Apache License, Version 2.0 (the "License"); 58ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis * you may not use this file except in compliance with the License. 68ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis * You may obtain a copy of the License at 78ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis * 88ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis * http://www.apache.org/licenses/LICENSE-2.0 98ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis * 108ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis * Unless required by applicable law or agreed to in writing, software 118ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis * distributed under the License is distributed on an "AS IS" BASIS, 128ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis * See the License for the specific language governing permissions and 148ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis * limitations under the License. 158ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis */ 168ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis 178ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskispackage android.security.keymaster; 188ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis 198ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskisimport android.content.pm.Signature; 208ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskisimport android.os.Parcel; 218ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskisimport android.os.Parcelable; 228ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis 238ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis/** 248ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis * @hide 258ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis * This class constitutes and excerpt from the PackageManager's PackageInfo for the purpose of 268ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis * key attestation. It is part of the KeyAttestationApplicationId, which is used by 278ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis * keystore to identify the caller of the keystore API towards a remote party. 288ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis */ 298ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskispublic class KeyAttestationPackageInfo implements Parcelable { 308ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis private final String mPackageName; 318ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis private final int mPackageVersionCode; 328ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis private final Signature[] mPackageSignatures; 338ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis 348ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis /** 358ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis * @param mPackageName 368ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis * @param mPackageVersionCode 378ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis * @param mPackageSignatures 388ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis */ 398ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis public KeyAttestationPackageInfo( 408ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis String mPackageName, int mPackageVersionCode, Signature[] mPackageSignatures) { 418ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis super(); 428ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis this.mPackageName = mPackageName; 438ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis this.mPackageVersionCode = mPackageVersionCode; 448ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis this.mPackageSignatures = mPackageSignatures; 458ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis } 468ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis /** 478ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis * @return the mPackageName 488ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis */ 498ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis public String getPackageName() { 508ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis return mPackageName; 518ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis } 528ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis /** 538ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis * @return the mPackageVersionCode 548ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis */ 558ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis public int getPackageVersionCode() { 568ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis return mPackageVersionCode; 578ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis } 588ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis /** 598ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis * @return the mPackageSignatures 608ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis */ 618ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis public Signature[] getPackageSignatures() { 628ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis return mPackageSignatures; 638ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis } 648ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis 658ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis @Override 668ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis public int describeContents() { 678ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis return 0; 688ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis } 698ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis 708ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis @Override 718ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis public void writeToParcel(Parcel dest, int flags) { 728ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis dest.writeString(mPackageName); 738ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis dest.writeInt(mPackageVersionCode); 748ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis dest.writeTypedArray(mPackageSignatures, flags); 758ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis } 768ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis 778ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis public static final Parcelable.Creator<KeyAttestationPackageInfo> CREATOR 788ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis = new Parcelable.Creator<KeyAttestationPackageInfo>() { 798ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis @Override 808ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis public KeyAttestationPackageInfo createFromParcel(Parcel source) { 818ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis return new KeyAttestationPackageInfo(source); 828ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis } 838ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis 848ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis @Override 858ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis public KeyAttestationPackageInfo[] newArray(int size) { 868ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis return new KeyAttestationPackageInfo[size]; 878ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis } 888ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis }; 898ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis 908ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis private KeyAttestationPackageInfo(Parcel source) { 918ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis mPackageName = source.readString(); 928ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis mPackageVersionCode = source.readInt(); 938ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis mPackageSignatures = source.createTypedArray(Signature.CREATOR); 948ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis } 958ff1e193acc1d9946f877332547c7706cfcf12f4Janis Danisevskis} 96