From 6fb20b054909e50eb556cf10595e798609ee61a3 Mon Sep 17 00:00:00 2001 From: Frank Morgner Date: Wed, 5 Sep 2012 09:38:08 +0200 Subject: [PATCH] workaround for CAPDU's inability to handle le=0000 --- virtualsmartcard/src/vpicc/virtualsmartcard/SEutils.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/virtualsmartcard/src/vpicc/virtualsmartcard/SEutils.py b/virtualsmartcard/src/vpicc/virtualsmartcard/SEutils.py index 466f612..3a4790a 100644 --- a/virtualsmartcard/src/vpicc/virtualsmartcard/SEutils.py +++ b/virtualsmartcard/src/vpicc/virtualsmartcard/SEutils.py @@ -18,7 +18,7 @@ # from virtualsmartcard.TLVutils import pack, unpack, bertlv_pack from virtualsmartcard.ConstantDefinitions import CRT_TEMPLATE, ALGO_MAPPING, \ - SM_Class + SM_Class, MAX_EXTENDED_LE from virtualsmartcard.utils import inttostring, stringtoint, C_APDU from virtualsmartcard.SWutils import SwError, SW import virtualsmartcard.CryptoUtils as vsCrypto @@ -398,7 +398,10 @@ class Security_Environment(object): if isinstance(le, str): # FIXME C_APDU only handles le with strings of length 1. Better patch utils.py to support extended length apdus - le = stringtoint(le) + le_int = stringtoint(le) + if le_int == 0 and len(le) > 1: + le_int = MAX_EXTENDED_LE + le = le_int c = C_APDU(cla=cla, ins=ins, p1=p1, p2=p2, le=le, data="".join(return_data)) return c