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}