shell: Fix activate_file + deactivate_file commands
We cannot re-activate a deactivated file after we have selected somethng
else, as SELECT will fail on the deactivated file. Hence, the
deactivate_file command needs to be used with a file name as argument.
Change-Id: Ief4d2bf8ea90497a8f25d1986aeea935c615f9bb
diff --git a/pySim/commands.py b/pySim/commands.py
index 4640fe1..1fbea16 100644
--- a/pySim/commands.py
+++ b/pySim/commands.py
@@ -367,9 +367,9 @@
"""Execute DECATIVATE FILE command as per TS 102 221 Section 11.1.14."""
return self._tp.send_apdu_constr_checksw(self.cla_byte, '04', '00', '00', None, None, None)
- def activate_file(self):
+ def activate_file(self, fid):
"""Execute ACTIVATE FILE command as per TS 102 221 Section 11.1.15."""
- return self._tp.send_apdu_constr_checksw(self.cla_byte, '44', '00', '00', None, None, None)
+ return self._tp.send_apdu_checksw(self.cla_byte + '44000002' + fid)
def manage_channel(self, mode='open', lchan_nr=0):
"""Execute MANAGE CHANNEL command as per TS 102 221 Section 11.1.17."""
diff --git a/pySim/filesystem.py b/pySim/filesystem.py
index aaf333b..8c45ba1 100644
--- a/pySim/filesystem.py
+++ b/pySim/filesystem.py
@@ -1150,6 +1150,13 @@
(data, sw) = self.card._scc.status()
return self.selected_file.decode_select_response(data)
+ def activate_file(self, name:str):
+ """Request ACTIVATE FILE of specified file."""
+ sels = self.selected_file.get_selectables()
+ f = sels[name]
+ data, sw = self.card._scc.activate_file(f.fid)
+ return data, sw
+
def read_binary(self, length:int=None, offset:int=0):
"""Read [part of] a transparent EF binary data.