# MasterKey.Builder

Artifact: [androidx.security:security-crypto](https://developer.android.com/jetpack/androidx/releases/security) [View Source](https://cs.android.com/search?q=file:androidx/security/crypto/MasterKey.java+class:androidx.security.crypto.MasterKey.Builder) Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/security#1.1.0) Deprecated in [1.1.0](https://developer.android.com/jetpack/androidx/releases/security#1.1.0)

*** ** * ** ***


```
class MasterKey.Builder
```

<br />

*** ** * ** ***

> [!CAUTION]
> **This class is deprecated.**   
>
> Use `https://docs.oracle.com/javase/8/docs/api/javax/crypto/KeyGenerator.html` with AndroidKeyStore instance instead.

Builder for generating a `https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey`.

## Summary

| ### Public constructors |
|---|
| `[Builder](https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder#Builder(android.content.Context))(context: https://developer.android.com/reference/android/content/Context.html)` **This function is deprecated.** Deprecated in Java |
| `[Builder](https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder#Builder(android.content.Context,java.lang.String))(context: https://developer.android.com/reference/android/content/Context.html, keyAlias: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)` **This function is deprecated.** Deprecated in Java |

| ### Public functions |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey` | `[build](https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder#build())()` **This function is deprecated.** Deprecated in Java |
| `https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder` | `@https://developer.android.com/reference/kotlin/androidx/annotation/RequiresApi(value = https://developer.android.com/reference/android/os/Build.VERSION_CODES.html#M) [setKeyGenParameterSpec](https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder#setKeyGenParameterSpec(android.security.keystore.KeyGenParameterSpec))(keyGenParameterSpec: https://developer.android.com/reference/android/security/keystore/KeyGenParameterSpec.html)` **This function is deprecated.** Deprecated in Java |
| `https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder` | `[setKeyScheme](https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder#setKeyScheme(androidx.security.crypto.MasterKey.KeyScheme))(keyScheme: https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.KeyScheme)` **This function is deprecated.** Deprecated in Java |
| `https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder` | `[setRequestStrongBoxBacked](https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder#setRequestStrongBoxBacked(boolean))(requestStrongBoxBacked: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)` **This function is deprecated.** Deprecated in Java |
| `https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder` | `[setUserAuthenticationRequired](https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder#setUserAuthenticationRequired(boolean))(authenticationRequired: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)` **This function is deprecated.** Deprecated in Java |
| `https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder` | `[setUserAuthenticationRequired](https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder#setUserAuthenticationRequired(boolean,int))( authenticationRequired: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html, userAuthenticationValidityDurationSeconds: @https://developer.android.com/reference/kotlin/androidx/annotation/IntRange(from = 1) https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html )` **This function is deprecated.** Deprecated in Java |

## Public constructors

### Builder

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/security#1.1.0) Deprecated in [1.1.0](https://developer.android.com/jetpack/androidx/releases/security#1.1.0)

```
[Builder](https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder#Builder(android.content.Context))(context: Context)
```

> [!CAUTION]
> **This function is deprecated.**   
> Deprecated in Java

Creates a builder for a `https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey` using the default alias of `https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey#DEFAULT_MASTER_KEY_ALIAS()`.

| Parameters |
|---|---|
| `context: https://developer.android.com/reference/android/content/Context.html` | The context to use with this master key. |

### Builder

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/security#1.1.0) Deprecated in [1.1.0](https://developer.android.com/jetpack/androidx/releases/security#1.1.0)

```
[Builder](https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder#Builder(android.content.Context,java.lang.String))(context: Context, keyAlias: String)
```

> [!CAUTION]
> **This function is deprecated.**   
> Deprecated in Java

Creates a builder for a `https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey`.

| Parameters |
|---|---|
| `context: https://developer.android.com/reference/android/content/Context.html` | The context to use with this master key. |

## Public functions

### build

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/security#1.1.0) Deprecated in [1.1.0](https://developer.android.com/jetpack/androidx/releases/security#1.1.0)

```
fun [build](https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder#build())(): MasterKey
```

> [!CAUTION]
> **This function is deprecated.**   
> Deprecated in Java

Builds a `https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey` from this builder.

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey` | The master key. |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/security/GeneralSecurityException.html` |   |
| `https://developer.android.com/reference/java/io/IOException.html` |   |

### setKeyGenParameterSpec

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/security#1.1.0) Deprecated in [1.1.0](https://developer.android.com/jetpack/androidx/releases/security#1.1.0)

```
@RequiresApi(value = Build.VERSION_CODES.M)
fun [setKeyGenParameterSpec](https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder#setKeyGenParameterSpec(android.security.keystore.KeyGenParameterSpec))(keyGenParameterSpec: KeyGenParameterSpec): MasterKey.Builder
```

> [!CAUTION]
> **This function is deprecated.**   
> Deprecated in Java

Sets a custom `https://developer.android.com/reference/android/security/keystore/KeyGenParameterSpec.html` to use as the basis of the master key. NOTE: Either this method OR `https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder#setKeyScheme(androidx.security.crypto.MasterKey.KeyScheme)` should be used to set the parameters to use for building the master key. Calling either function after the other will throw an `https://developer.android.com/reference/java/lang/IllegalArgumentException.html`.

| Parameters |
|---|---|
| `keyGenParameterSpec: https://developer.android.com/reference/android/security/keystore/KeyGenParameterSpec.html` | The key spec to use. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder` | This builder. |

### setKeyScheme

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/security#1.1.0) Deprecated in [1.1.0](https://developer.android.com/jetpack/androidx/releases/security#1.1.0)

```
fun [setKeyScheme](https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder#setKeyScheme(androidx.security.crypto.MasterKey.KeyScheme))(keyScheme: MasterKey.KeyScheme): MasterKey.Builder
```

> [!CAUTION]
> **This function is deprecated.**   
> Deprecated in Java

Sets a `https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.KeyScheme` to be used for the master key.

This uses a default `https://developer.android.com/reference/android/security/keystore/KeyGenParameterSpec.html` associated with the provided `KeyScheme`.

NOTE: Either this method OR `https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder#setKeyGenParameterSpec(android.security.keystore.KeyGenParameterSpec)` should be used to set the parameters to use for building the master key. Calling either function after the other will throw an `https://developer.android.com/reference/java/lang/IllegalArgumentException.html`.

| Parameters |
|---|---|
| `keyScheme: https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.KeyScheme` | The KeyScheme to use. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder` | This builder. |

### setRequestStrongBoxBacked

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/security#1.1.0) Deprecated in [1.1.0](https://developer.android.com/jetpack/androidx/releases/security#1.1.0)

```
fun [setRequestStrongBoxBacked](https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder#setRequestStrongBoxBacked(boolean))(requestStrongBoxBacked: Boolean): MasterKey.Builder
```

> [!CAUTION]
> **This function is deprecated.**   
> Deprecated in Java

Sets whether or not to request this key is strong box backed. This setting is only applicable on `https://developer.android.com/reference/android/os/Build.VERSION_CODES.html#P` and above, and only on devices that support Strongbox.

| Parameters |
|---|---|
| `requestStrongBoxBacked: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | Whether to request to use strongbox |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder` | This builder. |

### setUserAuthenticationRequired

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/security#1.1.0) Deprecated in [1.1.0](https://developer.android.com/jetpack/androidx/releases/security#1.1.0)

```
fun [setUserAuthenticationRequired](https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder#setUserAuthenticationRequired(boolean))(authenticationRequired: Boolean): MasterKey.Builder
```

> [!CAUTION]
> **This function is deprecated.**   
> Deprecated in Java

When used with `https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder#setKeyScheme(androidx.security.crypto.MasterKey.KeyScheme)`, sets that the built master key should require the user to authenticate before it's unlocked, probably using the androidx.biometric library.

This method sets the validity duration of the key to `https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey#getDefaultAuthenticationValidityDurationSeconds()`.

| Parameters |
|---|---|
| `authenticationRequired: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | Whether user authentication should be required to use the key. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder` | This builder. |

### setUserAuthenticationRequired

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/security#1.1.0) Deprecated in [1.1.0](https://developer.android.com/jetpack/androidx/releases/security#1.1.0)

```
fun [setUserAuthenticationRequired](https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder#setUserAuthenticationRequired(boolean,int))(
    authenticationRequired: Boolean,
    userAuthenticationValidityDurationSeconds: @IntRange(from = 1) Int
): MasterKey.Builder
```

> [!CAUTION]
> **This function is deprecated.**   
> Deprecated in Java

When used with `https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder#setKeyScheme(androidx.security.crypto.MasterKey.KeyScheme)`, sets that the built master key should require the user to authenticate before it's unlocked, probably using the androidx.biometric library, and that the key should remain unlocked for the provided duration.

| Parameters |
|---|---|
| `authenticationRequired: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | Whether user authentication should be required to use the key. |
| `userAuthenticationValidityDurationSeconds: @https://developer.android.com/reference/kotlin/androidx/annotation/IntRange(from = 1) https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | Duration in seconds that the key should remain unlocked following user authentication. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/security/crypto/MasterKey.Builder` | This builder. |