PasskeyCredentialEntryFactory.kt

1.4 KB · raw

1package com.peachpasswords.passkeys23import android.app.PendingIntent4import android.content.Context5import android.graphics.drawable.Icon6import android.os.Build7import androidx.biometric.BiometricManager.Authenticators.BIOMETRIC_STRONG8import androidx.biometric.BiometricManager.Authenticators.DEVICE_CREDENTIAL9import androidx.credentials.provider.BeginGetPublicKeyCredentialOption10import androidx.credentials.provider.BiometricPromptData11import androidx.credentials.provider.PublicKeyCredentialEntry12import java.time.Instant1314internal object PasskeyCredentialEntryFactory {15    fun create(16        context: Context,17        username: String,18        displayName: String,19        lastUsedTime: Instant,20        pendingIntent: PendingIntent,21        option: BeginGetPublicKeyCredentialOption,22        icon: Icon,23    ): PublicKeyCredentialEntry {24        val builder = PublicKeyCredentialEntry.Builder(context, username, pendingIntent, option)25            .setDisplayName(displayName)26            .setLastUsedTime(lastUsedTime)27            .setIcon(icon)28            .setAutoSelectAllowed(false)29        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM) {30            builder.setBiometricPromptData(31                BiometricPromptData(32                    cryptoObject = null,33                    allowedAuthenticators = BIOMETRIC_STRONG or DEVICE_CREDENTIAL,34                ),35            )36        }37        return builder.build()38    }39}