[Pcsclite-cvs-commit] r6772 - trunk/PCSC/UnitaryTests
ludovic.rousseau at free.fr
ludovic.rousseau at free.fr
Fri Oct 18 11:35:33 UTC 2013
Author: rousseau
Date: 2013-10-18 11:35:33 +0000 (Fri, 18 Oct 2013)
New Revision: 6772
Modified:
trunk/PCSC/UnitaryTests/FEATURE_CCID_ESC_COMMAND_Gemalto_features.py
Log:
Add more feature parsing
Modified: trunk/PCSC/UnitaryTests/FEATURE_CCID_ESC_COMMAND_Gemalto_features.py
===================================================================
--- trunk/PCSC/UnitaryTests/FEATURE_CCID_ESC_COMMAND_Gemalto_features.py 2013-10-17 13:02:41 UTC (rev 6771)
+++ trunk/PCSC/UnitaryTests/FEATURE_CCID_ESC_COMMAND_Gemalto_features.py 2013-10-18 11:35:33 UTC (rev 6772)
@@ -2,7 +2,7 @@
"""
# FEATURE_CCID_ESC_COMMAND.py: Unitary test for FEATURE_CCID_ESC_COMMAND
-# Copyright (C) 2011 Ludovic Rousseau
+# Copyright (C) 2011-2013 Ludovic Rousseau
"""
# This program is free software; you can redistribute it and/or modify
@@ -22,8 +22,18 @@
from smartcard.pcsc.PCSCPart10 import (SCARD_SHARE_DIRECT,
SCARD_LEAVE_CARD, FEATURE_CCID_ESC_COMMAND, getFeatureRequest, hasFeature)
from smartcard.Exceptions import SmartcardException
+from itertools import izip
+USBLangID = {0x0409: "English (United States)",
+ 0x040C: "French (Standard)",
+ 0x0425: "Estonian",
+ 0x0419: "Russian",
+ 0x0415: "Polish",
+ 0x0416: "Portuguese (Brazil)"
+ }
+
+
def test_bit(value, bit):
mask = 1 << bit
return value & mask == mask
@@ -57,32 +67,59 @@
print " b0 indicates if scrolling available:", test_bit(res[2], 0)
print "EntryValidationCondition:", res[3]
- print "VerifyPinStart:", test_bit(res[4], 0)
- print "VerifyPinFinish:", test_bit(res[4], 1)
- print "ModifyPinStart:", test_bit(res[4], 2)
- print "ModifyPinFinish:", test_bit(res[4], 3)
- print "GetKeyPressed:", test_bit(res[4], 4)
- print "VerifyPinDirect:", test_bit(res[4], 5)
- print "ModifyPinDirect:", test_bit(res[4], 6)
- print "Abort:", test_bit(res[4], 7)
+ print "PC/SCv2 features:"
+ print " VerifyPinStart:", test_bit(res[4], 0)
+ print " VerifyPinFinish:", test_bit(res[4], 1)
+ print " ModifyPinStart:", test_bit(res[4], 2)
+ print " ModifyPinFinish:", test_bit(res[4], 3)
+ print " GetKeyPressed:", test_bit(res[4], 4)
+ print " VerifyPinDirect:", test_bit(res[4], 5)
+ print " ModifyPinDirect:", test_bit(res[4], 6)
+ print " Abort:", test_bit(res[4], 7)
- print "GetKey:", test_bit(res[5], 0)
- print "WriteDisplay:", test_bit(res[5], 1)
- print "SetSpeMessage:", test_bit(res[5], 2)
+ print " GetKey:", test_bit(res[5], 0)
+ print " WriteDisplay:", test_bit(res[5], 1)
+ print " SetSpeMessage:", test_bit(res[5], 2)
# bits 3-7 are RFU
# bytes 6 and 7 are RFU
- print "bTimeOut2:", test_bit(res[8], 0)
- # bits 1-7 are RFU
+ print " bTimeOut2:", test_bit(res[8], 0)
+ bListSupportedLanguages = test_bit(res[8], 1)
+ print " bListSupportedLanguages:", bListSupportedLanguages
+ if bListSupportedLanguages:
+ try:
+ # Reader is able to indicate the list of supported languages
+ # through CCID-ESC 0x6B
+ languages = card_connection.control(ccid_esc_command, [0x6B])
+ except SmartcardException, ex:
+ print "Failed:", ex
+ print " ", languages
+ languages = iter(languages)
+ for low, high in izip(languages, languages):
+ lang_x = high * 256 + low
+ try:
+ lang_t = USBLangID[lang_x]
+ except KeyError:
+ lang_t = "unkonwn"
+ print " 0x%04X: %s" % (lang_x, lang_t)
+
+ print " bNumberMessageFix:", test_bit(res[8], 2)
+ print " bPPDUSupportOverXferBlock:", test_bit(res[8], 3)
+ print " bPPDUSupportOverEscape:", test_bit(res[8], 4)
+ # bits 5-7 are RFU
# bytes 9, 10 and 11 and RFU
print "VersionNumber:", res[12]
print "MinimumPINSize:", res[13]
print "MaximumPINSize:", res[14]
- print "Firewall:", test_bit(res[15], 0)
+ Firewall = test_bit(res[15], 0)
+ print "Firewall:", Firewall
# bits 1-7 are RFU
- # bytes 16-20 are RFU
+ if Firewall:
+ print "FirewalledCommand_SW1: 0x%02X" % res[16]
+ print "FirewalledCommand_SW2: 0x%02X" % res[17]
+ # bytes 18-20 are RFU
if __name__ == "__main__":
main()
More information about the Pcsclite-cvs-commit
mailing list