@@ -53,6 +53,8 @@ def parse_args(in_args):
5353 delete_parser .add_argument ('type' , choices = KEY_TYPES ,
5454 help = 'Key type to delete' )
5555
56+ deleteall_parser = subparsers .add_parser ('deleteall' , help = 'Delete all keys in a secure tag' )
57+
5658 # add generate command and args
5759 generate_parser = subparsers .add_parser ('generate' , help = 'Generate private key' )
5860 generate_parser .add_argument ('tag' , type = int ,
@@ -89,6 +91,15 @@ def exec_cmd(args, credstore):
8991 ct = CredType [args .type ]
9092 if credstore .delete (args .tag , ct ):
9193 print (f'{ ct .name } in secure tag { args .tag } deleted' )
94+ elif args .subcommand == 'deleteall' :
95+ creds = credstore .list (None , CredType .ANY )
96+ if not creds :
97+ raise RuntimeError (f'No keys found in secure tag { args .tag } ' )
98+ for c in creds :
99+ if c .tag in [4294967292 , 4294967293 , 4294967294 ]:
100+ continue # Skip reserved tags
101+ credstore .delete (c .tag , c .type )
102+ print (f'All credentials deleted.' )
92103 elif args .subcommand == 'generate' :
93104 credstore .keygen (args .tag , args .file , args .attributes )
94105 print (f'New private key generated in secure tag { args .tag } ' )
0 commit comments