Bug hunting and beautifying with pylint
git-svn-id: https://vsmartcard.svn.sourceforge.net/svnroot/vsmartcard@449 96b47cad-a561-4643-ad3b-153ac7d7599c
This commit is contained in:
@@ -16,13 +16,14 @@
|
||||
# You should have received a copy of the GNU General Public License along with
|
||||
# virtualsmartcard. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
import virtualsmartcard.SmartcardFilesystem, TLVutils
|
||||
import random, re, struct#, Crypto
|
||||
import hashlib
|
||||
from virtualsmartcard.SWutils import SwError, SW, SW_MESSAGES
|
||||
|
||||
import random, struct, hashlib
|
||||
from pickle import dumps, loads
|
||||
from virtualsmartcard.utils import inttostring, stringtoint, hexdump, C_APDU, R_APDU
|
||||
#from Crypto.Cipher import DES3
|
||||
|
||||
import SmartcardFilesystem, TLVutils
|
||||
import virtualsmartcard.CryptoUtils
|
||||
from virtualsmartcard.SWutils import SwError, SW
|
||||
from virtualsmartcard.utils import inttostring, stringtoint, hexdump, C_APDU
|
||||
from virtualsmartcard.ConstantDefinitions import *
|
||||
from virtualsmartcard.SEutils import ControlReferenceTemplate as CRT
|
||||
|
||||
@@ -60,7 +61,7 @@ class CardContainer:
|
||||
|
||||
def __init__(self, PIN=None, cardNumber=None, cardSecret=None):
|
||||
from os import urandom
|
||||
import virtualsmartcard.CryptoUtils
|
||||
from virtualsmartcard.CryptoUtils import get_cipher_keylen, cipher
|
||||
|
||||
self.cardNumber = cardNumber
|
||||
self.PIN = PIN
|
||||
@@ -71,7 +72,7 @@ class CardContainer:
|
||||
self.salt = None
|
||||
self.asym_key = None
|
||||
|
||||
keylen = virtualsmartcard.CryptoUtils.get_cipher_keylen(get_referenced_cipher(self.cipher))
|
||||
keylen = get_cipher_keylen(get_referenced_cipher(self.cipher))
|
||||
if cardSecret is None: #Generate a random card secret
|
||||
self.cardSecret = urandom(keylen)
|
||||
else:
|
||||
@@ -96,7 +97,7 @@ class CardContainer:
|
||||
"""
|
||||
Encrypt key and store it in the SAM
|
||||
"""
|
||||
crypted_key = virtualsmartcard.CryptoUtils.cipher(True,self.cipher,self.master_password,key)
|
||||
crypted_key = cipher(True, self.cipher, self.master_password, key)
|
||||
if self.FSkeys.has_key(path):
|
||||
print "Overwriting key for path %s" % path
|
||||
self.FSkeys[path] = crypted_key
|
||||
@@ -116,7 +117,7 @@ class CardContainer:
|
||||
@return: key if the key is in the container, otherwise None
|
||||
"""
|
||||
if(self.FSkeys.has_key(path)):
|
||||
plain_key = virtualsmartcard.CryptoUtils.cipher(False,self.cipher, self.master_password,self.FSkeys[path]) #TODO: Error checking:
|
||||
plain_key = cipher(False, self.cipher, self.master_password, self.FSkeys[path]) #TODO: Error checking:
|
||||
return plain_key
|
||||
else:
|
||||
return None
|
||||
@@ -368,7 +369,7 @@ class SAM(object):
|
||||
key = None
|
||||
|
||||
if key == None: #Try to read the key from the Key Container
|
||||
key = self.CardContainer.getKey(reference_data)
|
||||
key = self.CardContainer.getKey(p2)
|
||||
|
||||
if key != None:
|
||||
return key
|
||||
@@ -560,17 +561,15 @@ class Security_Environment(object):
|
||||
structure = TLVutils.unpack(config)
|
||||
for tag, length, value in structure:
|
||||
if tag == TEMPLATE_AT:
|
||||
self.at.parse_config(config)
|
||||
elif tag == TEMPLATE_CRT:
|
||||
self.crt.parse_config(config)
|
||||
self.at.parse_SE_config(config)
|
||||
elif tag == TEMPLATE_CCT:
|
||||
self.cct.parse_config(config)
|
||||
self.cct.parse_SE_config(config)
|
||||
elif tag == TEMPLATE_KAT:
|
||||
self.kat.parse_config(config)
|
||||
self.kat.parse_SE_config(config)
|
||||
elif tag == TEMPLATE_CT:
|
||||
self.ct.parse_config(config)
|
||||
self.ct.parse_SE_config(config)
|
||||
elif tag == TEMPLATE_DST:
|
||||
self.dst.parse_config(config)
|
||||
self.dst.parse_SE_config(config)
|
||||
else:
|
||||
raise ValueError
|
||||
|
||||
@@ -670,7 +669,7 @@ class Secure_Messaging(object):
|
||||
"""
|
||||
SEstr = self.SAM.get_key(SEID)
|
||||
SE = loads(SEstr)
|
||||
if isinstance(SE, SecurityEnvironment):
|
||||
if isinstance(SE, Security_Environment):
|
||||
self.current_SE = SE
|
||||
else:
|
||||
raise SwError(SW["ERR_REFNOTUSABLE"])
|
||||
@@ -773,19 +772,16 @@ class Secure_Messaging(object):
|
||||
auth = virtualsmartcard.CryptoUtils.append_padding("DES-CBC", to_authenticate)
|
||||
sw, checksum = self.compute_cryptographic_checksum(0x8E, 0x80, auth)
|
||||
if checksum != value:
|
||||
print "Failed to verify checksum!"
|
||||
raise SwError(SW["ERR_SECMESSOBJECTSINCORRECT"])
|
||||
elif tag == SM_Class["DIGITAL_SIGNATURE"]:
|
||||
auth = to_authenticate #FIXME: Need padding?
|
||||
sw, signature = self.compute_digital_signature(0x9E, 0x9A, auth)
|
||||
if signature != value:
|
||||
print "Failed to verify signature!"
|
||||
raise SwEroor(SW["ERR_SECMESSOBJECTSINCORRECT"])
|
||||
raise SwError(SW["ERR_SECMESSOBJECTSINCORRECT"])
|
||||
elif tag in (SM_Class["HASH_CODE"],SM_Class["HASH_CODE_ODD"]):
|
||||
sw, hash = self.hash(p1, p2, to_authenticate)
|
||||
if hash != value:
|
||||
print "Failed to verify hash!"
|
||||
raise SwEroor(SW["ERR_SECMESSOBJECTSINCORRECT"])
|
||||
raise SwError(SW["ERR_SECMESSOBJECTSINCORRECT"])
|
||||
|
||||
#Check if we just parsed a expected SM Object:
|
||||
pos = 0
|
||||
@@ -897,7 +893,7 @@ class Secure_Messaging(object):
|
||||
if p1 != 0x8E or p2 != 0x80:
|
||||
raise SwError(SW["ERR_INCORRECTP1P2"])
|
||||
if self.current_SE.cct.key == None:
|
||||
raise SwError(SE["ERR_CONDITIONNOTSATISFIED"])
|
||||
raise SwError(SW["ERR_CONDITIONNOTSATISFIED"])
|
||||
|
||||
checksum = virtualsmartcard.CryptoUtils.crypto_checksum(self.current_SE.cct.algorithm,
|
||||
self.current_SE.cct.key,
|
||||
@@ -917,7 +913,7 @@ class Secure_Messaging(object):
|
||||
if p1 != 0x9E or not p2 in (0x9A,0xAC,0xBC):
|
||||
raise SwError(SW["ERR_INCORRECTP1P2"])
|
||||
if self.current_SE.dst.key == None:
|
||||
raise SwError(SE["ERR_CONDITIONNOTSATISFIED"])
|
||||
raise SwError(SW["ERR_CONDITIONNOTSATISFIED"])
|
||||
|
||||
if p2 == 0x9A: #Data to be signed
|
||||
to_sign = data
|
||||
@@ -964,7 +960,7 @@ class Secure_Messaging(object):
|
||||
if algo == None or key == None:
|
||||
raise SwError(SW["ERR_CONDITIONNOTSATISFIED"])
|
||||
|
||||
structure = TLVutils.unpack(config)
|
||||
structure = TLVutils.unpack(data)
|
||||
for tag, length, value in structure:
|
||||
if tag == 0x80:
|
||||
plain = value
|
||||
@@ -991,7 +987,7 @@ class Secure_Messaging(object):
|
||||
if key == None:
|
||||
raise SwError(SW["ERR_CONDITIONNOTSATISFIED"])
|
||||
|
||||
structure = TLVutils.unpack(config)
|
||||
structure = TLVutils.unpack(data)
|
||||
for tag, length, value in structure:
|
||||
if tag == 0x9E:
|
||||
signature = value
|
||||
|
||||
Reference in New Issue
Block a user