File: guid.py

package info (click to toggle)
pyscard 1.6.10-2
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 1,360 kB
  • ctags: 1,516
  • sloc: python: 6,387; ansic: 2,065; makefile: 2
file content (54 lines) | stat: -rw-r--r-- 1,906 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
"""smartcard.guid

Utility functions to handle GUIDs as strings or list of bytes

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

Copyright 2001-2010 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 struct import unpack

# guid is ulong+ushort+ushort+uchar[8]; we need a map because bytes
# are swappted for the first three
map={ 0:3, 1:2, 2:1, 3:0, 4:5, 5:4, 6:7, 7:6, 8:8, 9:9, 10:10, 11:11, 12:12, 13:13, 14:14, 15:15 }

def strToGUID( s ):
    """Converts a GUID string into a list of bytes."""
    l=[]
    for i in unpack( 'x' + '2s'*4 + 'x' + '2s2sx'*3 + '2s'*6 + 'x', s ):
        l += [ int( i, 16) ]
    zr=[]
    for i in xrange(len(l)):
        zr.append(l[map[i]])
    return zr

def GUIDToStr( g ):
    """Converts a GUID sequence of bytes into a string."""
    zr=[]
    for i in xrange(len(g)):
        zr.append(g[map[i]])
    return "{%2X%2X%2X%2X-%2X%2X-%2X%2X-%2X%2X-%2X%2X%2X%2X%2X%2X}" % tuple(zr)

if __name__ == "__main__":
    """Small sample illustrating the use of guid.py."""
    import smartcard.guid
    dummycardguid1 = strToGUID('{AD4F1667-EA75-4124-84D4-641B3B197C65}')
    print dummycardguid1
    print GUIDToStr(dummycardguid1)