diff --git a/virtualsmartcard/src/vpicc/virtualsmartcard/SmartcardFilesystem.py b/virtualsmartcard/src/vpicc/virtualsmartcard/SmartcardFilesystem.py index a21cc2f..935dd72 100644 --- a/virtualsmartcard/src/vpicc/virtualsmartcard/SmartcardFilesystem.py +++ b/virtualsmartcard/src/vpicc/virtualsmartcard/SmartcardFilesystem.py @@ -626,7 +626,7 @@ class MF(DF): fdm.append("%c\x00" % TAG["SHORTFID"]) if isinstance(file, TransparentStructureEF): - l = inttostring(len(file.data)) + l = inttostring(len(file.data), 2, True) fdm.append("%c%c%s" % (TAG["BYTES_EXCLUDINGSTRUCTURE"], chr(len(l)), l)) fdm.append("%c%c%s" % (TAG["BYTES_INCLUDINGSTRUCTURE"], @@ -643,9 +643,9 @@ class MF(DF): else: l += len(r.data) fdm.append("%c\x02%s" % (TAG["BYTES_EXCLUDINGSTRUCTURE"], - inttostring(l, 2))) + inttostring(l, 2, True))) fdm.append("%c\x02%s" % (TAG["BYTES_INCLUDINGSTRUCTURE"], - inttostring(l, 2))) + inttostring(l, 2, True))) l = len(records) fdm.append("%c\x06%c%c%c%c%s" % (TAG["FILEDISCRIPTORBYTE"], file.filedescriptor, file.datacoding, diff --git a/virtualsmartcard/src/vpicc/virtualsmartcard/utils.py b/virtualsmartcard/src/vpicc/virtualsmartcard/utils.py index e4b6394..f589e63 100644 --- a/virtualsmartcard/src/vpicc/virtualsmartcard/utils.py +++ b/virtualsmartcard/src/vpicc/virtualsmartcard/utils.py @@ -27,7 +27,7 @@ def stringtoint(str): return 0 -def inttostring(i, length=None): +def inttostring(i, length=None, len_extendable=False): str = "%x" % i if len(str) % 2 == 0: str = str.decode('hex') @@ -36,7 +36,7 @@ def inttostring(i, length=None): if length: l = len(str) - if l > length: + if l > length and not len_extendable: raise ValueError("i too big for the specified stringlength") else: str = chr(0)*(length-l) + str