package documentation

smartcard.util package

__author__ = "http://www.gemalto.com"

Copyright 2001-2012 gemalto Author: Jean-Daniel Aussel, mailto:jean-daniel.aussel@gemalto.com

This file is part of pyscard.

pyscard is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

pyscard is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with pyscard; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA

From __init__.py:

Function BinStringToHexList No summary
Function bs2hl An alias for BinStringToHexList
Function HexListToBinString No summary
Function hl2bs An alias for HexListToBinString
Function padd Padds a byte list with a constant byte value (default is x0FF)
Function toASCIIBytes Returns a list of ASCII bytes from a string.
Function toASCIIString Returns a string representing a list of ASCII bytes.
Function toBytes Returns a list of bytes from a byte string
Function toGSM3_38Bytes Returns a list of bytes from a string using GSM 3.38 conversion table.
Function toHexString Returns an hex string representing bytes
Constant COMMA Undocumented
Constant HEX Undocumented
Constant PACK Undocumented
Constant UPPERCASE Undocumented
Variable __dic_GSM_3_38__ Undocumented
PACK: int =

Undocumented

Value
1
HEX: int =

Undocumented

Value
2
UPPERCASE: int =

Undocumented

Value
4
COMMA: int =

Undocumented

Value
8
def padd(bytelist, length, padding='FF'):

Padds a byte list with a constant byte value (default is x0FF)

Parameters
bytelistthe byte list to padd
lengththe total length of the resulting byte list; no padding if length is smaller than the byte list length
paddingpadding value (default is 0xff)
Returns

the padded bytelist

>>> padd([59, 101, 0, 0, 156, 17, 1, 1, 3], 16)
[59, 101, 0, 0, 156, 17, 1, 1, 3, 255, 255, 255, 255, 255, 255, 255]
>>> padd([59, 101, 0, 0, 156, 17, 1, 1, 3], 12, '80')
[59, 101, 0, 0, 156, 17, 1, 1, 3, 128, 128, 128]
>>> padd([59, 101, 0, 0, 156, 17, 1, 1, 3], 8)
[59, 101, 0, 0, 156, 17, 1, 1, 3]
def toASCIIBytes(stringtoconvert):

Returns a list of ASCII bytes from a string.

Parameters
stringtoconvertthe string to convert into a byte list
Returns

a byte list of the ASCII codes of the string characters

toASCIIBytes() is the reverse of toASCIIString()

>>> toASCIIBytes("Number 101")
[78, 117, 109, 98, 101, 114, 32, 49, 48, 49]
def toASCIIString(bytelist):

Returns a string representing a list of ASCII bytes.

Parameters
bytelistlist of ASCII bytes to convert into a string
Returns

a string from the ASCII code list

toASCIIString() is the reverse of toASCIIBytes()

>>> toASCIIString([0x4E,0x75,0x6D,0x62,0x65,0x72,0x20,0x31,0x30,0x31])
'Number 101'
>>> toASCIIString([0x01, 0x20, 0x80, 0x7E, 0xF0])
". .~."
def toBytes(bytestring):

Returns a list of bytes from a byte string

bytestring: a byte string

>>> toBytes("3B 65 00 00 9C 11 01 01 03")
[59, 101, 0, 0, 156, 17, 1, 1, 3]
>>> toBytes("3B6500009C11010103")
[59, 101, 0, 0, 156, 17, 1, 1, 3]
>>> toBytes("3B6500   009C1101  0103")
[59, 101, 0, 0, 156, 17, 1, 1, 3]
__dic_GSM_3_38__: dict[str, int] =

Undocumented

def toGSM3_38Bytes(stringtoconvert):

Returns a list of bytes from a string using GSM 3.38 conversion table.

Parameters
stringtoconvertstring to convert
Returns

a list of bytes

>>> toGSM3_38Bytes("@ùPascal")
[0, 6, 80, 97, 115, 99, 97, 108]
def toHexString(bytes=[], format=0):

Returns an hex string representing bytes

Parameters
bytesa list of bytes to stringify, e.g. [59, 22, 148, 32, 2, 1, 0, 0, 13]
format

a logical OR of

  • COMMA: add a comma between bytes
  • HEX: add the 0x chars before bytes
  • UPPERCASE: use 0X before bytes (need HEX)
  • PACK: remove blanks
>>> vals = [0x3B, 0x65, 0x00, 0x00, 0x9C, 0x11, 0x01, 0x01, 0x03]
>>> toHexString(vals)
'3B 65 00 00 9C 11 01 01 03'
>>> toHexString(vals, COMMA)
'3B, 65, 00, 00, 9C, 11, 01, 01, 03'
>>> toHexString(vals, HEX)
'0x3B 0x65 0x00 0x00 0x9C 0x11 0x01 0x01 0x03'
>>> toHexString(vals, HEX | COMMA)
'0x3B, 0x65, 0x00, 0x00, 0x9C, 0x11, 0x01, 0x01, 0x03'
>>> toHexString(vals, PACK)
'3B6500009C11010103'
>>> toHexString(vals, HEX | UPPERCASE)
'0X3B 0X65 0X00 0X00 0X9C 0X11 0X01 0X01 0X03'
>>> toHexString(vals, HEX | UPPERCASE | COMMA)
'0X3B, 0X65, 0X00, 0X00, 0X9C, 0X11, 0X01, 0X01, 0X03'
def HexListToBinString(hexlist):
>>> HexListToBinString([78, 117, 109, 98, 101, 114, 32, 49, 48, 49])
'Number 101'
def BinStringToHexList(binstring):
>>> BinStringToHexList("Number 101")
[78, 117, 109, 98, 101, 114, 32, 49, 48, 49]
def hl2bs(hexlist):

An alias for HexListToBinString

>>> hl2bs([78, 117, 109, 98, 101, 114, 32, 49, 48, 49])
'Number 101'
def bs2hl(binstring):

An alias for BinStringToHexList

>>> bs2hl("Number 101")
[78, 117, 109, 98, 101, 114, 32, 49, 48, 49]