> For the complete documentation index, see [llms.txt](https://docs.vida.id/identity-stack/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.vida.id/identity-stack/authentication/authentication-factors/cryptographic-token-pki/integration-methods/sdk/android-development-kit/device-registration.md).

# Device Registration

The device registration workflow facilitates the secure registration of a device within the VIDA authentication credential services. The complete device registration workflow is depicted with the illustration in device registration section the documentatio&#x6E;*.*

**Obtaining the Credential ID**

The device registration process begins by obtaining an unbounded credential ID from the VIDA Auth Credential Services. Partner services can acquire this credential ID from VIDA Credential Services and transmit it to the mobile app using an Out-of-Band mechanism like device push.

**Registering the Device**

* To register the device with the VIDA Auth Credential Services, use the function `RegisterDevice(context: Context, credentialId: String, password: String)`.
* Successful registration will return 0, indicating a successful result. Once registered, you can start signing messages.
* The `password` parameter is optional, but if user presence is required for signing, a password must be provided.
* An asynchronous version of the function is available for calling from the UI thread.
* To check if registration was successful, use the function `IsRegistered(context: Context) -> Bool`.

**Determining User Presence Requirements**

* Partner mobile apps can query `HasSilentCredentials() -> Bool` or `HasPresenceCredentials() -> Bool` to determine if user presence is needed to sign messages.
