stlinkv2.py now works with newer PyUSB
[gnuk/gnuk.git] / tool / gnuk_remove_keys_libusb.py
1 #! /usr/bin/python
2
3 """
4 gnuk_remove_keys_libusb.py - a tool to remove keys in Gnuk Token
5
6 Copyright (C) 2012 Free Software Initiative of Japan
7 Author: NIIBE Yutaka <gniibe@fsij.org>
8
9 This file is a part of Gnuk, a GnuPG USB Token implementation.
10
11 Gnuk is free software: you can redistribute it and/or modify it
12 under the terms of the GNU General Public License as published by
13 the Free Software Foundation, either version 3 of the License, or
14 (at your option) any later version.
15
16 Gnuk is distributed in the hope that it will be useful, but WITHOUT
17 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
18 or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
19 License for more details.
20
21 You should have received a copy of the GNU General Public License
22 along with this program.  If not, see <http://www.gnu.org/licenses/>.
23 """
24
25 import sys, os, string
26
27 from gnuk_token import *
28
29 # Assume only single CCID device is attached to computer and it's Gnuk Token
30
31 DEFAULT_PW3 = "12345678"
32 BY_ADMIN = 3
33
34 def main(passwd):
35     gnuk = None
36     for (dev, config, intf) in gnuk_devices():
37         try:
38             gnuk = gnuk_token(dev, config, intf)
39             print "Device: ", dev.filename
40             print "Configuration: ", config.value
41             print "Interface: ", intf.interfaceNumber
42             break
43         except:
44             pass
45     if gnuk.icc_get_status() == 2:
46         raise ValueError, "No ICC present"
47     elif gnuk.icc_get_status() == 1:
48         gnuk.icc_power_on()
49     gnuk.cmd_verify(BY_ADMIN, passwd)
50     gnuk.cmd_select_openpgp()
51     gnuk.cmd_put_data_remove(0x00, 0xc7) # FP_SIG
52     gnuk.cmd_put_data_remove(0x00, 0xce) # KGTIME_SIG
53     gnuk.cmd_put_data_key_import_remove(1)
54     gnuk.cmd_put_data_remove(0x00, 0xc8) # FP_DEC
55     gnuk.cmd_put_data_remove(0x00, 0xcf) # KGTIME_DEC
56     gnuk.cmd_put_data_key_import_remove(2)
57     gnuk.cmd_put_data_remove(0x00, 0xc9) # FP_AUT
58     gnuk.cmd_put_data_remove(0x00, 0xd0) # KGTIME_AUT
59     gnuk.cmd_put_data_key_import_remove(3)
60     gnuk.icc_power_off()
61     return 0
62
63
64 if __name__ == '__main__':
65     passwd = DEFAULT_PW3
66     if len(sys.argv) > 1 and sys.argv[1] == '-p':
67         from getpass import getpass
68         passwd = getpass("Admin password: ")
69         sys.argv.pop(1)
70     main(passwd)