SigningInfo  |  API reference  |  Android Developers


public final class SigningInfo
extends Object implements Parcelable



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

Summary

Constants

int VERSION_JAR

JAR signing (v1 scheme).

int VERSION_SIGNING_BLOCK_V2

APK signature scheme v2.

int VERSION_SIGNING_BLOCK_V3

APK signature scheme v3.

int VERSION_SIGNING_BLOCK_V4

APK signature scheme v4.

Inherited constants

From interface android.os.Parcelable

int CONTENTS_FILE_DESCRIPTOR

Descriptor bit used with describeContents(): indicates that the Parcelable object's flattened representation includes a file descriptor.

int PARCELABLE_WRITE_RETURN_VALUE

Flag for use with writeToParcel(Parcel, int): the object being written is a return value, that is the result of a function such as "Parcelable someFunction()", "void someFunction(out Parcelable)", or "void someFunction(inout Parcelable)".

Fields

public static final Creator<SigningInfo> CREATOR

Public constructors

SigningInfo()
SigningInfo(SigningInfo orig)
SigningInfo(int schemeVersion, Collection<Signature> apkContentsSigners, Collection<PublicKey> publicKeys, Collection<Signature> signingCertificateHistory)

Creates a new instance of information used to sign the APK.

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.

Collection<PublicKey> getPublicKeys()

Returns the public keys for the signing certificates.

int getSchemeVersion()

Returns the version of signing schema used to sign the APK.

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.

boolean signersMatchExactly(SigningInfo other)

Returns true if the signing certificates in this and other match exactly.

void writeToParcel(Parcel dest, int parcelableFlags)

Flatten this object in to a Parcel.

Inherited methods

From class java.lang.Object

Object clone()

Creates and returns a copy of this object.

boolean equals(Object obj)

Indicates whether some other object is "equal to" this one.

void finalize()

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.

final Class<?> getClass()

Returns the runtime class of this Object.

int hashCode()

Returns a hash code value for the object.

final void notify()

Wakes up a single thread that is waiting on this object's monitor.

final void notifyAll()

Wakes up all threads that are waiting on this object's monitor.

String toString()

Returns a string representation of the object.

final void wait(long timeoutMillis, int nanos)

Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

final void wait(long timeoutMillis)

Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

final void wait()

Causes the current thread to wait until it is awakened, typically by being notified or interrupted.

From interface android.os.Parcelable

abstract int describeContents()

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

abstract void writeToParcel(Parcel dest, int flags)

Flatten this object in to a Parcel.

Constants

VERSION_JAR

public static final int VERSION_JAR

JAR signing (v1 scheme). See https://source.android.com/docs/security/features/apksigning#v1.

Constant Value: 1 (0x00000001)

VERSION_SIGNING_BLOCK_V2

public static final int VERSION_SIGNING_BLOCK_V2

APK signature scheme v2. See https://source.android.com/docs/security/features/apksigning/v2.

Constant Value: 2 (0x00000002)

VERSION_SIGNING_BLOCK_V3

public static final int VERSION_SIGNING_BLOCK_V3

APK signature scheme v3. See https://source.android.com/docs/security/features/apksigning/v3.

Constant Value: 3 (0x00000003)

VERSION_SIGNING_BLOCK_V4

public static final int VERSION_SIGNING_BLOCK_V4

APK signature scheme v4. See https://source.android.com/docs/security/features/apksigning/v4.

Constant Value: 4 (0x00000004)

Fields

Public constructors

SigningInfo

public SigningInfo ()

SigningInfo

public SigningInfo (SigningInfo orig)
Parameters
orig SigningInfo

SigningInfo

public SigningInfo (int schemeVersion, 
                Collection<Signature> apkContentsSigners, 
                Collection<PublicKey> publicKeys, 
                Collection<Signature> signingCertificateHistory)

Creates a new instance of information used to sign the APK.

Parameters
schemeVersion int: version of signing schema.
Value is one of the following:
    apkContentsSigners Collection: signing certificates.
    This value may be null.
    publicKeys Collection: for the signing certificates.
    This value may be null.
    signingCertificateHistory Collection: All signing certificates the package has proven it is authorized to use.
    This value may be null.

    Public methods

    describeContents

    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.
    Value is either 0 or

    getSchemeVersion

    public int getSchemeVersion ()

    Returns the version of signing schema used to sign the APK.

    Returns
    int Value is one of the following:

      getSigningCertificateHistory

      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. Signing certificates are returned in the order of rotation with the original signing certificate at index 0, and the current signing certificate at the last index. 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

      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

      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

      signersMatchExactly

      public boolean signersMatchExactly (SigningInfo other)

      Returns true if the signing certificates in this and other match exactly.

      Parameters
      other SigningInfo: This value cannot be null.
      Returns
      boolean

      writeToParcel

      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.
      This value cannot be null.
      parcelableFlags int: Additional flags about how the object should be written. May be 0 or Parcelable.PARCELABLE_WRITE_RETURN_VALUE.
      Value is either 0 or a combination of the following: