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}