Join us on the livestream at Android Dev Summit on 7-8 November 2018, starting at 10AM PDT!

SigningInfo

public final class SigningInfo
extends Object implements Parcelable

java.lang.Object
   ↳ android.content.pm.SigningInfo


Information pertaining to the signing certificates used to sign a package.

Summary

Inherited constants

Fields

public static final Creator<SigningInfo> CREATOR

Public constructors

SigningInfo()
SigningInfo(SigningInfo orig)

Public methods

int describeContents()

Describe the kinds of special objects contained in this Parcelable instance's marshaled representation.

Signature[] getApkContentsSigners()

Returns the signing certificates used to sign the APK contents of this application.

Signature[] getSigningCertificateHistory()

Returns the signing certificates this package has proven it is authorized to use.

boolean hasMultipleSigners()

Although relatively uncommon, packages may be signed by more than one signer, in which case their identity is viewed as being the set of all signers, not just any one.

boolean hasPastSigningCertificates()

APK Signature Scheme v3 enables packages to provide a proof-of-rotation record that the platform verifies, and uses, to allow the use of new signing certificates.

void writeToParcel(Parcel dest, int parcelableFlags)

Flatten this object in to a Parcel.

Inherited methods

Fields

CREATOR

added in API level 28
public static final Creator<SigningInfo> CREATOR

Public constructors

SigningInfo

added in API level 28
public SigningInfo ()

SigningInfo

added in API level 28
public SigningInfo (SigningInfo orig)

Parameters
orig SigningInfo

Public methods

describeContents

added in API level 28
public int describeContents ()

Describe the kinds of special objects contained in this Parcelable instance's marshaled representation. For example, if the object will include a file descriptor in the output of writeToParcel(Parcel, int), the return value of this method must include the CONTENTS_FILE_DESCRIPTOR bit.

Returns
int a bitmask indicating the set of special object types marshaled by this Parcelable object instance.

getApkContentsSigners

added in API level 28
public Signature[] getApkContentsSigners ()

Returns the signing certificates used to sign the APK contents of this application. Not including any past signing certificates the package proved it is authorized to use. This method should not be used unless hasMultipleSigners() returns true, indicating that getSigningCertificateHistory() cannot be used, otherwise getSigningCertificateHistory() should be preferred.

Returns
Signature[]

getSigningCertificateHistory

added in API level 28
public Signature[] getSigningCertificateHistory ()

Returns the signing certificates this package has proven it is authorized to use. This includes both the signing certificate associated with the signer of the package and the past signing certificates it included as its proof of signing certificate rotation. This method is the preferred replacement for the GET_SIGNATURES flag used with PackageManager.getPackageInfo(String, int). When determining if a package is signed by a desired certificate, the returned array should be checked to determine if it is one of the entries. This method returns null if the package is signed by multiple signing certificates, as opposed to being signed by one current signer and also providing the history of past signing certificates. hasMultipleSigners() may be used to determine if this package is signed by multiple signers. Packages which are signed by multiple signers cannot change their signing certificates and their Signature array should be checked to make sure that every entry matches the looked-for signing certificates.

Returns
Signature[]

hasMultipleSigners

added in API level 28
public boolean hasMultipleSigners ()

Although relatively uncommon, packages may be signed by more than one signer, in which case their identity is viewed as being the set of all signers, not just any one.

Returns
boolean

hasPastSigningCertificates

added in API level 28
public boolean hasPastSigningCertificates ()

APK Signature Scheme v3 enables packages to provide a proof-of-rotation record that the platform verifies, and uses, to allow the use of new signing certificates. This is only available to packages that are not signed by multiple signers. In the event of a change to a new signing certificate, the package's past signing certificates are presented as well. Any check of a package's signing certificate should also include a search through its entire signing history, since it could change to a new signing certificate at any time.

Returns
boolean

writeToParcel

added in API level 28
public void writeToParcel (Parcel dest, 
                int parcelableFlags)

Flatten this object in to a Parcel.

Parameters
dest Parcel: The Parcel in which the object should be written.

parcelableFlags int: Additional flags about how the object should be written. May be 0 or Parcelable.PARCELABLE_WRITE_RETURN_VALUE.