fixed handling of missing le in sm apdu
This commit is contained in:
@@ -397,8 +397,6 @@ class Security_Environment(object):
|
|||||||
p1 = CAPDU.p1
|
p1 = CAPDU.p1
|
||||||
if p2 == None:
|
if p2 == None:
|
||||||
p2 = CAPDU.p2
|
p2 = CAPDU.p2
|
||||||
if le == None:
|
|
||||||
le = CAPDU.le
|
|
||||||
# FIXME
|
# FIXME
|
||||||
#if expected != "":
|
#if expected != "":
|
||||||
#raise SwError(SW["ERR_SECMESSOBJECTSMISSING"])
|
#raise SwError(SW["ERR_SECMESSOBJECTSMISSING"])
|
||||||
|
|||||||
@@ -242,7 +242,10 @@ class Iso7816OS(SmartcardOS):
|
|||||||
if le > len(data):
|
if le > len(data):
|
||||||
sw = SW["WARN_EOFBEFORENEREAD"]
|
sw = SW["WARN_EOFBEFORENEREAD"]
|
||||||
|
|
||||||
result = data[:le]
|
if le != None:
|
||||||
|
result = data[:le]
|
||||||
|
else:
|
||||||
|
result = data[:0]
|
||||||
if sm:
|
if sm:
|
||||||
sw, result = self.SAM.protect_result(sw, result)
|
sw, result = self.SAM.protect_result(sw, result)
|
||||||
|
|
||||||
@@ -534,7 +537,10 @@ class NPAOS(Iso7816OS):
|
|||||||
if le > len(data) and le != MAX_EXTENDED_LE and le != MAX_SHORT_LE:
|
if le > len(data) and le != MAX_EXTENDED_LE and le != MAX_SHORT_LE:
|
||||||
sw = SW["WARN_EOFBEFORENEREAD"]
|
sw = SW["WARN_EOFBEFORENEREAD"]
|
||||||
|
|
||||||
result = data[:le]
|
if le != None:
|
||||||
|
result = data[:le]
|
||||||
|
else:
|
||||||
|
result = data[:0]
|
||||||
if sm:
|
if sm:
|
||||||
try:
|
try:
|
||||||
sw, result = self.SAM.protect_result(sw, result)
|
sw, result = self.SAM.protect_result(sw, result)
|
||||||
|
|||||||
Reference in New Issue
Block a user