From 254742bc6d62ca3ab71165047590fe1b7b4fb697 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Tue, 4 Aug 2015 11:57:46 +0900 Subject: [PATCH] more change for Python --- tool/gnuk_put_binary_libusb.py | 10 ++++------ tool/gnuk_remove_keys_libusb.py | 2 +- tool/gnuk_token.py | 10 +++++----- tool/gnuk_upgrade.py | 12 +++--------- tool/rsa.py | 8 ++++---- tool/upgrade_by_passwd.py | 2 +- tool/usb_strings.py | 4 ++-- 7 files changed, 20 insertions(+), 28 deletions(-) diff --git a/tool/gnuk_put_binary_libusb.py b/tool/gnuk_put_binary_libusb.py index 3c64439..d391666 100755 --- a/tool/gnuk_put_binary_libusb.py +++ b/tool/gnuk_put_binary_libusb.py @@ -24,7 +24,7 @@ along with this program. If not, see . """ from struct import * -import sys, time, os, binascii, string +import sys, time, os, binascii from gnuk_token import * # INPUT: binary file @@ -54,10 +54,8 @@ def main(fileid, is_update, data, passwd): gnuk.cmd_select_openpgp() if fileid == 0: data_in_device = gnuk.cmd_get_data(0x00, 0x4f) - for d in data_in_device: - print("%02x" % d, end=' ') - print() - compare(data + b'\x00\x00', data_in_device[8:]) + print(' '.join([ "%02x" % d for d in data_in_device ])) + compare(data + b'\x00\x00', data_in_device[8:].tostring()) elif fileid >= 1 and fileid <= 4: data_in_device = gnuk.cmd_read_binary(fileid) compare(data, data_in_device) @@ -85,7 +83,7 @@ if __name__ == '__main__': email = os.environ['EMAIL'] serial_data_hex = None for line in f.readlines(): - field = string.split(line) + field = str.split(line) if field[0] == email: serial_data_hex = field[1].replace(':','') f.close() diff --git a/tool/gnuk_remove_keys_libusb.py b/tool/gnuk_remove_keys_libusb.py index 956bd39..0d6a501 100755 --- a/tool/gnuk_remove_keys_libusb.py +++ b/tool/gnuk_remove_keys_libusb.py @@ -22,7 +22,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . """ -import sys, os, string +import sys, os from gnuk_token import * diff --git a/tool/gnuk_token.py b/tool/gnuk_token.py index 3d0553e..e739a1b 100644 --- a/tool/gnuk_token.py +++ b/tool/gnuk_token.py @@ -22,7 +22,7 @@ along with this program. If not, see . """ from struct import * -import string, binascii +import binascii import usb, time from array import array @@ -294,7 +294,7 @@ class gnuk_token(object): cmd_data = iso7816_compose(0xa4, 0x04, 0x0c, b"\xD2\x76\x00\x01\x24\x01") sw = self.icc_send_cmd(cmd_data) if len(sw) != 2: - raise ValueError, sw + raise ValueError(sw) if not (sw[0] == 0x90 and sw[1] == 0x00): raise ValueError("%02x%02x" % (sw[0], sw[1])) return True @@ -303,7 +303,7 @@ class gnuk_token(object): cmd_data = iso7816_compose(0xca, tagh, tagl, b"") sw = self.icc_send_cmd(cmd_data) if len(sw) != 2: - raise ValueError, sw + raise ValueError(sw) if sw[0] == 0x90 and sw[1] == 0x00: return array('B') elif sw[0] != 0x61: @@ -427,7 +427,7 @@ class gnuk_token(object): cmd_data = iso7816_compose(0xda, tagh, tagl, b"") sw = self.icc_send_cmd(cmd_data) if sw[0] != 0x90 and sw[1] != 0x00: - raise ValueError, ("%02x%02x" % (sw[0], sw[1])) + raise ValueError("%02x%02x" % (sw[0], sw[1])) def cmd_put_data_key_import_remove(self, keyno): if keyno == 1: @@ -439,7 +439,7 @@ class gnuk_token(object): cmd_data = iso7816_compose(0xdb, 0x3f, 0xff, b"\x4d\x02" + keyspec) sw = self.icc_send_cmd(cmd_data) if sw[0] != 0x90 and sw[1] != 0x00: - raise ValueError, ("%02x%02x" % (sw[0], sw[1])) + raise ValueError("%02x%02x" % (sw[0], sw[1])) def cmd_get_challenge(self): cmd_data = iso7816_compose(0x84, 0x00, 0x00, '') diff --git a/tool/gnuk_upgrade.py b/tool/gnuk_upgrade.py index efdd307..09d9e23 100755 --- a/tool/gnuk_upgrade.py +++ b/tool/gnuk_upgrade.py @@ -23,7 +23,7 @@ along with this program. If not, see . """ from struct import * -import sys, time, os, binascii, string +import sys, time, os, binascii # INPUT: binary files (regnual_image, upgrade_firmware_image) @@ -33,12 +33,6 @@ import usb from gnuk_token import * -def to_string(t): - result = "" - for c in t: - result += chr(c) - return result - from subprocess import check_output SHA256_OID_PREFIX="3031300d060960864801650304020105000420" @@ -97,8 +91,8 @@ def main(keyno,keygrip, data_regnual, data_upgrade): elif icc.icc_get_status() == 1: icc.icc_power_on() icc.cmd_select_openpgp() - challenge = icc.cmd_get_challenge() - signed = gpg_sign(keygrip, binascii.hexlify(to_string(challenge))) + challenge = icc.cmd_get_challenge().tostring() + signed = gpg_sign(keygrip, binascii.hexlify(challenge)) icc.cmd_external_authenticate(keyno, signed) icc.stop_gnuk() mem_info = icc.mem_info() diff --git a/tool/rsa.py b/tool/rsa.py index 00371f9..418f6f8 100644 --- a/tool/rsa.py +++ b/tool/rsa.py @@ -1,5 +1,4 @@ from binascii import hexlify, unhexlify -import string from os import urandom def read_key_from_file(file): @@ -35,8 +34,9 @@ def modinv(a, m): return x % m def pkcs1_pad_for_sign(digestinfo): - byte_repr = '\x00' + '\x01' + string.ljust('', 256 - 19 - 32 - 3, '\xff') \ - + '\x00' + digestinfo + byte_repr = b'\x00' + b'\x01' \ + + bytes.ljust(b'', 256 - 19 - 32 - 3, b'\xff') \ + + b'\x00' + digestinfo return int(hexlify(byte_repr), 16) def compute_signature(key, digestinfo): @@ -64,7 +64,7 @@ def integer_to_bytes_256(i): s = s.rstrip('L') if len(s) & 1: s = '0' + s - return string.rjust(unhexlify(s), 256, '\x00') + return bytes.rjust(unhexlify(s), 256, b'\x00') def get_raw_pubkey(key): return key[0] diff --git a/tool/upgrade_by_passwd.py b/tool/upgrade_by_passwd.py index 30c17d5..3992f9c 100755 --- a/tool/upgrade_by_passwd.py +++ b/tool/upgrade_by_passwd.py @@ -48,7 +48,7 @@ def main(keyno, passwd, data_regnual, data_upgrade): gnuk.cmd_write_binary(1+keyno, rsa_raw_pubkey, False) gnuk.cmd_select_openpgp() - challenge = gnuk.cmd_get_challenge() + challenge = gnuk.cmd_get_challenge().tostring() digestinfo = binascii.unhexlify(SHA256_OID_PREFIX) + challenge signed = rsa.compute_signature(rsa_key, digestinfo) signed_bytes = rsa.integer_to_bytes_256(signed) diff --git a/tool/usb_strings.py b/tool/usb_strings.py index eaeeb31..41defed 100755 --- a/tool/usb_strings.py +++ b/tool/usb_strings.py @@ -41,9 +41,9 @@ def gnuk_devices_by_vidpid(): field = ['', 'Vendor', 'Product', 'Serial', 'Revision', 'Config', 'Sys', 'Board'] def main(n): - for dev in gnuk_devices(): + for dev in gnuk_devices_by_vidpid(): handle = dev.open() - print("Device: " % dev.filename) + print("Device: %s" % dev.filename) try: for i in range(1,n): s = handle.getString(i, 512)