Added in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Constants](https://developer.android.com/reference/android/content/pm/SigningInfo#constants) \| [Inherited Constants](https://developer.android.com/reference/android/content/pm/SigningInfo#inhconstants) \| [Fields](https://developer.android.com/reference/android/content/pm/SigningInfo#lfields) \| [Ctors](https://developer.android.com/reference/android/content/pm/SigningInfo#pubctors) \| [Methods](https://developer.android.com/reference/android/content/pm/SigningInfo#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/content/pm/SigningInfo#inhmethods)

# SigningInfo

*** ** * ** ***

` public final class SigningInfo `   
` extends https://developer.android.com/reference/java/lang/Object ` ` implements https://developer.android.com/reference/android/os/Parcelable `

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.content.pm.SigningInfo |

<br />

*** ** * ** ***

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

## Summary

| ### Constants ||
|---|---|
| `int` | `https://developer.android.com/reference/android/content/pm/SigningInfo#VERSION_JAR` JAR signing (v1 scheme). |
| `int` | `https://developer.android.com/reference/android/content/pm/SigningInfo#VERSION_SIGNING_BLOCK_V2` APK signature scheme v2. |
| `int` | `https://developer.android.com/reference/android/content/pm/SigningInfo#VERSION_SIGNING_BLOCK_V3` APK signature scheme v3. |
| `int` | `https://developer.android.com/reference/android/content/pm/SigningInfo#VERSION_SIGNING_BLOCK_V4` APK signature scheme v4. |

### Inherited constants

From interface `https://developer.android.com/reference/android/os/Parcelable` `int` `https://developer.android.com/reference/android/os/Parcelable#CONTENTS_FILE_DESCRIPTOR`

Descriptor bit used with `https://developer.android.com/reference/android/os/Parcelable#describeContents()`: indicates that the Parcelable object's flattened representation includes a file descriptor.
`int` `https://developer.android.com/reference/android/os/Parcelable#PARCELABLE_WRITE_RETURN_VALUE`

Flag for use with `https://developer.android.com/reference/android/os/Parcelable#writeToParcel(android.os.Parcel,%20int)`: 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 https://developer.android.com/reference/android/os/Parcelable.Creator<https://developer.android.com/reference/android/content/pm/SigningInfo>` | `https://developer.android.com/reference/android/content/pm/SigningInfo#CREATOR` <br /> |

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/android/content/pm/SigningInfo#SigningInfo()() ` |
| ` https://developer.android.com/reference/android/content/pm/SigningInfo#SigningInfo(android.content.pm.SigningInfo)(https://developer.android.com/reference/android/content/pm/SigningInfo orig) ` |
| ` https://developer.android.com/reference/android/content/pm/SigningInfo#SigningInfo(int,%20java.util.Collection<android.content.pm.Signature>,%20java.util.Collection<java.security.PublicKey>,%20java.util.Collection<android.content.pm.Signature>)(int schemeVersion, https://developer.android.com/reference/java/util/Collection<https://developer.android.com/reference/android/content/pm/Signature> apkContentsSigners, https://developer.android.com/reference/java/util/Collection<https://developer.android.com/reference/java/security/PublicKey> publicKeys, https://developer.android.com/reference/java/util/Collection<https://developer.android.com/reference/android/content/pm/Signature> signingCertificateHistory) ` Creates a new instance of information used to sign the APK. |

| ### Public methods ||
|---|---|
| ` int` | ` https://developer.android.com/reference/android/content/pm/SigningInfo#describeContents()() ` Describe the kinds of special objects contained in this Parcelable instance's marshaled representation. |
| ` https://developer.android.com/reference/android/content/pm/Signature` | ` https://developer.android.com/reference/android/content/pm/SigningInfo#getApkContentsSigners()() ` Returns the signing certificates used to sign the APK contents of this application. |
| ` https://developer.android.com/reference/java/util/Collection<https://developer.android.com/reference/java/security/PublicKey>` | ` https://developer.android.com/reference/android/content/pm/SigningInfo#getPublicKeys()() ` Returns the public keys for the signing certificates. |
| ` int` | ` https://developer.android.com/reference/android/content/pm/SigningInfo#getSchemeVersion()() ` Returns the version of signing schema used to sign the APK. |
| ` https://developer.android.com/reference/android/content/pm/Signature` | ` https://developer.android.com/reference/android/content/pm/SigningInfo#getSigningCertificateHistory()() ` Returns the signing certificates this package has proven it is authorized to use. |
| ` boolean` | ` https://developer.android.com/reference/android/content/pm/SigningInfo#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` | ` https://developer.android.com/reference/android/content/pm/SigningInfo#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` | ` https://developer.android.com/reference/android/content/pm/SigningInfo#signersMatchExactly(android.content.pm.SigningInfo)(https://developer.android.com/reference/android/content/pm/SigningInfo other) ` Returns true if the signing certificates in this and other match exactly. |
| ` void` | ` https://developer.android.com/reference/android/content/pm/SigningInfo#writeToParcel(android.os.Parcel,%20int)(https://developer.android.com/reference/android/os/Parcel dest, int parcelableFlags) ` Flatten this object in to a Parcel. |

### Inherited methods

From class ` https://developer.android.com/reference/java/lang/Object ` ` https://developer.android.com/reference/java/lang/Object` ` https://developer.android.com/reference/java/lang/Object#clone()() `

Creates and returns a copy of this object.
` boolean` ` https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj) `

Indicates whether some other object is "equal to" this one.
` void` ` https://developer.android.com/reference/java/lang/Object#finalize()() `

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.
` final https://developer.android.com/reference/java/lang/Class<?>` ` https://developer.android.com/reference/java/lang/Object#getClass()() `

Returns the runtime class of this `Object`.
` int` ` https://developer.android.com/reference/java/lang/Object#hashCode()() `

Returns a hash code value for the object.
` final void` ` https://developer.android.com/reference/java/lang/Object#notify()() `

Wakes up a single thread that is waiting on this object's monitor.
` final void` ` https://developer.android.com/reference/java/lang/Object#notifyAll()() `

Wakes up all threads that are waiting on this object's monitor.
` https://developer.android.com/reference/java/lang/String` ` https://developer.android.com/reference/java/lang/Object#toString()() `

Returns a string representation of the object.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(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` ` https://developer.android.com/reference/java/lang/Object#wait(long)(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` ` https://developer.android.com/reference/java/lang/Object#wait()() `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*.
From interface ` https://developer.android.com/reference/android/os/Parcelable ` ` abstract int` ` https://developer.android.com/reference/android/os/Parcelable#describeContents()() `

Describe the kinds of special objects contained in this Parcelable instance's marshaled representation.
` abstract void` ` https://developer.android.com/reference/android/os/Parcelable#writeToParcel(android.os.Parcel,%20int)(https://developer.android.com/reference/android/os/Parcel dest, int flags) `

Flatten this object in to a Parcel.

## Constants

### VERSION_JAR

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int VERSION_JAR
```

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

<br />

Constant Value: 1 (0x00000001)

### VERSION_SIGNING_BLOCK_V2

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int VERSION_SIGNING_BLOCK_V2
```

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

<br />

Constant Value: 2 (0x00000002)

### VERSION_SIGNING_BLOCK_V3

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int VERSION_SIGNING_BLOCK_V3
```

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

<br />

Constant Value: 3 (0x00000003)

### VERSION_SIGNING_BLOCK_V4

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int VERSION_SIGNING_BLOCK_V4
```

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

<br />

Constant Value: 4 (0x00000004)

## Fields

### CREATOR

Added in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final Creator<SigningInfo> CREATOR
```

<br />

<br />

## Public constructors

### SigningInfo

Added in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SigningInfo ()
```

<br />

<br />

### SigningInfo

Added in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public SigningInfo (SigningInfo orig)
```

<br />

<br />

| Parameters ||
|---|---|
| `orig` | `SigningInfo` <br /> |

### SigningInfo

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

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

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

<br />

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

**See also:**

- [APK signing schemas](https://source.android.com/docs/security/features/apksigning#schemes)

## Public methods

### describeContents

Added in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
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 `https://developer.android.com/reference/android/os/Parcelable#writeToParcel(android.os.Parcel,%20int)`, the return value of this method must include the `https://developer.android.com/reference/android/os/Parcelable#CONTENTS_FILE_DESCRIPTOR` bit.

<br />

| Returns ||
|---|---|
| `int` | a bitmask indicating the set of special object types marshaled by this Parcelable object instance. Value is either `0` or - `https://developer.android.com/reference/android/os/Parcelable#CONTENTS_FILE_DESCRIPTOR` |

### getApkContentsSigners

Added in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
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 `https://developer.android.com/reference/android/content/pm/SigningInfo#hasMultipleSigners()` returns true, indicating that `https://developer.android.com/reference/android/content/pm/SigningInfo#getSigningCertificateHistory()` cannot be used, otherwise `https://developer.android.com/reference/android/content/pm/SigningInfo#getSigningCertificateHistory()` should be preferred.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/Signature` | <br /> |

### getPublicKeys

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Collection<PublicKey> getPublicKeys ()
```

Returns the public keys for the signing certificates.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/Collection<https://developer.android.com/reference/java/security/PublicKey>` | This value cannot be `null`. <br /> |

### getSchemeVersion

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int getSchemeVersion ()
```

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

<br />

| Returns ||
|---|---|
| `int` | Value is one of the following: |

**See also:**

- [APK signing schemas](https://source.android.com/docs/security/features/apksigning#schemes)

### getSigningCertificateHistory

Added in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
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 `https://developer.android.com/reference/android/content/pm/PackageManager#getPackageInfo(java.lang.String,%20int)`. 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. `https://developer.android.com/reference/android/content/pm/SigningInfo#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.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/content/pm/Signature` | <br /> |

### hasMultipleSigners

Added in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
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.

<br />

| Returns ||
|---|---|
| `boolean` | <br /> |

### hasPastSigningCertificates

Added in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
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.

<br />

| Returns ||
|---|---|
| `boolean` | <br /> |

### signersMatchExactly

Added in [API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean signersMatchExactly (SigningInfo other)
```

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

<br />

| Parameters ||
|---|---|
| `other` | `SigningInfo`: This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `boolean` | <br /> |

### writeToParcel

Added in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void writeToParcel (Parcel dest, 
                int parcelableFlags)
```

Flatten this object in to a Parcel.

<br />

| Parameters ||
|---|---|
| `dest` | `Parcel`: The Parcel in which the object should be written. This value cannot be `null`. <br /> |
| `parcelableFlags` | `int`: Additional flags about how the object should be written. May be 0 or `https://developer.android.com/reference/android/os/Parcelable#PARCELABLE_WRITE_RETURN_VALUE`. Value is either `0` or a combination of the following: - `https://developer.android.com/reference/android/os/Parcelable#PARCELABLE_WRITE_RETURN_VALUE` |