PasskeyCredentialEntryFactory.kt

1.5 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        requireCredentialManagerVerification: Boolean,24    ): PublicKeyCredentialEntry {25        val builder = PublicKeyCredentialEntry.Builder(context, username, pendingIntent, option)26            .setDisplayName(displayName)27            .setLastUsedTime(lastUsedTime)28            .setIcon(icon)29            .setAutoSelectAllowed(false)30        if (requireCredentialManagerVerification &&31            Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM32        ) {33            builder.setBiometricPromptData(34                BiometricPromptData(35                    cryptoObject = null,36                    allowedAuthenticators = BIOMETRIC_STRONG or DEVICE_CREDENTIAL,37                ),38            )39        }40        return builder.build()41    }42}