From 445a712f60c3c11cea20403b226c3b09b02ae408 Mon Sep 17 00:00:00 2001 From: bsdevlin Date: Thu, 11 Apr 2019 23:34:33 -0400 Subject: [PATCH] bug fix and updates --- apps/python/zcash_fpga.py | 26 +++++++++---------- bittware_xupvvh/src/rtl/uart_wrapper.sv | 3 --- .../src/rtl/secp256k1/secp256k1_point_dbl.sv | 9 ++++--- zcash_fpga/src/rtl/secp256k1/secp256k1_top.sv | 4 +-- 4 files changed, 20 insertions(+), 22 deletions(-) diff --git a/apps/python/zcash_fpga.py b/apps/python/zcash_fpga.py index 706f1e3..c73b34a 100644 --- a/apps/python/zcash_fpga.py +++ b/apps/python/zcash_fpga.py @@ -4,6 +4,7 @@ class zcash_fpga: import serial import codecs import struct + import struct def byt_to_ver(a): return 'v{}.{}.{}'.format(a[2], a[1], a[0]) @@ -12,14 +13,17 @@ class zcash_fpga: return a[::-1].decode("utf-8") def byt_to_hex(a): - return a.hex() + return '0x' + a.hex() + + def byt_to_int(a): + return int.from_bytes(a, byteorder='little') fpga_msg_type_dict = {'FPGA_IGNORE_RPL':int('80000002', 16), 'FPGA_STATUS_RPL':int('80000001', 16), 'RESET_FPGA_RPL':int('80000000', 16), 'VERIFY_SECP256K1_SIG_RPL':int('80000101', 16)} - fpga_msg_dict = {fpga_msg_type_dict['VERIFY_SECP256K1_SIG_RPL']:{'name':'VERIFY_SECP256K1_SIG_RPL', 'feilds':[(8, 'index', byt_to_hex), (1, 'bm', byt_to_hex), (2, 'cycle_cnt', byt_to_hex)]}, + fpga_msg_dict = {fpga_msg_type_dict['VERIFY_SECP256K1_SIG_RPL']:{'name':'VERIFY_SECP256K1_SIG_RPL', 'feilds':[(8, 'index', byt_to_int), (1, 'bm', byt_to_hex), (2, 'cycle_cnt', byt_to_int)]}, fpga_msg_type_dict['FPGA_IGNORE_RPL']:{'name':'FPGA_IGNORE_RPL', 'feilds':[(8, 'ignored_header', byt_to_hex)]}, fpga_msg_type_dict['FPGA_STATUS_RPL']:{'name':'FPGA_STATUS_RPL', 'feilds':[(4, 'version', byt_to_ver), (8, 'build_date', byt_to_str), (8, 'buid_host', byt_to_str), (8, 'cmd_cap', byt_to_hex)]}, fpga_msg_type_dict['RESET_FPGA_RPL']:{'name':'RESET_FPGA_RPL', 'feilds':[]}} @@ -27,8 +31,6 @@ class zcash_fpga: def __init__(self, COM='COM4'): self.s = self.serial.Serial(COM, 921600, timeout=1) - #Clear any pending messages - self.get_reply() #Test getting FPGA status self.get_status() print("Connected...") @@ -51,7 +53,6 @@ class zcash_fpga: msg_list = self.parse_reply(res) if msg_list and len(msg_list) > 0: for msg in msg_list: - print (msg) self.print_reply(msg) return msg_list else: @@ -60,15 +61,14 @@ class zcash_fpga: def secp256k1_verify_sig(self, index, hsh, r, s, Qx, Qy): cmd = '00000101000000B0' - cmd = format(index, 'x').ljust(16, '0') + cmd - cmd = format(s, 'x').ljust(64, '0') + cmd - cmd = format(r, 'x').ljust(64, '0') + cmd - cmd = format(hsh, 'x').ljust(64, '0') + cmd - cmd = format(Qx, 'x').ljust(64, '0') + cmd - cmd = format(Qy, 'x').ljust(64, '0') + cmd + cmd = format(index, 'x').rjust(16, '0') + cmd + cmd = format(s, 'x').rjust(64, '0') + cmd + cmd = format(r, 'x').rjust(64, '0') + cmd + cmd = format(hsh, 'x').rjust(64, '0') + cmd + cmd = format(Qx, 'x').rjust(64, '0') + cmd + cmd = format(Qy, 'x').rjust(64, '0') + cmd #Need to swap cmd byte order cmd = "".join(reversed([cmd[i:i+2] for i in range(0, len(cmd), 2)])) - self.s.write(self.codecs.decode(cmd, 'hex')) res = self.get_reply()[0] # Just look at the first reply if res is not None and (self.struct.unpack('