CallingAppInfo


class CallingAppInfo


Information pertaining to the calling application.

Throws
kotlin.NullPointerException

If packageName or signingInfo is null

kotlin.IllegalArgumentException

If packageName is empty

Note : Credential providers are not expected to utilize the constructor in this class for any production flow. This constructor must only be used for testing purposes.

Summary

Public constructors

CallingAppInfo(
    packageName: String,
    signingInfo: SigningInfo,
    origin: String?
)

constructs an instance of CallingAppInfo

Public functions

String?
getOrigin(privilegedAllowlist: String)

Returns the origin of the calling app.

Boolean

Returns true if the origin is populated, and false otherwise.

Public properties

String

the calling package name of the calling app

SigningInfo

the signingInfo associated with the calling app

Public constructors

CallingAppInfo

Added in 1.2.0
CallingAppInfo(
    packageName: String,
    signingInfo: SigningInfo,
    origin: String? = null
)

constructs an instance of CallingAppInfo

Parameters
packageName: String

the calling package name of the calling app

signingInfo: SigningInfo

the signingInfo associated with the calling app

origin: String? = null

the origin of the calling app. This is only set when a privileged app like a browser, calls on behalf of another application.

Public functions

getOrigin

Added in 1.2.0
fun getOrigin(privilegedAllowlist: String): String?

Returns the origin of the calling app. This is only non-null if a privileged app like a browser calls Credential Manager APIs on behalf of another application.

Additionally, in order to get the origin, the credential provider must provide an allowlist of privileged browsers/apps that it trusts. This allowlist must be in the form of a valid, non-empty JSON. The origin will only be returned if the packageName and the SHA256 hash of the newest signature obtained from the signingInfo, is present in the privilegedAllowlist.

Packages that are signed with multiple signers will only receive the origin if all of the signatures are present in the privilegedAllowlist.

The format of this privilegedAllowlist JSON must adhere to the following sample.

{"apps": [
{
"type": "android",
"info": {
"package_name": "com.example.myapp",
"signatures" : [
{"build": "release",
"cert_fingerprint_sha256": "59:0D:2D:7B:33:6A:BD:FB:54:CD:3D:8B:36:8C:5C:3A:
7D:22:67:5A:9A:85:9A:6A:65:47:FD:4C:8A:7C:30:32"
},
{"build": "userdebug",
"cert_fingerprint_sha256": "59:0D:2D:7B:33:6A:BD:FB:54:CD:3D:8B:36:8C:5C:3A:7D:
22:67:5A:9A:85:9A:6A:65:47:FD:4C:8A:7C:30:32"
}]
}
}
]}

All keys in the JSON must be exactly as stated in the sample above. Note that if the build for a given fingerprint is specified as 'userdebug', that fingerprint will only be considered if the device is on a 'userdebug' build, as determined by Build.TYPE.

Throws
kotlin.IllegalArgumentException

If privilegedAllowlist is empty, or an invalid JSON, or does not follow the format detailed above

kotlin.IllegalStateException

If the origin is non-null, but the packageName and signingInfo do not have a match in the privilegedAllowlist

isOriginPopulated

Added in 1.2.0
fun isOriginPopulated(): Boolean

Returns true if the origin is populated, and false otherwise.

Note that the origin is only populated if a privileged app like a browser calls Credential Manager APIs on behalf of another application.

Public properties

packageName

Added in 1.2.0
val packageNameString

the calling package name of the calling app

signingInfo

Added in 1.2.0
val signingInfoSigningInfo

the signingInfo associated with the calling app