You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
trezor-firmware/core/src/apps/webauthn/remove_resident_credential.py

38 lines
1.1 KiB

from typing import TYPE_CHECKING
if TYPE_CHECKING:
from trezor.messages import WebAuthnRemoveResidentCredential, Success
from trezor.wire import Context
async def remove_resident_credential(
ctx: Context, msg: WebAuthnRemoveResidentCredential
) -> Success:
import storage.device
import storage.resident_credentials
from trezor import wire
from trezor.messages import Success
from trezor.ui.layouts.fido import confirm_fido
from .resident_credentials import get_resident_credential
if not storage.device.is_initialized():
raise wire.NotInitialized("Device is not initialized")
if msg.index is None:
raise wire.ProcessError("Missing credential index parameter.")
cred = get_resident_credential(msg.index)
if cred is None:
raise wire.ProcessError("Invalid credential index.")
await confirm_fido(
ctx,
"Remove credential",
cred.app_name(),
cred.icon_name(),
[cred.account_name()],
)
assert cred.index is not None
storage.resident_credentials.delete(cred.index)
return Success(message="Credential removed")