33from datetime import datetime
44from typing import Dict , Optional
55import json
6- import traceback
76
87from nitrokey .nk3 import NK3
98from nitrokey .nk3 .secrets_app import SecretsApp , SecretsAppException
@@ -664,7 +663,8 @@ def get_credential_backup(self) -> None:
664663 try :
665664 if credential .protected :
666665 pin = self .pin_cache .get (self .data )
667- secrets .verify_pin_raw (pin )
666+ if pin :
667+ secrets .verify_pin_raw (pin )
668668 pse = secrets .get_credential (credential .id )
669669 except SecretsAppException as e :
670670 self .trigger_exception (e )
@@ -673,8 +673,8 @@ def get_credential_backup(self) -> None:
673673 cred = credential .extend_with_password_safe_entry (pse )
674674 try :
675675 credential_list_serialized .append (cred .serialize_credential ())
676- except :
677- logger . warn ( "Serialization failed" )
676+ except SecretsAppException as e :
677+ self . trigger_exception ( e )
678678
679679 credential_list_formatted = json .dumps (credential_list_serialized , indent = 4 )
680680 self .credential_bkp .emit (credential_list_formatted )
@@ -709,15 +709,15 @@ def run(self) -> None:
709709 def check_credential_backup (self , existing_credentials : list [Credential ]) -> None :
710710 try :
711711 serialized_credential_list = json .loads (self .credential_backup )
712- except :
712+ except json . JSONDecodeError as e :
713713 self .trigger_error ('Error: Invalid backup file' )
714714 credential_list = []
715715 for serialized_credential in serialized_credential_list :
716716 try :
717717 credential = Credential .deserialize_credential (serialized_credential )
718718 credential_list .append (credential )
719- except Exception as e :
720- self .trigger_error ( 'Error: Invalid credential entry' )
719+ except SecretsAppException as e :
720+ self .trigger_exception ( e )
721721
722722 pin_required = False
723723 ids = {credential .id for credential in existing_credentials }
@@ -772,7 +772,7 @@ def add_credential(self, successful: bool = True) -> None:
772772 try :
773773 secrets .register (** reg_data ) # type: ignore [arg-type]
774774 except SecretsAppException as e :
775- self .trigger_error ( 'Addition failed' )
775+ self .trigger_exception ( e )
776776
777777 self .credential_restore .emit ()
778778
@@ -855,4 +855,4 @@ def backup_credential(self, data: DeviceData, pin_protected: bool) -> None:
855855 def restore_credential (self , data :DeviceData , backup_conent : str ) -> None :
856856 job = RestoreCredentialJob (self .common_ui , self .pin_cache , self .pin_ui , data , backup_conent )
857857 job .credential_restore .connect (self .credential_restore )
858- self .run (job )
858+ self .run (job )
0 commit comments